侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Linux基础(33)之文件系统的挂载

zze
zze
2019-10-22 / 0 评论 / 0 点赞 / 610 阅读 / 8157 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

在上一篇【文件系统管理】中主要描述了文件系统的格式化、以及查看或修改文件系统信息相关的工具,而一个文件系统要使用起来,还需要进行一步挂载操作。

  • 挂载:将额外的文件系统与根文件系统中某现存的目录建立起关联关系,进而使得此目录能够作为额外文件系统的访问入口的行为叫做挂载;
  • 卸载:解除文件系统与目录的关联关系的过程;
  • 挂载点:Mount Point,关联的目标目录;

所以挂载实际上就是把设备关联至挂载点,使用的命令为 mount
而卸载时可通过设备,也可以直接使用挂载点指定卸载,使用的命令为 umount
要注意的是,如果挂载点目录原本就存在文件,那么对该挂载点执行挂载操作后,该目录下原有的文件将会被暂时隐藏,直到卸载该挂载点上的设备后文件才会再次显示出来,所以通常使用的挂载点是一个空目录。

挂载

挂载操作使用 mount 命令,如果 mount 命令不跟选项和参数,则表示显示当前系统已挂载的所有设备。
mount 命令常用的使用格式如下:

mount [-fnrsvw] [-t vfstype] [-o options] device dir
    device:要挂载的设备,指定方式如下:
        a、可以指定设备文件,如 /dev/sda5;
        b、也可使用 -L 选项指定卷标,如 -L 'MyData';
        c、还可使用 -U 选项指定设备的 UUID,如 -U fd5212ac-6acd-4f92-aebd-dd337491bec7,设备的 UUID 可通过 blkid 命令查看;
        d、指定伪文件系统名称,如 proc、sysfs、devtmpfs、configfs;
    dir:挂载点,即挂载目录;
        挂载点需事先存在,建议使用空目录。

常用选项:

  • -t vsftypes:指定要挂载设备上的文件系统类型,可省略,mount 命令会自动调用 blkid 命令来查看要挂在设备的文件系统类型;
  • -r:readonly,表示只读挂载(挂载后不可往设备中写数据);
  • -w:read and write,表示读写挂载;
  • -a:自动挂载所有支持自动挂载的设备(定义在了 /etc/fstab 文件中,且挂载选项中有“自动挂载”功能的设备就支持挂载,设备的挂载选项可通过 tune2fs 命令来查看和设定);
  • -n:不更新 /etc/mtab 文件(在当前系统中已挂载的所有文件系统可通过 mount 命令查看,而该命令输出的结果实际上和 /etc/mtab 中的内容相同,因为不带参数的 mount 命令就是读的该文件内容,默认情况下当前系统挂载的设备发生改变,那么 /etc/mtab 文件也会随之更新,该文件的作用就是用来监听当前系统上所有文件系统的挂载与卸载。说到这里,还有一个与之对应的文件 /proc/mounts,该文件的作用和 /dec/mtab 相同,只是不管是否指定 -n 选项,/proc/mounts 中一定会有已挂载设备的记录);
  • -L:以卷标指定要挂载的设备;
  • -U:以 UUID 指定要挂载的设备;
  • -B:绑定目录到另一个目录上;

例:如果要将设备 /dev/sda5 挂载到 /mydata,可使用如下几种方式:

  1. 通过指定设备挂载到挂载点,如:mount /dev/sda5 /mydata/
  2. 通过指定设备的卷标挂载到挂载点,如:mount -L 'MyData' /mydata
  3. 通过指定设备的 UUID 挂载到挂载点,如:mount -U 'd21f6294-ba6c-4855-9a74-1bcc66b9b508' /mydata

挂载操作完成后可以通过 mount 命令查看到,如下:

[root@localhost /]# mount | tail -1
/dev/sda5 on /mydata type ext4 (rw,relatime,seclabel,data=ordered)

上述挂载的设备 /dev/sda5 的文件系统类型是 ext4,任何一个刚被格式化完成的 ext 系列的文件系统根目录查看结果都如下:

[root@localhost /]# ls /mydata/
lost+found

还有一个 -o optsions 选项要单独说一下,该选项是用来设定挂在文件系统的选项(文件系统自身的相关属性),options 常用取值如下:

  • async:异步模式(CPU 对内存的读写操作都是要先通过内存的,以异步模式修改一个文件时,会先将原文件从辅存加载到内存,然后在内存进行修改,而修改完成后并不会立即写回辅存,而是由内核决定写的时机,好处是减少了 IO 的次数,性能较佳,坏处是数据写回不即时,可能出现数据丢失的情况);
  • sync:同步模式(以同步模式修改一个文件时,会先将原文件从辅存加载到内存,然后在内存进行修改,修改完成后会立即写回辅存,好处是数据安全性搞,而由于辅存和内存 IO 速度巨大的差距,会导致性能极差);
  • atimenoatimeatime 表示每一次访问文件都会更新对应文件的 atime 时间戳,而 noatime 则与之相反。通常情况下使用的是 noatime 模式,因为对 atime 的操作实际上也是对硬盘的 IO 操作,如果使用 atime 模式,每次更新的话会影响性能,并且大多数情况下不需要关注 atime 时间戳;
  • diratimenodiratimediratimenodiratime 都是针对目录的 atime 时间戳,diratimeatime 的子集,而 nodiratimenoatime 的子集,例:如果仅需要更新文件的 atime 时间戳,那么可以同时指定 atimenodiratime 两个参数;
  • autonoauto:是否支持自动挂载,默认为 auto
  • execnoexec:是否支持将新挂载设备的文件系统上的应用程序运行为进程,exec 表示支持,noexec 表示不支持;
  • devnodev:是否支持在此文件系统上使用设备文件,dev 表示支持,nodev 表示不支持;
  • suidnosuid:该文件系统是否支持使用 SUID 权限的文件,suid 表示支持,nosuid 表示不支持;
  • remount:重新挂载;
  • ro:只读挂载;
  • rw:读写挂载;
  • user/nouser:是否允许普通用户挂载此设备,默认情况下只有管理员有权限挂载设备;
  • acl:是否启用此文件系统的 acl 功能(访问控制列表,CentOS 6 默认未启用,CentOS 7 默认启用);
  • defaults:默认选项,包含 rwsuiddevexecautonouserasync

