linux磁盘管理说明(8)文件系统的挂载(上)
文件系统的挂载点是目录,这个目录就是挂载的文件系统的入口,文件系统只有被挂载上了之后才能访问,而移除外部存储设备时,请记得一定要卸载该设备。文件系统的挂载与卸载最常用的命令就是mount/umount,接下来我们介绍这两个命令。
mount
标准格式:
mount -t 文件系统类型 设备文件名 目录 目录如果不是空目录,那么以前的内容在设备挂载期间不可访问
列出当前挂载的文件系统: 列出当前挂载的所有文件系统
指定列出文件系统的类型
修改文件系统的label
-l 参数在结果中显示label
/etc/fstab及/etc/mtab:
如果被挂载设备记录在/etc/fstab或/etc/mtab中,那么仅用设备文件名或者目录就可以挂载完成。 传统上将当前挂载的文件系统记录在/etc/mtab文件中,不过现在这个文件一般被链接到/proc/mounts之类文件
而/etc/fstab这个文件则关系着开机自动挂载,它的格式如下从左到右,内容被空格分开成六段,第一段,设备文件名或LABEL=
第四段,文件系统挂载参数,每个参数之间用逗号隔开,大致包含这些内容:
Async/sync 设置是否为同步方式运行,默认为async
auto/noauto 当下载mount -a 的命令时,此文件系统是否被主动挂载,默认为auto
rw/ro 以只读或者读写模式挂载
exec/noexec 此文件系统内是否能够执行二进制文件
user/users/nouser 任意用户挂载/users组中的用户挂载/仅root可以挂载
owner 允许设备所有者挂载
dev/nodev 是否解析文件系统上的块特殊设备
suid/nosuid 是否允许SUID的存在
Usrquota 启动文件系统支持磁盘配额模式
Grpquota 启动文件系统对群组磁盘配额模式的支持
noatime 不更新文件系统上 inode 访问记录
nodiratime 不更新文件系统上的目录 inode 访问记录
relatime 实时更新 inode access 记录,只有在记录中的访问时间早于当前访问才会被更新
flush - vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失
nofail 启动时设备不存在也不报错,一般用在外部设备上
defaults 包含rw, suid, dev, exec, auto, nouser, async
第五段,是否通过dump工具进行备份,0忽略,1备份,一般设为0即可。
第六段,是否通过fsck进行检查。1优先检查,2次优先检查,0忽略。
注意:我们可以使用mount -a来验证/etc/fstab是否正确,但是更推荐使用findmnt --verify。
Bind mounts:
将一个目录挂载到另一个目录(如此产生的目录间的对应关系存在于内存中,重启会失效,如果想长期生效,可以将其添加到开机自启脚本中) 两个目录初始状况
写入/etc/fstab文件的话可以这样写“目录1 目录2 none bind 0 0”
挂载后原目录下的文件和子目录被隐藏,显示内容与挂载的目录相同
在一个目录的操作会同步到挂载的目录内
取消挂载后被挂载的目录内容恢复原样
如果要挂载的旧目录的下级子目录上还挂载有文件系统,那么就可以使用mount --rbind/R 旧目录 新目录 ,这种方式挂载。
移动操作:
将一个目录移动到另一个目录,而文件的物理位置不变
mount --move/M 旧目录 新目录
这将导致旧目录中的内容完全转移到新目录中来访问,但是文件的真实物理位置保持不变
注意:旧目录必须是一个挂载点,且不能位于带有"shared"属性的挂载点之下 使用默认选项挂载时,子挂载点的propagation type会与父挂载点相同
上图中的private是挂载点的propagation type,它决定了当一个挂载点的下面创建和移除挂载点的时候,是否会传播到属于相同peer group(peer group就是一个或多个挂载点的集合,mount --bind命令就会使旧目录和新目录两个挂载点属于同一个peer group)的其他挂载点下去。 124即为peer group且两个目录相同
propagation type也有四种:
shared 挂载信息会在同一个peer group的不同挂载点之间共享传播
private 挂载信息根本就不共享,private的挂载点不会属于任何peer group
slave 信息的传播是单向的,在同一个peer group里面,master的挂载点下面发生变化的时候,slave的挂载点下面也跟着变化,但反之则不然
unbindable 这个和private相同,只是这种类型的挂载点不能作为bind mount的旧目录
显式挂载四种propagation type:
mount --make-shared mountpoint
mount --make-slave mountpoint
mount --make-private mountpoint
mount --make-unbindable mountpoint
显式递归挂载挂载点及一下的propagation type:
mount --make-rshared mountpoint
mount --make-rslave mountpoint
mount --make-rprivate mountpoint
mount --make-runbindable mountpoint
mount命令常用参数:
最终生效的参数由下列三部分组成:首先,从 fstab 中得到的参数;其次,命令行选项 -o 中设置的参数;最后,再加上 -r 或 -w 参数。
-a 挂载/etc/fstab文件中所有的文件系统,除了参数中包含noauto的
-B 即是–bind参数
-c 不对路径进行规范化, mount 默认会将所有来自命令行和 fstab 的路径进行规范化之后再写入 /etc/mtab 文件,这个选项可以和 -f 一起用于已经规范化了的绝对路径
-F (与 -a 连用)为每个设备都产生一个新进程来挂载,这样可以并行地挂载不同的设备或连接不同的NFS服务器。 这样挂载速度更快,同时NFS服务器延时也是并行的,但是是挂载顺序是不定的
-f 不实际执行挂载,通常可以用来与-v连用,查看挂载动作会做些什么事情。也可以用来向/etc/mtab中添加先前被-n抛弃的信息条目。才选项会检查/etc/mtab中已存在的条目,若重复则返回错误
-i 不调用 /sbin/mount.TYPE 辅助程序,即使它真实存在
-L 此参数后接Label,挂载签名为此Label的分区
-l 在输出中添加文件系统的Label
-M 即是–move
-n 不向/etc/mtab中添加挂载信息,在/etc目录位于只读的文件系统时很有用
-O 与-a联用以指定-a 处理的文件系统的集合,例如mount -a -O no_netdev这条命令会挂载/etc/fstab文件中所有文件系统,除了挂载参数中含有netdev的。它还可以和-t连用,两个参数效果是累积的,例如mount -a -t ext2 -O _netdev 这条命令表示挂载所有ext2类型且含有_netdev参数的文件系统
-o 用以指定文件系统挂载参数,即/etc/fstab第四段的内容,各个参数间用逗号隔开
-R 即是–rbind
-r 以只读方式挂载,相当于“-o ro”
-s 以宽容模式挂载,忽略文件系统不支持的挂载参数, 目前只有 mount.nfs 挂载帮助程序支持
–source 设备文件名 显示指定这个是设备而不是挂载点
–target 目录 显示指定这个是挂载点而不是设备
-T 路径 指定另外的fstab文件(默认在/etc/fstab),如果路径是一个目录,那么此目录中的文件将由 strverscmp(3) 工具进行排序,并且以"."开头或者不以 .fstab 结尾的文件都将被忽略。此参数可以多次使用,以指定多个 fstab 文件。主要是用于 initramfs 或 chroot 环境中
-t 文件系统类型 指定挂载的文件系统类型,可以指定多个,用逗号隔开 查看当前支持的文件系统
在指定文件系统类型时,前缀"no"表示不使用这些文件系统
这种做法对于选项 -a 十分有用,但是写在/etc/fstab文件中时无效 如此指定的是挂载所有文件系统除了ext3和msdos
大多数文件系统并不需要特别指定文件系统类型,少数文件系统(nfs, nfs4, cifs, smbfs, ncpfs)则需要,以启动它们单独的挂载程序
-U UUID 用UUID指定要挂载的分区
-w 以可读可写的方式挂载,相当于“-o rw”,默认参数