1.命令作用
挂载一个文件系统(mount a filesystem);
在Unix/Linux系统中,所有可访问的文件都排列在一个庞大的树状结构中,即文件层次结构,其根节点位于根目录("/")下;这些文件可以分布在多个设备上;
mount 命令用于将某个设备上的文件系统连接到这个庞大的文件树中;相反umount命令则会将其再次分离出来。
2.命令语法
2.1.语法
Usage: mount [-lhV]
mount -a [options]
mount [options] [--source] <source> | [--target] <directory>
mount [options] <source> <directory>
mount <operation> <mountpoint> [<target>]
2.2.语法解释
- mount [-lhv],主要是用于查看mount相关信息的
- mount -a [options],主要是读取/etc/fstab文件中的信息进行磁盘的挂载
- 挂载的磁盘设备或分区、挂载点(挂载的目录)、挂载的选项等都在/etc/fstab文件中注明
- 挂载信息写入/etc/fstab文件,是让系统开机时自动挂载,而不需要开机后手动挂载
- -a参数的一个重要场景是验证/etc/fstab文件内内容是否正确
- mount [options] [--source] <source> | [--target] <directory>,注意中间的竖线,是或关系
- 该情况mount会自己去找一个设备或者挂载点,如果未找到,则读取/etc/fstab内容
- 为了避免歧义,可用--source指定磁盘设备或者磁盘分区,可用--target指定挂载点(目录)
- mount [options] <source> <directory>,mount命令的标准格式
- mount <operation> <mountpoint> [<target>],标记挂载点为共享、私有、从属或不可绑定
- operation是特殊的参数,定义支持的功能,用于标记挂载点、共享目录、移动挂载点等
- mountpoint targe,移动挂载点功能的旧 新目录(挂载点)(该功能测试报错)
3.参数详解
OPTION:
- -a, --all,挂载文件/etc/fstab中描述的所有文件系统
- -c, --no-canonicalize,不要对路径进行规范化处理;即不对设备路径或挂载点进行解析(如不解析符号链接或相对路径)(测试无效果,如: mount -c /dev/disk/by-uuid/b984d239-16ba-476f-8697-1366a65cb285 /data1////)
- -f, --fake,预演;跳过挂载系统调用(猜测是验证是否可正常挂载,但不实际挂载,实测效果是真不执行,语法错误也不报错,无效果)
- -F, --fork,为每个需要挂载的磁盘分区单独fork独立子进程(与 -a 一起使用,默认是串行挂载,指定-F 后是并行挂载;若某个设备挂载失败(如网络延迟),后续操作会被阻塞;-F 可避免此问题)
- -T, --fstab <path>,指定一个临时替代/etc/fstab文件的挂载文件
- -i, --internal-only,不要调用外部的mount.<type>辅助程序,type指ext4等
- -l, --show-labels,列出所有带有LABEL(标签)的挂载点
- -n, --no-mtab,不要写入/etc/mtab(测试挂载信息会写入该文件)
- -o, --options <list>,指定挂载选项进行挂载,多个以逗号分隔;与-a参数使用时没有效果,-a参数会用/etc/fstab内的挂载选项覆盖-o指定的挂载选项
- mount -v -o ro,noatime,_netdev /dev/sdb1 /data1
- mount -a -v -o ro,noatime,_netdev # 无效果,会被/etc/fstab内的挂载选项覆盖
- mount -l | grep sdb # 查看挂载选项
- 可指定的挂载选项:
- async/sync:文件系统的输入输出采用异步/同步,默认异步
- atime/noatime,更新访问时间/不更新访问时间;默认更新
- exec/noexec,执行/不执行,设定是否允许文件系统中执行可执行文件,默认执行
- remount,重新挂载已经挂载的文件系统,一般用于修改特殊权限
- rw/ro,以读写/只读模式挂载文件系统,默认rw
- user/nouser,允许/不允许普通用户挂载文件系统,默认不允许
- dev/nodev,读取/不读取文件系统上的字符或块设备
- nobarrier,不开启barrier
- loop,允许将磁盘镜像文件(.img、.iso)当作物理磁盘分区挂载到目录
- inode64:启用64位inode编号,增加inode节点数量的限制
- defaults:默认选项,选项包括rw、suid、dev、exec、anto、nouser、async
- -O, --test-opts <list>,仅挂载/etc/fstab中挂载选项包含-O指定的挂载选项的记录(只能和-a一起使用);当与-t一起使用时,是需要既满足-t 指定的挂载类型,也满足-O 指定的挂载选项的记录才会挂载;多个选项用逗号分隔,多个选项都需要满足才能挂载;
- /dev/sdb1 /data ext4 defaults,noatime,_netdev 0 0
- mount -a -v -O atime 或 mount -a -v -O _netdev
- mount -a -t ext2 -O _netdev
- -r, --read-only,将文件系统设置为只读模式(与-o ro选项相同)
- -t, --types <list>,仅挂载指定的文件系统类型,多个类型使用逗号分隔
- 支持的文件系统类型包括adfs, affs, autofs, cifs, coda, cramfs, debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs, ubifs, udf, ufs, umsdos, usbfs, vfat, xfs, xiafs
- iso9660:光盘或光盘镜像
- msdos:DOS fat16文件系统
- vfat:Windows 9x fat32文件系统 Virtual File Allocation Table
- ntfs:Windows NT ntfs文件系统,ntfs可存储大于4G的文件 New Technology File System
- smbfs:Mount Windows文件网络共享
- nfs:UNIX(LINUX) 文件网络共享
- 支持的文件系统类型包括adfs, affs, autofs, cifs, coda, cramfs, debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs, ubifs, udf, ufs, umsdos, usbfs, vfat, xfs, xiafs
- --source <src>,显式指定挂载源;即磁盘或磁盘分区路径(路径<path>, 标签<label>, UUID<uuid>)
- --target <target>,显式指定挂载点;即指定挂载的目录
- -v, --verbose,显示执行挂载操作的具体信息
- -w, --rw, --read-write,将文件系统挂载为读写(默认)
- -h, --help,显示此帮助文本并退出
- -V, --version,输出版本信息并退出
Source:
- -L, --label <label>,LABEL=<label>的同义词
- ext4标签设置:e2label /dev/sdb2 sdb2label
- ext4标签设置:tune2fs -L sdb2label /dev/sdb2
- ext4标签设置:mkfs.ext4 -L sdb2label -f /dev/sdb2 (会格式化,可新分区使用)
- xfs标签设置:xfs_admin -L sdb1label /dev/sdb1
- ext4/xfs标签查看:lsblk -f 或 blkid /dev/sdb1
- xfs标签查看:xfs_admin -l /dev/sdb1
- -U, --uuid <uuid>,UUID=<uuid>的同义词
- LABEL=<label>,通过文件系统标签(label)来指定设备(查看LABEL: lsblk -f)
- UUID=<uuid>,通过文件系统UUID来指定设备(查看UUID: lsblk -f)
- PARTLABEL=<label>,通过分区标签(label)来指定设备
- PARTUUID=<uuid>,通过分区的UUID来指定设备
- <device>,通过路径指定设备
- <directory>,绑定挂载的挂载点(见--bind/rbind)
- <file>,将常规文件模拟为块设备进行挂载;如挂载.img、.iso后缀的文件时,同时使用-o loop
Operations:
- -B, --bind,将一个目录挂载到另一个目录(与-o bind相同);(测试与-R效果一样都包含子目录)
- -M, --move,将一个已经挂载的目录移动到其他的目录(对共享挂载的目录进行移动无效);可使用findmnt -o TARGET,PROPAGATION或者findmnt -o PROPAGATION /data1查看哪些目录是共享挂载的;结果为shared则是共享,移动共享会报错,需要修改为私有挂载(mount --make-private /data1</data4>),然后再移动mount -M olddir newdir(mount -M /data1 /data4),其中olddir必须是一个挂载点(目录),测试报错,可以尝试其他系统是否一样报错。
- -R, --rbind,将一个目录及其子目录挂载到另一个目录
- --make-shared,将挂载点标记为共享类型;执行会将挂载点改为shared
- --make-slave,将挂载点标记为从属模式;执行会将挂载点从shared改为private
- --make-private,将挂载点标记为私有类型;执行会将挂载点从shared改为private
- --make-unbindable,将挂载点标记为设为不可绑定,禁止通过--bind挂载到其他位置;执行会将挂载点从shared改为private,unbindable
- --make-rshared,递归地将挂载点标记为共享类型
- --make-rslave,递归地将挂载点标记为从属模式
- --make-rprivate,递归地将挂载点标记为私有类型
- --make-runbindable,递归地将挂载点标记为设为不可绑定,禁止通过--bind挂载到其他位置
4.常用用例
4.1.查看挂载信息
4.1.1.查看所有挂载信息
以下是系统安装后默认的挂载信息,mount -l 执行是读取的/etc/mtab文件;与/proc/mounts文件内容也极其相似,一般情况下两个文件是一样的。
[root@node4 ~]# mount -l
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
... ...
/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)
... ...
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
... ...
[root@node4 ~]#
输出信息详解(以最后一行为例),整行是一个成功挂载的xfs文件系统:
- /dev/sda1: 磁盘设备或者磁盘设备的分区(系统安装会有其他的一些信息,参考前4行)
- /boot: 挂载点;即磁盘设备或其分区挂载的目录(系统安装会有其他的目录挂载,参考前4行)
- /dev/sda1 on /boot: 指设备/dev/sda1被挂载到目录/boot上
- type xfs: 挂载类型,常用类型有ext4、xfs(系统内部还有其他的类型,如sysfs、tmpfs等)
- (rw,relatime,...): 磁盘或分区挂载到挂载点的挂载选项(属性),如rw、ro、inode64等
4.1.2.查看指定类型的挂载
# 以下是查看xfs类型的挂载信息
[root@node4 ~]# mount -l -t xfs
/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
[root@node4 ~]#
4.2.执行挂载
注意:执行挂载后可使用umount /data1进行卸载分区(/data1是自定义的挂载点),这样就可用重复进行挂载、卸载操作,方便学习使用;umount命令参考Linux(Centos 7.6)命令详解:umount
4.2.1.挂载前准备
- 服务器上插入新磁盘,或者有还未分区未挂载的磁盘
- 然后对磁盘设备进行分区(详解参考fdisk命令部分),如果直接挂载整个磁盘也可以跳过分区
- 格式化磁盘或者磁盘分区,目前常用的格式化类型是ext4和xfs(详解参考mkfs命令簇部分)
- 然后按照下面的方式进行挂载
4.2.2.标准挂载
Usage: mount [options] <source> <directory>
4.2.2.1.默认挂载(无参数挂载)
注:
- xfs类型的挂载,默认选项有 rw,relatime,attr2,inode64,noquota
- ext4类型的挂载,默认选项有 rw,relatime,data=ordered
[root@node4 ~]# mount /dev/sdb1 /data1
[root@node4 ~]# mount -l | grep sdb1
/dev/sdb1 on /data1 type xfs (rw,relatime,attr2,inode64,noquota)
[root@node4 ~]#
[root@node4 ~]# mount /dev/sdb2 /data2
[root@node4 ~]#
[root@node4 ~]# mount -l | grep sdb2
/dev/sdb2 on /data2 type ext4 (rw,relatime,data=ordered) [data2mount]
[root@node4 ~]#
4.2.2.2.常用挂载参数说明
# 1.指定参数挂载(注:以下参数可以综合使用;即可以指定多个参数执行)
mount -t xfs /dev/sdb1 /data1 # 指定系统类型挂载(注: 需要/dev/sdb1格式化也是xfs类型,否则挂载报错)
mount -o noatime,quota /dev/sdb1 /data1 # 指定选项挂载,多个以逗号分隔
mount -r /dev/sdb1 /data1 # 只读挂载
mount -w /dev/sdb1 /data1 # 读写挂载(默认)
mount -v /dev/sdb1 /data1 # 输出执行挂载操作的具体信息
4.2.2.3.磁盘设备或分区格式
# 1.设备或分区名称(全路径名称)
mount /dev/sdb1 /data1
# 2.设备或分区UUID
mount UUID=cb813909-c56d-4593-a130-8cf695add42f /data1
# 3.设备或分区LABEL标签
mount LABEL=sdb1label /data1
4.2.2.4.常用挂载场景
# 1.iso镜像挂载,配置yum时可用,不指定-o -t参数,mount会自动识别iso
mount -o loop -t iso9660 *.iso /mnt/iso
mount *.iso /mnt/iso
# 2.CD挂载(需要观察插入CD后,dev目录下读取到的设备名称)
mount /dev/cdrom /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
# 3.U盘挂载/移动硬盘
mount [-t vfat] /dev/sdc1 /mnt/usb
# 4.磁盘挂载
mount /dev/sdb1 /data
mount -o rw,nodev,noatime,nobarrier,inode64 /dev/sdb1 /data
mount -o rw,nodev,noatime,inode64 -t xfs /dev/sdb1 /data
# 5.磁盘共享目录(将目录/home/user1挂载到/data1,两个目录内容一样,任何一方更新都会查询都一样)
mount -B /home/user1 /data1
# 6.远程共享磁盘挂载
# 6.1.安装共享服务器和共享客户端,创建共享目录,并设置权限
yum install -y nfs-utils rpcbind
mkdir /data/share
chmod 777 /data/share
# 6.2.共享服务器配置修改,添加如下内容,格式: 共享目录 地址(rw/ro<读写设置>,sync<同步写>,权限)
echo "/data/share 192.168.118.0/24(rw,sync,no_subtree_check,no_root_squash)" > /etc/exports
# 6.3.启动服务,需要先关闭防火墙
systemctl start rpcbind
systemctl start nfs
如后续修改配置文件可使用以下命令管理
exportfs -rv # 重新使得配置生效,无需重启服务,且输出挂载日志
exportfs -v # 查看挂载日志(无警告和报错即可)
# 6.4.共享客户端可以直接mount到本地
mount -t nfs -o nolock 192.168.118.200:/data/share /data_share
# 7.虚拟内存盘,挂载1G内存到data2目录(内存当作磁盘挂载到某个目录使用)
mount -t tmpfs -o size=1024m tmpfs /data2
注:
(1).以上挂载后/data2中存在的文件,不会立即占用内存,目录用多少占多少
(2).虚拟内存盘挂载时,指定的大小可以操过内存的大小,不建议设置的大小超过内存空用空间大小。
(3).默认情况下,系统会挂载一个/dev/shm的目录,大小是内存的一半,也可以直接使用该目录。
(4).手动挂载的虚拟内存盘,和系统默认挂载的/dev/shm,服务器重启会导致挂载目录下的文件消失。
(5).开机自动挂载虚拟内存盘:tmpfs /data1 tmpfs size=1024M,,noatime,mode=1777 0 0
4.2.2.读取/etc/fstab文件挂载
/etc/fstab文件: 系统启动时会获取该文件内容,用于自动挂载相关设备,而不需要开机后手动挂载
4.2.2.1./etc/fstab文件格式
UUID=866b7b3c-2489-4bce-b78b-9d1c7950a7df / xfs defaults 0 0
UUID=99972a71-4228-42bd-b978-59834b4f6c33 /boot xfs defaults 0 0
UUID=2523c8aa-b835-402f-ad1c-f685f20a7327 swap swap defaults 0 0
/dev/sdb1 /data1 xfs defaults,_netdev 0 0
/dev/sdb2 /data2 ext4 defaults,noatime 0 0
格式: <设备标识> <挂载点> <文件系统类型> <挂载选项> <dump备份> <fsck顺序>
- 设备标识: 设备路径(/dev/sda1)、唯一标识(UUID=xxx)、标签(LABEL=DISK)
- UUID和LABEL可使用 lsblk -f 查看
- UUID是系统自己生成的唯一标识
- LABEL需要手动设置,设置方法见参数详解部分-L参数说明
- 挂载点: 文件系统的挂载目录(需提前创建)
- 文件系统类型: ext4/xfs(本地)、nfs/cifs(网络)、swap(虚拟内存)等
- 挂载选项: 控制行为的参数,如读写或者只读(多个选项以逗号分隔)
- dump备份: 工具备份(0=禁用,1=启用)
- fsck顺序: 启动时fsck检查顺序(0=不检查,1=根目录优先,2=其他)
4.2.2.2.直接读取文件挂载
mount -a # 执行后使用 df -h 或 mount -l 查看是否挂载成功
4.2.2.3.读取文件挂载限制
mount -v -a -O _netdev # 只挂载/etc/fstab中挂载选项,包含-O指定选项的记录
mount -v -a -t ext4 # 只挂载/etc/fstab中文件系统是ext4的记录
mount -v -a -t xfs -O _netdev # 挂载/etc/fstab中文件系统是ext4,选项包括_netdev的记录
583

被折叠的 条评论
为什么被折叠?