-o 后的选项可有多个,以 , 分隔。

卸载

卸载操作相对简单,使用格式如下:

umount device|mount_point
    device:要卸载的设备;
    mount_point:要卸载设备的挂载点;

直接使用 umount 设备umount 挂载点 即可卸载对应设备。
要注意的是,如果已挂载的正在被访问,设备就无法被卸载。
如果一定要卸载,可以先使用 fuser -v mount_point 来查看正在使用指定挂载点下的文件系统的用户,然后使用 fuser -km mount_point 来踢出正在使用该挂载点的用户进程。

交换分区的激活

交换分区并不需要挂载到挂载点,而是直接启用即可。
启用交换分区可使用 swapon 命令,使用格式如下:

swapon [OPTION] ... [DEVICCE]

常用选项:

  • -a:激活所有交换分区,此时不用指定 DEVICE
  • -p PRIORITY:指定优先级,PRIORITY 为一个数字,优先级越高的分区越优先使用;
  • -s:显示已激活的交换分区;
    禁用交换分区则可使用 swapoff DEVICE 来禁用指定交换分区。

文件系统的挂载配置

所有使用 mount 命令挂载的文件系统在系统重启后是不会被自动挂载的,如果希望能自动挂载指定的文件系统,则需要进行配置。
文件系统的挂载配置文件为 /etc/fstab,系统初始化过程的脚本会读取它并尝试使用 mount 命令来分析它的每一行,该文件中每行定义一个要挂载的文件系统,由 mount 命令在开机时被某脚本激活以后执行额外文件系统的挂载。
查看 /etc/fstab 文件:

image.png

可以看到,该配置每行由 6 个字段组成,每个字段描述如下:

  • 第 1 个字段为要挂载的设备或伪文件系统,可以直接指定设备文件如 /dev/sda5,也可通过卷标指定,如 LABEL='MyData',还可指定文件系统对应的 UUID,如 UUID='fd5212ac-6acd-4f92-aebd-dd337491bec7',还可直接指定伪文件系统名称,如 procsysfs
  • 第 2 个字段为挂载点;
  • 第 3 个字段为文件系统类型;
  • 第 4 个字段为挂载选项,就是挂载命令中可通过 -o 选项指定的属性,默认为 defaults
  • 第 5 个字段为转储频率,也叫备份频率,0 为不做备份,1 为每天转储,2 为每隔一天转储;
  • 第 6 个字段为自检次序,0 为不自检,1-9 从小到大为自检的次序,一般只有 rootfs 才用 1

补充

free-查看内存空间使用状态

free 命令可用来查看内存空间的使用状态,例:

image.png

第一行 Mem 为物理内存的状态,第二行 swap 为 swap 分区的状态。

常用选项:

  • -m:以 MB 为单位显示大小;
  • -g:以 GB 为单位显示大小;

df-查看文件系统空间占用信息

df 命令可以查看所有已挂载的文件系统空间占用信息,例:

image.png

常用选项:

  • -h :以人类易读的方式展示;
  • -i :则可查看各文件系统的 inode 信息;
  • -P:以 Posix 兼容的格式输出;

du-查看某目录空间占用信息

我们使用 ls -ldh DIR 的方式可以查看目录信息,但它只是查看指定 DIR 自身的占用信息,而不包括该目录中的文件,如下:

[root@localhost ~]# ls -ldh /etc/
drwxr-xr-x. 75 root root 8.0K 9月  27 13:48 /etc/

如果要查看目录及该目录的子目录及文件的占用情况,则可使用 du 命令,使用格式如下:

du [OPTION] [DIR]

默认不指定选项时为查看当前目录下所有文件及目录大小它们的大小总和。
常用选项:

  • -h:以人类易读的方式展示;
  • -s:仅展示目录下资源总大小;

光盘设备的挂载

在 CentOS 中,光盘的设备文件也在 /dev 目录下。
对于不同接口的光盘设备,对应的设备文件命名也是不同的:

  • IDE 接口的光盘设备对应设备文件命名通常为 /dev/hdc
  • SATA 接口的光盘设备对应设备文件命名通常为 /dev/sr0

为了便于识别光盘设备,在 /dev 目录下还有指向光盘设备文件的符号链接,如 cdromcdrwdvddvdrw,要注意的是并不是所有 Linux 发行版上都存在这些符号链接,如果没有符号链接则可根据光盘接口来识别光盘的设备文件。
光盘设备的挂载同样是使用 mount <光盘设备> <挂载点> 命令,-r-rw 分别可指定只读、读写挂载,光盘设备挂载点通常为 /media/cdrom

0

评论区