Linux(Centos 7.6)命令详解:mount

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) 文件网络共享
  • --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的记录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆是浪个

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值