zoukankan      html  css  js  c++  java
  • linux 文件系统管理三部曲之三:挂载文件系统

    linux 文件系统管理三部曲之一:磁盘分区

    linux 文件系统管理三部曲之二:创建文件系统

    上面说明了,硬盘的划分和格式化,那么怎么使用,还没说,这里说一下,怎么使用创建好的文件系统。

    使用文件系统

    只要把文件系统“挂载”到某个目录上,就可以通过这个目录访问文件系统了。

    • 这个目录就叫做:挂载点(mount_point):用于作为另一个文件系统的访问入口。

      挂载点的目录要满足的条件:

      1,事先存在

      2,为被使用过的,并且不会被其他进程使用

      3,挂载点下,原有的文件,挂载后会被隐藏

    • 这个“挂”上去的动作,就是mount命令。

    • 把挂载点,摘下来的动作,就是umount命令。

    umount命令用法:

    umount device|dir

    注意:如果某个用户的某个进程在使用这个挂载点,则无法umout,直到使用这个挂载点的进程退出。

    比如,某个用户,cd进入到了挂载点,这时系统管理员执行umount命令,则显示如下:

    # umount /mnt
    umount: /mnt: target is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))
    

    1,查看哪个用户的哪个进程在使用挂载点

    • lsof mount_point

      ]# lsof /mnt
      lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
            Output information may be incomplete.
      COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
      bash    5482 root  cwd    DIR   8,17     1024    2 /mnt
      
    • fuser -v mount_point

      # fuser -v /mnt
                           USER        PID ACCESS COMMAND
      /mnt:                root     kernel mount /mnt
                           root       5482 ..c.. bash
      

    2,杀死使用挂载点的所以进程:fuser -km mount_point

    # fuser -km /mnt/
    /mnt:                 5482c
    

    mount命令用法

    直接执行mount命令,显示出当前系统的挂载情况。注意,在centOS7下,显示的内容比较多,里面比CentOS6多了cgroup的挂载信息。

    1,基本用法

    • 语法:mount [-fnrsvw][-t vfstype] [-o options] device dir

      # mount /dev/sdb1 /mnt
      
    • 以只读方式挂载:-r

    • 以可读写方式挂载:-w

    • 挂载时不更新/etc/mtab文件:-n

      /etc/mtab文件里,保存了当前的挂载情况,每挂载一个文件系统,就在此文件追加一行,卸载文件系统后,就删除追加的行。当/etc目录下的文件不可以写入时,可以使用此选项。但,在CentOS7上即使指定了-n,也更新了/etc/mtab文件。

    • 指定要挂载设备的文件系统类型:-t

      一般可以省略,mount目录会自动根据blkid命令的结果,找到要挂载设备的文件系统类型。

    • 不指定设备文件,而是通过指定卷标,来挂载:-L

      # e2label /dev/sdb1 m1
      # blkid /dev/sdb1
      /dev/sdb1: LABEL="m1" UUID="4752177b-e026-483d-b166-19229b64e4c3" TYPE="ext2"
      # mount -L m1 /mnt
      
    • 不指定设备文件,而是通过指定UUID,来挂载:-U

      # mount -U 4752177b-e026-483d-b166-19229b64e4c3 /mnt
      

    2,挂载选项(-o options):下面是-o后面的选项的具体值。

    • sync/async:当写入到磁盘时,是马上就写到磁盘上,还是先不急,等会一起写入到磁盘的选项。

      sync:马上写入到磁盘

      async:稍等一会再写入磁盘。所以,async的性能好!

    • atime/noatime:文件或目录在被访问后,是否更新其访问时间戳

    • diratime/nodiratime:目录在被访问后,是否更新其访问时间戳

    • remount:当想增加挂载选项时,但又不想卸载文件系统。使用此选项自动重新挂载文件系统,并让新的挂载选项生效。

      比如,挂载的时候,指定的是只读选项,但想改成可读写,就可以用下面的用法,/mnt/t1是挂载点。

      mount -o remount rw /mnt/t1
      
    • acl:使facl功能有效,也就是setfacl功能生效。

    • ro:只读

    • rw:读写

    • dev/nodev:此文件系统上是否允许识别(interpret )设备文件。即使是nodev,也可以使用mknod命令创建设备文件。

    • exec/noexec:是否允许在此文件系统上运行程序

    • suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效。

    • relatime/norelatime:是否允许根据modify time或change time去更新 access time。

    • defaults:当不只读options时,实际是:rw, suid, dev, exec, auto, nouser, and async被启用了。

    3,绑定目录到挂载点。

    mount命令不仅可以挂载设备文件到挂载点,还可以挂载别的目录到挂载点。使用--bind

    # mount --bind /etc /mnt
    

    4,查看挂载了哪些设备

    • mount
    • cat /etc/mtab
    • cat /proc/mounts

    5,挂载光盘

    一般光盘的设备文件是/dev/cdrom或/dev/dvd

    # mount -r /dev/cdrom /mnt
    

    6,挂载u盘

    和挂载分区没什么区别,只是需要先找到u盘对应的设备文件,可以通过文件的大小去判断哪个设备文件是u盘。

    7,挂载本地回环文件(ios文件,img文件等)

    # mount -o loop /tmp/ttylinux.so /mnt
    

    启用swap分区

    • 启用:swapon [option] device

      -a:定义在/etc/fstab文件中的所有设备

      # fdisk -l /dev/sdb6
      Disk /dev/sdb6: 26 MB, 26214400 bytes, 51200 sectors
      # mkswap /dev/sdb6
      mkswap: /dev/sdb6: warning: wiping old swap signature.
      Setting up swapspace version 1, size = 25596 KiB
      no label, UUID=a4dc9e83-5e28-49e1-9aa0-6e7059fcb227
      # free -m
                    total        used        free      shared  buff/cache   available
      Mem:           3789         631        2547          21         610        2872
      Swap:          3967           0        3967
      # swapon /dev/sdb6
      # free -m
                    total        used        free      shared  buff/cache   available
      Mem:           3789         631        2547          21         610        2872
      Swap:          3992           0        3992
      # swapoff /dev/sdb6
      # free -m
                    total        used        free      shared  buff/cache   available
      Mem:           3789         631        2546          21         610        2871
      Swap:          3967           0        3967
      
    • 禁用:swapoff [option] device

      -a:定义在/etc/fstab文件中的所有设备

    根下哪些目录是和根目录在同一个分区,哪些目录可以是在独立的分区呢?

    一般usr,var,home目录可以不和根目录在同一个分区,其他的大部分必须和根目录在同一个分区。

    那么问题来了,既然usr等目录不是和根目录在同一个分区,那么它们是怎么在系统开机后自动挂载上去呢?

    在/etc/fstab文件里定义的设备文件,开机后会自动挂载。

    • 解读/etc/fstab文件中各个列的含义

      • 第一列:设备文件,或UUID,或LABLE

      • 第二列:挂载点

        swap类型的文件系统的挂载点不是目录,直接是【swap】

      • 第三列:文件系统类型

      • 第四列:挂载选项

        如果有多个挂载选项,用逗号分隔。例如:defaults,acl,noexec

      • 第五列:备份频率

        0:从不备份

        1:每天备份

        2:隔天备份

      • 第六列:自检次序

        0:不自检

        1:第一个自检。通常只能是根文件系统可以使用1.

        2:第二个自检。可以把根文件系统以外的文件系统设置成2.

        ...

      # cat /etc/fstab
      
      #
      # /etc/fstab
      # Created by anaconda on Fri Nov 29 16:44:28 2019
      #
      # Accessible filesystems, by reference, are maintained under '/dev/disk'
      # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
      #
      /dev/mapper/centos-root /                       xfs     defaults        0 0
      UUID=3d3b316a-529e-484a-9895-e785fdde5365 /boot                   xfs     defaults        0 0
      /dev/mapper/centos-home /home                   xfs     defaults        0 0
      /dev/mapper/centos-swap swap                    swap    defaults        0 0
      

    mount -a目录会自动把/etc/fstab文件里定义的设备,全部挂载

    下面的一行,是自己追加的。

    /dev/sdb5 /mnt/t2                    ext3    defaults,acl        0 0
    

    显示文件系统的空间使用状况:df

    • 显示所有文件系统的空间使用状况:df

      # df
      Filesystem              1K-blocks     Used Available Use% Mounted on
      /dev/mapper/centos-root  38815216 18982084  19833132  49% /
      devtmpfs                  1923436        0   1923436   0% /dev
      tmpfs                     1940308     9712   1930596   1% /run
      tmpfs                     1940308        0   1940308   0% /sys/fs/cgroup
      /dev/mapper/centos-home  18950144  1842644  17107500  10% /home
      tmpfs                      388064        4    388060   1% /run/user/42
      tmpfs                      388064       32    388032   1% /run/user/1000
      /dev/sda1                 1038336   182380    855956  18% /boot
      /dev/sdb5                   45478      827     42091   2% /mnt/t2
      
    • 显示所有文件系统的空间使用状况:df -l

      # df -l
      Filesystem              1K-blocks     Used Available Use% Mounted on
      /dev/mapper/centos-root  38815216 18982116  19833100  49% /
      devtmpfs                  1923436        0   1923436   0% /dev
      tmpfs                     1940308     9712   1930596   1% /run
      tmpfs                     1940308        0   1940308   0% /sys/fs/cgroup
      /dev/mapper/centos-home  18950144  1842644  17107500  10% /home
      tmpfs                      388064        4    388060   1% /run/user/42
      tmpfs                      388064       32    388032   1% /run/user/1000
      /dev/sda1                 1038336   182380    855956  18% /boot
      /dev/sdb5                   45478      827     42091   2% /mnt/t2
      
    • 显示文件系统的空间使用状况(适合阅读):df -h

      # df -h
      Filesystem               Size  Used Avail Use% Mounted on
      /dev/mapper/centos-root   38G   19G   19G  49% /
      devtmpfs                 1.9G     0  1.9G   0% /dev
      tmpfs                    1.9G  9.5M  1.9G   1% /run
      tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
      /dev/mapper/centos-home   19G  1.8G   17G  10% /home
      tmpfs                    379M  4.0K  379M   1% /run/user/42
      tmpfs                    379M   32K  379M   1% /run/user/1000
      /dev/sda1               1014M  179M  836M  18% /boot
      /dev/sdb5                 45M  827K   42M   2% /mnt/t2
      
    • 显示所有文件系统的inode的使用状况:df -i

      # df -i
      Filesystem                Inodes  IUsed    IFree IUse% Mounted on
      /dev/mapper/centos-root 19417088 416785 19000303    3% /
      devtmpfs                  480859    403   480456    1% /dev
      tmpfs                     485077    751   484326    1% /run
      tmpfs                     485077     16   485061    1% /sys/fs/cgroup
      /dev/mapper/centos-home  9480192    912  9479280    1% /home
      tmpfs                     485077      6   485071    1% /run/user/42
      tmpfs                     485077     19   485058    1% /run/user/1000
      /dev/sda1                 524288    341   523947    1% /boot
      /dev/sdb5                  12824     11    12813    1% /mnt/t2
      

    显示目录下所有文件所占用的空间:du

    • 显示目录下每个文件所占用的空间:du

      # du /home/ys/bin/
      56      /home/ys/bin/
      52      /home/ys/sbin/
      
    • 显示目录下所有文件所占用的空间:du -s

      -h:人类可读。

      # du -s /etc/
      42732   /etc/
      # du -sh /etc/
      42M     /etc/  
      

    复制,剪切,删除文件操作,对文件系统的影响

    • 复制:等于新建文件
    • 删除:把block标记为未使用,把inode标记为未使用,把inode和block位图标记为未使用。所以速度很快。
    • 剪切:
      如果在同一个文件系统的话,仅改变路径,inode不变。
      如果不在同一个文件系统的话,先复制数据到目标文件系统,并删除原来文件。

    练习:

    1,创建一个20G的文件系统,块大小为2048,卷标为TEST,要求此分区开机后自动挂载到/testing目录,且启用acl功能

    • 创建20G分区(fdisk)

    • 创建文件系统:mke2fs -t ext4 -b 2048 -L 'TEST' /dev/sd7

    • 编辑/etc/fstab文件

      LABEL=‘TEST’ /testing ext4 defaults, acl 0 0

    # c/c++ 学习互助QQ群:877684253 ![](https://img2018.cnblogs.com/blog/1414315/201811/1414315-20181106214320230-961379709.jpg) # 本人微信:xiaoshitou5854
  • 相关阅读:
    湖湘杯2020misc
    BUUOJ(Misc)
    BUUOJ(Web)
    网络信息安全攻防学习平台
    CTFHub web部分题解
    BugkuCTF 部分WP(搬运了很多WP)
    Web安全之机器学习入门 第2章-第5章学习笔记
    结构体
    排序的使用
    字符串和日期
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/12142328.html
Copyright © 2011-2022 走看看