一、简述

    将不属于根文件系统的额外文件系统与跟文件系统某个已经存在的目录建立起关联关系,进而使得此目录作为其他文件访问入口的行为称之为挂载。

    解除以上关系称之为卸载,卸载时可以使用设备的名称,也可以使用挂载点名称进行卸载。

    注:

        如果挂载点为非空目录,挂载后,挂载点下原有文件在挂载后会被临时隐藏,直至卸载。建议我们挂载时使用空目录进行挂载。

        进程正在使用中的设备无法被卸载。



二、使用



    1.挂载



        1.1)mount命令

            挂载一个文件系统。

            A)格式

~]# mount [-fnrsvw] [-t vfstype] [-o options] device dir
  mount:显示当前已挂载的所有设备
  -a,--all:自动挂载所有支持自动挂载的设备(作用于定义在了/etc/fstab文件中,且挂载的选项中有“自动挂载”功能的挂载)
  -B, --bind:绑定目录到另一个目录上
  -L, --label label:挂载卷标指定的设备
  -n, --no-mtab:不更新/etc/mtab
  -r, --read-only:以只读形式挂载
  -t, --types vfstype:指定要挂载的设备上的文件系统类型
  -U, --uuid uuid:挂载指定uuid的设备
  -w, --rw, --read-write:以读写形式挂载
  -o options(挂载文件系统的选项)
     acl:启用此文件系统上的acl(访问控制列表)功能
     auto/noauto:是否支持自动挂载
     atime/moatime:是否更新目录和文件的访问时间戳
     diratime/nodiratime:是否格更新目录的访问时间戳
     dev/nodev:是否支持在此文件系统上使用设备文件
     exec/noexec:是否支持将文件系统上的应用程序运行为进程
     remount:重新挂载
     ro:以只读方式挂载,多用于光盘挂载
     rw:以读写方式挂载,多用于新硬盘的增加
     sync/async:挂载为同步/异步模式
     suid/nosuid:是否允许设置用户或组的标识符
     user/nouser:是否允许普通用户挂载此设备
  device:需要挂载的设备,可选值如下。
    (1)设备文件;例如 /dev/sdb
    (2)卷标;例如 -L 'ext4_TEST'
    (3)UUID;例如 -U '19e2624d-40c1-4ec8-939d-c75dd5ca04d5'
    (4)伪文件系统名称;例如 proc,sysfs,devtmpfs,configfs
  dir:挂载点

# 注1:上述选项可以多个同时使用,彼此间使用逗号分隔(默认挂载选项为“defaults”,“defaults”其中包含选项有:rw, suid, dev, exec, auto, nouser, async)。
# 注2:查看内核追踪到的已挂载的所有设备“~]# cat /proc/mounts”

            B)案例

[root@wybaron_host1015 ~]# mount | grep "/dev/sdb"
[root@wybaron_host1015 ~]# cat /proc/mounts | grep "/dev/sdb"
[root@wybaron_host1015 ~]# mount -o nodev,ro,nouser /dev/sdb data/
[root@wybaron_host1015 ~]# cat /proc/mounts | grep "/dev/sdb"
/dev/sdb /root/data ext3 ro,nodev,relatime,data=ordered 0 0



        1.2)swapon命令

            用于启用或关闭交换文件和设备。

            注:linux和windows不一样,在linux上交换分区性能差,同一磁盘上的多个交换分区不能起到负载均衡的作用,称为伪负载均衡。不同磁盘上建立交换分区才有助于起到负载均衡的作用!

            A)格式

# 启用、激活交换分区
~]# swapon [ option ]... [ device ]
  -a:使/etc/fstab 中,所有 标记了'sw'的交换设备生效
  -p priority:指定交换分区的优先级
  -s:显示优先级
# 关闭、禁用交换分区
~]# swapoff [ option ]... [ device ]
  -a:关闭、禁用所有的交换分区

            B)案例

