8.10 mount:挂载文件系统

  mount命令可以将指定的文件系统挂载到指定目录(挂载点),在Linux系统下必须先挂载所有的设备,然后才能被访问,挂载其实就是为要访问的设置开个门(开门才能访问)。
  mount [option] [device] [dir] 
挂载的目录必须事先存在且最好为空,如果目录不为空,那么挂载设备后会掩盖以前的目录内容,但原目录下的内容不会受损,所以,如果卸载了相应的设备,那么此前的目录内容又可以访问了。

mount命令的参数选项及说明

-l    显示系统已经挂载的设备的相关信息
-a    根据/etc/fstab文件里的配置挂载文件系统
-t    指定挂载的文件系统类型,例如,文件系统类型有,nfs(网络文件系统),iso9660(挂载CD-ROM光盘),auto(自动检测文件系统)。如果不设置t参数,或使用-t auto参数,mount命令会自行选择挂载的文件类型
-o    后接一些挂载的选项,是安全、性能优化的重要选项
-r    只读挂载,等同于-o ro的挂载方式
-w    读写挂载,等同于-o rw的挂载方式
 
其中mount的-o参数可以接的挂载选项请参见下表
 
mount的-o参数可接的选项*
async      所有涉及文件系统/O的操作都是异步处理,即数据不会同步写入到磁盘,而是写入到缓冲区中,这种设置会提高系统的性能,但同时也会降低数据的安全性,一般在生产环境下不推荐使用。除非对性能要求很高,对数据可靠性要求不高的场景
sync       与async相反,即有I/O操作时,都会同步处理/O,即把数据同步写入硬盘,此参数会牺牲一部分I/O性能,但是换来的是系统突发宕机后数据的安全性
atime      在每一次数据访问时,都会同步更新每次访问的文件的inode时间,是默认选项,在高并发的情况下,要明确加上noatime来取消该默认项,以达到提升/O性能,优化磁盘I/O的目的
noatime    不更新文件系统上文件的inode访问时间,在高并发环境下,应用此选项,可以在一定程度上提高系统I/O的性能
nodiratime 不更新文件系统上目录的inode访问时间,在高并发环境下,应用此选项,可以在一定程度上提高系统I/O的性能
auto       通过-a参数能够被自动挂载
noauto     不会自动挂载文件系统
defaults   默认值包括rw、suid、dev、exec、auto、nouser 和 async,/etc/fstab文件挂载配置的很多情况下都使用默认值
exec       允许执行二进制程序,取消该参数,可以提升系统的安全性
noexec     不能执行二进制程序
nosuid     不允许suid(Linux的特殊权限)特殊功能生效 
nouser     禁止一个普通用户挂载该文件系统,这是挂载时的默认选项
remount    尝试重新挂载一个已经挂载了的文件系统,其通常用于改变一个文件系统的挂载标志,从而使得一个只读文件系统变得可写,这个动作不会改变设备或者挂载点。
       提示一下,当系统发生故障时或者进入单用户模式、教援模式时,会发现根文件系统经常会变成只读文件系统,不允许修改,此时该命令就派上用场了,具体命令为:
mount -o remount,rw / 会将根文件系统重新挂载使其可写。
       在单用户模式或教援模式修改系统时该命令十分重要 ro 只读挂载 rw 读写挂载

显示系统已挂载的信息(不加参数或加-l参数)

[root@cs6 ~]# mount
/dev/mapper/vg_cs6-lv_root on / type ext4 (rw)    #<==磁盘/dev/mapper/vg_cs6-lv_root挂载在(on)根上,文件系统类型为ext4,可读可写(rw)。
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /mnt/data1 type ext4 (rw)
 

对系统的光驱进行挂载

首先要把光盘放入光驱驱动器中,如果是VM(虚拟机),则需要将ISO镜像放入VM光驱驱动器中,然后执行下面的操作:
 
[root@cs6 ~]# mount /dev/cdrom /mnt    #<=这里没有指定-t iso9660,但mount命令会自动识别
mount: block device /dev/sr0 is write-protected, mounting read-only #<=提示设备写保护,只读挂载。
 
