linux学习29 Linux磁盘使用及文件系统管理企业级实战

一、文件系统的使用

  1、首先要"挂载":mount命令和umount命令

  2、根文件系统之外的其它文件系统要想能够被访问,都必须通过关联至根文件系统上的某个目录来实现。此关联操作即为“挂载”,此目录即为“挂载点”。

    挂载点:mount_point,用于作为另一个文件系统的访问入口

      (1)、事先存在

      (2)、应该使用未被或不会被其它进程使用到的目录

      (3)、挂载点下原有的文件将会被隐藏

  3、mount命令

    mount [-fnrsvw] [-t vfstype] [-o options] device dir

    a、显示当前挂载的所有文件系统直接使用mount命令

[root@localhost ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=1007264k,nr_inodes=251816,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12872)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=203912k,mode=700)

    b、命令选项

      -a:将/etc/fstable所有定义的支持自动挂载的设备都给挂上来,已经挂上来的就不管,没挂上来的就自动挂上来

      -r:readonly,只读挂载;光驱就只能只读

      -w:read and write,读写挂载,默认就是读写挂载的

      -n:默认情况下,当前文件系统上的挂载和卸载等操作都是会被写入/etc/mtab上去的。-n用于禁止此特性。

      -t vfstype:指明要挂载的设备上的文件系统的类型,多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型。

      -L LABEL:挂载时以卷标的方式指明设备。

        mount -L LABEL dir

      -U UUID:挂载时以UUID的方式指明设备

        mount -U UUID dir

      -o options:挂载选项

        sync/async:同步/异步操作;

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

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

        remount:重新挂载

        acl:支持使用facl功能。

[root@localhost ~]# mount -o remount,acl /dev/sdb1 /mnt/
[root@localhost ~]# mount|grep "sdb1"
/dev/sdb1 on /mnt type ext4 (rw,relatime,data=ordered)

          也可以tune2fs -o acl device

        ro:只读

        rw:读写

        /dev/nodev:此设备上是否允许创建设备文件

        exec/noexec:是否允许运行此设备上的程序文件

        auto/noauto:

        user/nouser:是否允许普通用户挂载此文件系统

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

        defaults:Use default options: rw, suid, dev, exec, auto, nouser, and async.

    c、一个使用技巧

      可以实现将目录绑定至另一个目录上,作为其临时访问入口

      mount --bind 源目录  目标目录

[root@localhost ~]# mount --bind /etc/ /mnt
[root@localhost /]# umount /mnt/

    d、查看当前系统所有已挂载的设备

      mount

      cat /etc/mtab

      cat /proc/mounts

    e、挂载光盘

      mount -r /dev/cdrom   mount_point

      光盘设备文件:/dev/cdrom,/dev/dvd,或/dev/sr0

    f、挂载U盘

      事先识别U盘的设备文件;

    g、挂载本地的回环设备,未必都是iso设备

      mount -o loop /PATH/TO/SOME_LOOP_FILE  MOUNT_POINT

  4、umount 命令

    a、umount device|dir

      注意:正在被进程访问到的挂载点无法被卸载

    b、查看路径被哪个进程占用:

      lsof  MOUNT_POINT

      fuser -v MOUNT_POINT

[root@localhost /]# mount /dev/sdb2 /mnt/
[root@localhost /]# cd /mnt/
[root@localhost mnt]# 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))
[root@localhost mnt]# lsof /mnt/
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    1301 root  cwd(表示将其设置为了当前工作目录)    DIR   8,18     4096    2 /mnt
lsof    2467 root  cwd    DIR   8,18     4096    2 /mnt
lsof    2468 root  cwd    DIR   8,18     4096    2 /mnt
[root@localhost mnt]# fuser -v /mnt/
                     USER        PID ACCESS COMMAND
/mnt:                root     kernel mount /mnt
                     root       1301 ..c(表示将其设置为了当前工作目录).. bash
[root@localhost mnt]# ps -aux|grep 1301
root      1301  0.0  0.1 116292  3056 pts/0    Ss   00:13   0:00 -bash
root      2512  0.0  0.0 112704   972 pts/0    R+   04:54   0:00 grep --color=auto 1301

      终止所有正在访问某挂载点的进程:我们可以使用fuser -km /mnt将相应的进程干掉