# 分区与格式化是不同给的概念,先分区,然后格式化,最后进行启动、激活
[root@wybaron_host1015 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xb25b73b9 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@wybaron_host1015 ~]# fdisk -l /dev/sdb

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb25b73b9

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   82  Linux swap / Solaris
[root@wybaron_host1015 ~]# mkswap -L 'swap_TEST' /dev/sdb1 
正在设置交换空间版本 1,大小 = 20970492 KiB
LABEL=swap_TEST, UUID=70fd571d-b3e9-4849-8f09-7dd324288854
[root@wybaron_host1015 ~]# swapon /dev/sdb1
[root@wybaron_host1015 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        3863544      176880     3514180       11832      172484     3459768
Swap:      23067640           0    23067640
[root@wybaron_host1015 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        172M        3.4G         11M        168M        3.3G
Swap:           21G          0B         21G
[root@wybaron_host1015 ~]# swapoff /dev/sdb1
[root@wybaron_host1015 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        157M        3.4G         11M        168M        3.3G
Swap:          2.0G          0B        2.0G



    2.卸载

        卸载之前应该查看当前文件系统是否有其它用户正在访问,如果有用户访问的进程,应该等待用户访问结束后再进行卸载,也可以强制终止其它用户的访问进程。



        2.1)fuser命令

        查看和终止用户正在访问指定文件系统的进程。

            A)格式

# 查看正在访问指定文件系统的进程
~]# fuser -v MOUNT_POINT

# 终止所有正在访问指定文件系统的进程
~]# fuser -km MOUNT_POINT

            B)案例

root@wybaron_host1015 ~]# cat /proc/mounts | grep /dev/sdb
/dev/sdb /root/data ext4 rw,relatime,data=ordered 0 0
[root@wybaron_host1015 ~]# umount data/
umount: /root/data:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
[root@wybaron_host1015 ~]# fuser -v data/
-bash: fuser: 未找到命令
[root@wybaron_host1015 ~]# yum install psmisc -y
[root@wybaron_host1015 ~]# fuser -v data/
                     用户     进程号 权限   命令
/root/data:          root     kernel mount /root/data
[root@wybaron_host1015 ~]# fuser -km data/
/root/data:           2161
[root@wybaron_host1015 ~]# umount data/
[root@wybaron_host1015 ~]# cat /proc/mounts | grep /dev/sdb



        2.2)umount命令

            卸载一个已挂载的文件系统。

            A)格式

~]# umount device | dir [...]

            B)案例

[root@wybaron_host1015 ~]# umount data/
[root@wybaron_host1015 ~]# cat /proc/mounts | grep /dev/sdb



    3.管理



        3.1)free命令

        显示系统中已用和魏永的内存空间总和。

            A)格式

~]# free [ option ]
    -m:以MB为单位显示
    -g:以GB为单位显示
    -h:以易读的单位显示

           B)案例

[root@wybaron_host1015 ~]# free -h                                                                                              
              total        used        free      shared  buff/cache   available                                                 
Mem:           3.7G        163M        3.2G         11M        281M        3.3G                                                 
Swap:          2.0G          0B        2.0G                                                                                     
[root@wybaron_host1015 ~]# free -g
              total        used        free      shared  buff/cache   available                                                 
Mem:              3           0           3           0           0           3                                                 
Swap:             1           0           1                                                                                     
[root@wybaron_host1015 ~]# free -m
              total        used        free      shared  buff/cache   available                                                 
Mem:           3773         163        3327          11         281        3356                                                 
Swap:          2047           0        2047



        3.2)df命令

            打印出文件系统磁盘空间的使用情况。

            A)格式

~]# df [OPTION]... [FILE]...
    -h,--huma-readable:用常见的格式显示出大小(例如:1K 234M 2G)
    -i, --inodes:用信息索引点代替块表示使用状况
    -P, --portability:使用POSIX兼容的格式输出
# 注:
    单位换算中有5%-10%的误差都是正常的,只是换算单位不同而已。
    POSIX模式下所有信息都会显示在一行内,方便grep、awk的使用。

            B)案例

