跟我一起学-Linux之mount file

今天和大家聊一聊mount这个命令,这个命令我以前一直以为只能用在device(设备)上。但是今天和同事交流的时候,他说到了可以直接用在文件上,这就让我很好奇了。于是乎我就去试了一下,果然可以,又学到了,果然是活到老学到老呀!说的自己年龄很大似的,哈哈!下面讲解一下mount file相关内容。

mount简介

Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。
什么是挂载?通俗的来讲,挂载就是把一个磁盘分区或者一个文件和一个目录绑定起来。
注意文件也是可以绑定挂载的。

mount介绍

语法:
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
参数说明:
-V:显示程序版本
-h:显示辅助讯息
-v:显示较讯息,通常和 -f 用来除错。
-a:将 /etc/fstab 中定义的所有档案系统挂上。
-F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
-f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
-n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
-s-r:等于 -o ro
-w:等于 -o rw
-L:将含有特定标签的硬盘分割挂上。
-U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
-t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
-o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
-o sync:在同步模式下执行。
-o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
-o auto、-o noauto:打开/关闭自动挂上模式。
-o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
-o dev、-o nodev-o exec、-o noexec允许执行档被执行。
-o suid、-o nosuid:
允许执行档在 root 权限下执行。
-o user、-o nouser:使用者可以执行 mount/umount 的动作。
-o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
-o ro:用唯读模式挂上。
-o rw:用可读写模式挂上。
-o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。

mount file

演示一下mount file过程,大家有兴趣可以学习尝试一下。
创建一个指定大小的空的文件,方法有很多,下面介绍两种:

dd:
[root@192 ~]# dd if=/dev/zero of=~/test bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,27.6518 秒,38.8 MB/秒
[root@192 ~]#
truncate:
[root@192 ~]# truncate -s 1073741824 test1
[root@192 ~]#

比较两种方式,truncate比dd快很多。
之后使用mkfs.xfs格式化test和test1,如下:

[root@192 ~]# mkfs.xfs test
meta-data=test                   isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 ~]# mkfs.xfs test1
meta-data=test1                  isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 ~]#

最后使用mount进行挂载,如下:

[root@192 ~]# mount test point
[root@192 ~]# mount test1 point1
[root@192 ~]#

挂载成功后,使用lsblk查看,如下:

[root@192 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  200M  0 part /boot
└─sda2            8:2    0 19.8G  0 part 
  ├─centos-root 253:0    0 15.8G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom  
loop0             7:0    0    1G  0 loop /root/point
loop1             7:1    0    1G  0 loop /root/point1
[root@192 ~]#

发现有两个挂载点loop0和loop1分别对应test和test1。
挂载之后就可以正常的使用了,和挂载device(设备)一样。

总结

通过如上的讲解,大家应该对mount有了重新的认识,果然是活到老学到老,大家都坚持学习吧!

posted @   坚持是通往胜利的大门  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示