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_root26G 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_root26G 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_root26G 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 usethe 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_root26G 1.7G 24G 7% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 477M 28M 424M 7% /boot