[root@wybaron_host1015 ~]# df data/
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 17811456 1946540 15864916   11% /
[root@wybaron_host1015 ~]# df -h data/
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  1.9G   16G   11% /
[root@wybaron_host1015 ~]# df -i data/
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 8910848   56544 8854304       1% /
[root@wybaron_host1015 ~]# df -P data/
文件系统                 1024-块    已用     可用 配额 挂载点
/dev/mapper/centos-root 17811456 1946540 15864916  11% /



        3.3)du命令

            查看某目录总体空间占用状态。

            A)格式

~]# du [options] [file...]
    -h, --human-readable:为每个数附加一个表示大小单位的字母,象用M表示二进制 的兆字节
    -L, --dereference:引用符号连接(不是显示连接点本身而是连接指向的文件或 目录所使用的磁盘空间)
    -s, --summarize:对每个参数只显示总和
    -S, --separate-dirs:单独报告每一个目录的大小,不包括子目录的大小

            B)案例

[root@wybaron_host1015 ~]# du -h /tmp/
0	/tmp/.XIM-unix
0	/tmp/.ICE-unix
0	/tmp/.font-unix
0	/tmp/.X11-unix
0	/tmp/.Test-unix
0	/tmp/vmware-root
0	/tmp/systemd-private-708733de8557454fb7305e4d63b1fef6-chronyd.service-q0V46h/tmp
0	/tmp/systemd-private-708733de8557454fb7305e4d63b1fef6-chronyd.service-q0V46h
0	/tmp/systemd-private-4db652716054488da8f061b83ba7e091-chronyd.service-erMFYl/tmp
0	/tmp/systemd-private-4db652716054488da8f061b83ba7e091-chronyd.service-erMFYl
0	/tmp/systemd-private-d17bf9d02b5f48538be85a552e3efd5a-chronyd.service-eZz81M/tmp
0	/tmp/systemd-private-d17bf9d02b5f48538be85a552e3efd5a-chronyd.service-eZz81M
32K	/tmp/
[root@wybaron_host1015 ~]# du -s /tmp/
32	/tmp/
[root@wybaron_host1015 ~]# du -S /tmp/
0	/tmp/.XIM-unix
0	/tmp/.ICE-unix
0	/tmp/.font-unix
0	/tmp/.X11-unix
0	/tmp/.Test-unix
0	/tmp/vmware-root
0	/tmp/systemd-private-708733de8557454fb7305e4d63b1fef6-chronyd.service-q0V46h/tmp
0	/tmp/systemd-private-708733de8557454fb7305e4d63b1fef6-chronyd.service-q0V46h
0	/tmp/systemd-private-4db652716054488da8f061b83ba7e091-chronyd.service-erMFYl/tmp
0	/tmp/systemd-private-4db652716054488da8f061b83ba7e091-chronyd.service-erMFYl
0	/tmp/systemd-private-d17bf9d02b5f48538be85a552e3efd5a-chronyd.service-eZz81M/tmp
0	/tmp/systemd-private-d17bf9d02b5f48538be85a552e3efd5a-chronyd.service-eZz81M
32	/tmp/



三、补充



    挂载

        所有使用mount命令手动挂载的分区或目录,在重启时不会被自动挂载,如果需要在开机时被自动挂载,则我们需要在配置文件中进行信息添加!    

# 配置文件位置
/etc/fstab
# 配置文件格式
<file system>           <dir>     <type>   <options>   <dump> <pass>
/dev/mapper/centos-swap swap       swap     defaults     0      0
  
  <file system>:要挂载的分区或存储设备
  <dir>:文件系统挂载的位置
  <type>:要挂载的设备或分区的文件系统类型
  <options>:挂载时可以使用的参数,部分参数只有特定的文件系统才有
    defaults :使用文件系统的默认挂载参数,例如ext4 的默认参数为:rw,suid, dev, exec, auto, nouser,async
  <dump>:dump 工具通过它决定何时作备份。dump会检查其内容,并用数字来决定是否对这个文件系统进行备份。允许的数字是0和1,0表示忽略,1则进行备份
  <pass>:sck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0,1,和2。根目录应当获得最高的优先权1,其它所有需要被检查的设备设置为2。0 表示设备不会被 fsck 所检查



    同步与异步模式

        异步模式性能优,但是数据安全性低。

        同步模式数据安全性高,但是性能差。