• 8.10-11 mount、umount


    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
  • 相关阅读:
    【Python 10】汇率兑换3.0(while循环)
    【Teradata SQL】十进制转换成二进制
    【Python 09】汇率兑换2.0-2(分支语句)
    【Python 08】汇率兑换2.0-1(字符串索引)
    【Python 07】汇率兑换1.0-2(基本元素)
    【Python 06】汇率兑换1.0-1(IPO与字符串转数字)
    【Teradata SQL】创建数据库和表
    mybatis源码分析之01环境搭建
    springboot2集成pagehelper
    Redis5离线安装
  • 原文地址:https://www.cnblogs.com/wenyule/p/12214047.html
Copyright © 2020-2023  润新知