4.文件系统
4.6分区、格式化与挂载
4.6.6挂载
什么是挂载?Linux通过倒树形的根文件系统来管理所有的文件,内核只能识别并管理根目录/所在的文件系统及其下的目录和文件。因此其他文件系统想要使用,都需要为其指定在现存目录下的访问入口。
将额外的文件系统,与现存的Linux能够识别的目录,建立起映射关系,实现将现存目录作为访问额外文件系统的入口的功能,这个过程称为挂载;用于访问额外文件系统的,现存文件系统中的指定目录,称为挂载点。
挂载的逆过程,解除额外的文件系统与现存Linux能够识别的目录之间的映射关系,称为卸载。
纠正一个误区,并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。
1.查看已挂载设备
[root@localhost ~]# mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
/dev/mapper/rhel-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
#结果省略了大部分显示
2.查看系统支持的文件系统
[root@localhost ~]# ls /lib/modules/$(uname -r)/kernel/fs
binfmt_misc.ko cramfs fat isofs nfs pstore
btrfs dlm fscache jbd2 nfs_common squashfs
cachefiles exofs fuse lockd nfsd udf
cifs ext4 gfs2 mbcache.ko nls xfs
#Linux默认是不识别NTFS分区的
3.mount - mount a filesystem
[root@study ~]# mount -a
[root@study ~]# mount [-l]
[root@study ~]# mount [-t 档案系统] LABEL='' 挂载点
[root@study ~]# mount [-t 档案系统] UUID='' 挂载点#
[root@study ~]# mount [-t 档案系统] 装置档名 挂载点
选项与参数:
-a :依照设定档 /etc/fstab 的资料将所有未挂载的磁碟都挂载上来
-l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称!
-t :可以加上档案系统种类来指定欲挂载的类型。常见的 Linux 支援类型有:xfs, ext3, ext4, reiserfs, vfat, iso9660(光盘格式), nfs, cifs, smbfs (后三种为网络档案系统类型)
-n :在预设的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序的运作。但在某些情况下(例如单人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选项。
-o :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:参数内容意义
async/sync
异步/同步设定磁碟是否以异步方式运作!预设为 async(效能较佳)
auto/noauto
自动/非自动当下达 mount -a 时,此档案系统是否会被主动测试挂载。预设为 auto。
rw/ro
可读写/唯读让该分割槽以可读写或者是唯读的型态挂载上来。
exec/noexec
可执行/不可执行限制在此档案系统内是否可以进行『执行』的工作?如果是纯粹用来储存资料的目录, 那么可以设定为 noexec 会比较安全。不过,这个参数也不能随便使用,因为你不知道该目录下是否预设会有执行档。
user/nouser
允许/不允许使用者挂载是否允许使用者使用 mount 指令来挂载。一般而言,我们当然不希望一般身份的 user 能使用 mount ,因此这里应该要设定为 nouser 囉!
suid/nosuid
具有/不具有 suid 权限该档案系统是否允许 SUID 的存在?如果不是执行档放置目录,也可以设定为 nosuid 来取消这个功能!
defaults同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上,预设情况使用 defaults 设定即可!
4.挂载 xfs/ext4/vfat 等档案系统
[root@localhost ~]# mkdir /mnt/sda3 #创建挂载点
[root@localhost ~]# mount /dev/sda3 /mnt/sda3/ #挂载
[root@localhost sda3]# df -h #查看挂载结果
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 9.8G 4.1G 5.8G 42% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/mapper/rhel-home 2.0G 33M 2.0G 2% /home
/dev/sda1 497M 119M 379M 24% /boot
/dev/sda3 197M 11M 187M 6% /mnt/sda3
#使用设备名挂载
[root@localhost ~]# blkid #查看设备的UUID
/dev/sda1: UUID="decc164a-f28b-4b7f-ae37-9fc38a347d94" TYPE="xfs"
/dev/sda2: UUID="Ijm3mK-onGH-ht6u-tGqw-qYYS-QrmH-dxbqkr" TYPE="LVM2_member"
/dev/mapper/rhel-root: UUID="f02db577-90a3-4ae2-a434-b43c4ab34d7e" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="145d4801-311d-4efe-b188-7620c7a9ada9" TYPE="swap"
/dev/mapper/rhel-home: UUID="6ef1eb27-38b9-46bd-b6d4-abc3557b8f8c" TYPE="xfs"
/dev/sda3: UUID="3bb235a9-a7e5-4a9a-828c-e60428cc97ca" TYPE="xfs"
[root@localhost ~]# mount UUID="3bb235a9-a7e5-4a9a-828c-e60428cc97ca" /mnt/sda3 #通过UUID挂载
[root@localhost sda3]# df -h #查看挂载结果
#使用UUID挂载
5.挂载光盘
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
#[root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom
#如果提示mount: no medium found on /dev/sr0,请看视频。
6.挂载优盘
[root@localhost ~]# mkdir /mnt/usb
[root@localhost ~]# mount /dev/sda4 /mnt/usb
#如果提示mount: special device /dev/sda4 does not exist,请看视频
#如果不知道U盘的名称,可以使用如下命令查找:
#[root@localhost ~]# fdisk -l
7.重新挂载根目录
[root@localhost ~]# mount -o remount,rw /
#以读写方式重新挂载根目录
8.挂载一个目录
[root@localhost ~]# mount --bind /etc/ /mnt/etc/
#将etc目录挂载到/mnt/etc目录
9.卸载
[root@study ~]# umount [-fn] 装置档名或挂载点
选项与参数:
-f :强制卸载!可用在类似网络档案系统 (NFS) 无法读取到的情况下;
-l :立刻卸载档案系统,比 -f 还强!
-n :不更新 /etc/mtab 情况下卸载。
[root@localhost ~]# umount /dev/sr0
#按设备名卸载
[root@localhost ~]# umount UUID="2014-05-07-03-58-46-00"
#按UUID卸载
[root@localhost ~]# umount /mnt/usb/
#按挂载点卸载
[root@localhost cdrom]# umount /dev/sr0
umount: /mnt/cdrom: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
#在挂载点内卸载会提示目标忙
10.开机挂载
[root@localhost ~]# cat /etc/fstab
# /etc/fstab
# Created by anaconda on Fri Feb 28 14:53:55 2020
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=decc164a-f28b-4b7f-ae37-9fc38a347d94 /boot xfs defaults 1 2
/dev/mapper/rhel-home /home xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
修改配置文件/etc/fstab,该文件中每一行定义一个要挂载的文件系统及相关属性,每一行的内容分为6个字段:
(1) 要挂载的设备,可以是以下内容:
n设备文件的名称,如/dev/sda1
n设备的LABEL
n设备的UUID,CentOS 7中较多使用此种方式
n伪文件系统:如sysfs, proc, tmpfs等
(2) 挂载点路径
如果是swap类型的设备,挂载点就是swap;
(3) 文件系统类型,如ext4,xfs,btrfs,vfat等等;
(4) 挂载选项,也就是mount -o命令的那些选项:
defaults:使用默认挂载选项;
(5) 转储频率,已经很少使用:
n0:从不备份;
n1:每天备份;
n2:每隔一天备份;
(6) 自检次序:
n0:不自检;
n1:首先自检,通常只能是根文件系统可用1;
n2:次级自检;
11.一键挂载
[root@localhost ~]# mount -a
mount -a命令将自动挂载/etc/fstab文件中配置的设备,可以认为系统启动时会执行一次该命令以挂载已配置的设备。
但自动挂载有个条件——该设备的挂载选项中没有noauto。换句话说,挂载选项中有noauto的设备在执行mount -a时不会被挂载。
12.注意事项
u根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。
u其它 mount point 必须为已建立的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则 (FHS)
u所有 mount point 在同一时间之内﹐只能挂载一次。
u所有 partition 在同一时间之内﹐只能挂载一次。
u如若进行卸载﹐您必须先将工作目录移到 mount point(及其子目录) 之外。