[root@localhost mnt]# fuser -km /mnt
/mnt:                 1301c

  5、交换分区

    a、创建交换分区的命令:mkswap

    b、启用:swapon  [OPTION] [DEVICE]

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

    c、禁用:swapoff:swapoff DEVICE

  6、设定除根文件系统以外的其它文件系统都能够开机时自动挂载:/etc/fstab文件

    每行定义一个要挂载的文件系统及其相关属性

    6个字段:

      (1)、要挂载的设备

          设备文件

          LABEL

          UUID

          伪文件系统:如sysfs,proc,tmpfs等

      (2)、挂载点

          swap类型的设备的挂载点为swap

      (3)、文件系统类型

      (4)、挂载选项

          defaults:使用默认挂载选项

          如果要同时指明多个挂载选项,彼此间以逗号分隔

          defaults,acl,noatime,noexec

      (5)、转储频率

          0:从不备份

          1:每天备份

          2:每隔一天备份

      (6)、自检次序

          0:不自检

          1:首先自检,通常只能是根文件系统可用1

          2:次级自检

          ...

    mount -a:可自动挂载定义在此文件中的所有支持自动挂载的设备。

 二、与磁盘相关的两个命令

  1、df命令  df [OPTION]... [FILE]...

    a、相应选项

      -l :只显示本地文件系统不显示网络文件系统

[root@localhost /]# df -l
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  38770180 1350432  37419748   4% /
devtmpfs                  1007264       0   1007264   0% /dev
tmpfs                     1019556       0   1019556   0% /dev/shm
tmpfs                     1019556    9572   1009984   1% /run
tmpfs                     1019556       0   1019556   0% /sys/fs/cgroup
/dev/sda1                 1038336  135096    903240  14% /boot
tmpfs                      203912       0    203912   0% /run/user/0
/dev/sdb1                 5126337    3599   5013785   1% /mnt

      -h:人更能够读懂的显示

[root@localhost /]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   37G  1.3G   36G   4% /
devtmpfs                 984M     0  984M   0% /dev
tmpfs                    996M     0  996M   0% /dev/shm
tmpfs                    996M  9.4M  987M   1% /run
tmpfs                    996M     0  996M   0% /sys/fs/cgroup
/dev/sda1               1014M  132M  883M  14% /boot
tmpfs                    200M     0  200M   0% /run/user/0
/dev/sdb1                4.9G  3.6M  4.8G   1% /mnt

      -i:查看inode使用的百分比

[root@localhost /]# df -i
Filesystem                Inodes IUsed    IFree IUse% Mounted on
/dev/mapper/centos-root 19394560 42078 19352482    1% /
devtmpfs                  251816   410   251406    1% /dev
tmpfs                     254889     1   254888    1% /dev/shm
tmpfs                     254889   725   254164    1% /run
tmpfs                     254889    16   254873    1% /sys/fs/cgroup
/dev/sda1                 524288   326   523962    1% /boot
tmpfs                     254889     1   254888    1% /run/user/0
/dev/sdb1                 327680    12   327668    1% /mnt

  2、du命令  du [OPTION]... [FILE]...

    -s:sumary显示目录下所有文件大小之后

    -h:human-readable

 三、练习

  1、创建一个10G的分区,并格式化为ext4文件系统

    (1)、block大小为2048;预留空间为2%,卷标为MYDATA

    (2)、挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳

    (3)、可开机自动挂载

  2、创建一个大小为1G的swap分区,并启动之

  3、创建一个20G的文件系统,块大小为2048,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testing目录,且默认有acl挂载选项

    (1)、创建20G分区

    (2)、格式化:

        mke2fs -t ext4 -b 2048 -L 'TEST' /dev/DEVICE

  4、创建一个5G的文件系统,卷标为HUGE,要求此分区开机自动挂载至/mogdata目录,文件系统类型为ext3

  5、写一个脚本,完成如下功能:

    (1)、列出当前系统识别到的所有磁盘设备

        fdisk -l /dev/[sh]d[a-z] |grep -o "^Disk /dev[sh]d[a-z]"

    (2)、如磁盘数量为1,则显示其空间使用信息,否则则显示最后一个磁盘上的空间使用信息

        disks=$(fdisk -l /dev/[sh]d[a-z] |grep -o "^Disk /dev[sh]d[a-z]"|wc -l)

        if [ $disks -eq 1 ];then fdisk -l /dev/[hs]da; else fdisk -l $(fdisk -l /dev/[sh]d[a-z] |grep -o "^Disk /dev/[sh]d[a-z]" |tail -1 |cut -d' ' -f2) ;fi

  

 

 

 

 

  

posted @ 2020-01-01 18:31  Presley  阅读(303)  评论(0编辑  收藏  举报