[root@cs6 ~]# mkdir /mnt/cdrom
[root@cs6 ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@cs6 ~]# ll -h /mnt/cdrom/
total 82K
-r--r--r--. 1 root root   14 Jun 29  2018 CentOS_BuildTag
dr-xr-xr-x. 3 root root 2.0K Jun 30  2018 EFI
-r--r--r--. 1 root root  212 Nov 27  2013 EULA
-r--r--r--. 1 root root  18K Nov 27  2013 GPL
dr-xr-xr-x. 3 root root 2.0K Jun 30  2018 images
dr-xr-xr-x. 2 root root 2.0K Jun 30  2018 isolinux
dr-xr-xr-x. 2 root root  40K Jun 30  2018 Packages
-r--r--r--. 1 root root 1.4K Jun 29  2018 RELEASE-NOTES-en-US.html
dr-xr-xr-x. 2 root root 4.0K Jun 30  2018 repodata
-r--r--r--. 1 root root 1.7K Nov 27  2013 RPM-GPG-KEY-CentOS-6
-r--r--r--. 1 root root 1.7K Nov 27  2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r--. 1 root root 1.7K Nov 27  2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r--. 1 root root 1.7K Nov 27  2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--. 1 root root 3.4K Jun 30  2018 TRANS.TBL
[root@cs6 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_cs6-lv_root
                       26G  1.7G   24G   7% /
tmpfs                 931M     0  931M   0% /dev/shm
/dev/sda1             477M   28M  424M   7% /boot
/dev/sdb1             392M  2.3M  369M   1% /mnt/data1
/dev/sr0              406M  406M     0 100% /mnt/cdrom 

 

使用性能及安全挂载参数选项(-o多选项)的企业案例 

    在工作中,我们会经常使用NFS网络文件系统,若要使用NFS文件系统,则需要进行挂载。有关NFS网络文件系统的部署请读者参考《跟老男孩学习Linux运维;Web集群实战》一书的第10章,本例假定读者已经部署了NFS网络文件系统服务,挂载点为:10.0.0.3:/data,挂载操作如下: 
[root@backup ~]# mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,wsize=131072 172.16.1.31:/data/ /upload
[root@backup ~]# grep upload /proc/mounts
172.16.1.31:/data/ /upload nfs4
rw,nosuid,nodev,noexec,noatime,nodiratime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,pro
to=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.45,minorversion=0,local_lock=non
e,addr=172.16.1.31 0 0

 

生产场景文件系统故障解决案例。 
由于系统等问题,在工作中可能会造成文件系统只读,这时就需要重新挂载根(/)为读写模式。 
 mount -o remount,rw / #<==remount 索试重新挂载“/”为rw(可读可写)。  
如果上述操作还不能解决问题,则需要重启系统或使用救援模式来解决。
 

生产场景配置fstab后防止开机启动出错案例

    在工作中,当添加新的磁盘时,会有永久性挂载的需求,此时就会配置/etc/fstab这个文件,但这个文件若配置错误则有可能造成系统重启后无法开机,因此,在配置好fstab文件后可先用mount -a读取/etc/fstab进行挂载测试,如果能挂载成功,那么重启一般也会正常,反之则会出现异常。
[root@cs6 ~]# tail -1 /etc/fstab
/dev/sdb1              /mnt                     ext4       defaults     0  0
[root@cs6 ~]# mount -a 

  提示:经过这样的挂载测试以后,就可以确保下一次开机的时候,系统能够重启成功,当然修改fstab文件也要特别注意,最后一列的数字最好改为0(表示不用fsck检查)。

 
 
 

8.11 umount:卸载文件系统

    umount命令可以卸载已经挂载的文件系统。 
 umount卸载可以接挂载点目录,也可以接设备文件。
 
-f    强制卸载
-l    懒情地卸载。将文件系统从文件系统层次结构中分离出来,并清除对文件系统的所有引用。一般和-f参数配合使用其卸载效果更佳*
 

卸载已挂载的光盘

[root@cs6 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_cs6-lv_root
                       26G  1.7G   24G   7% /
tmpfs                 931M     0  931M   0% /dev/shm
/dev/sda1             477M   28M  424M   7% /boot
/dev/sdb1             392M  2.3M  369M   1% /mnt
[root@cs6 ~]# umount /mnt/
[root@cs6 ~]# ls /mnt/
cdrom  data1  data2
[root@cs6 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_cs6-lv_root
                       26G  1.7G   24G   7% /
tmpfs                 931M     0  931M   0% /dev/shm
/dev/sda1             477M   28M  424M   7% /boot
 

 

生产场景下强制卸载的例子

    有的时候由于挂载的设备停止了响应(例如NFS),或者在当前挂载点的目录下,直接执行卸载命令就会无法卸载设备,而使用如下的方式就可以轻松卸载:
    这里简单举例如下,进入到挂载点目录进行卸载尝试。
 
[root@cs6 ~]# mount /dev/sdb1 /mnt/data1
[root@cs6 ~]# ls /mnt/data1
1.html  2.html  3.html  4.html  5.html  lost+found
[root@cs6 ~]# cd /mnt/data1
[root@cs6 data1]# umount /mnt/data1    #<==固为当前在/mnt/data1目条中,所以无法卸载,此处执行方法一,退出当前目录卸载。
umount: /mnt/data1: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@cs6 data1]# umount -lf /mnt/data1    #<==方法二:使用-lf参教进行强制师载。
[root@cs6 data1]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_cs6-lv_root
                       26G  1.7G   24G   7% /
tmpfs                 931M     0  931M   0% /dev/shm
/dev/sda1             477M   28M  424M   7% /boot