Linux 基础学习训练教材 - RockyLinux 9.x

课程/课后例题参考解答

单纯提供一个相对的解答,并不是标准答案!

最近更新时间: 2023/05/01

单纯就是个解答的参考,写完之后再来这边查查看答案跟你想的一样不一样!?

第 14 堂课 (2023/05/29)

  • 例题 14.1.1-1:
    1. 一般服务器最重要的组件,应该是『硬盘』,因为重点是服务器提供的『数据』,这样的『网络服务』才有其必要性。
    2. 因为『数据』的重点在于『不会损坏』、『可以提供大量的容量需求』、『高性能的读写量』!
    3. 所以,磁盘数组将许多硬盘集成起来提供一个大型的文件系统,并且具有『大容量』、『磁盘容错』、『增加读写性能』的特性。
  • 例题 14.1.2-1:
    1. 先来安装 mdadm
      [root@station200 ~]# type mdadm
      mdadm 是 /usr/sbin/mdadm
      [root@station200 ~]# rpm -qf /usr/sbin/mdadm
      mdadm-4.2-8.el9.x86_64
      [root@station200 ~]# yum install mdadm
      
    2. 开始进行分割
      [root@station200 ~]# fdisk /dev/vda
      .....
      命令 (m 以获得说明):n
      分割区编号 (4-128, default 4):
      First sector (46151680-62914526, default 46151680):
      Last sector, +/-sectors or +/-size{K,M,G,T,P} (46151680-62914526, default 62914526): +300M
      
      Created a new partition 4 of type 'Linux filesystem' and of size 300 MiB.
      
      命令 (m 以获得说明):t
      分割区编号 (1-4, default 4):
      Partition type or alias (type L to list all): L
      .....
       29 Linux RAID                     A19D880F-05FC-4D3B-A006-743F0F84911E
      .....
      Partition type or alias (type L to list all): 29
      
      Changed type of partition 'Linux filesystem' to 'Linux RAID'.
      .....
      
      命令 (m 以获得说明):p
      所用设备      Start     结束     磁区  Size 类型
      /dev/vda1      2048     6143     4096    2M BIOS boot
      /dev/vda2      6144  4200447  4194304    2G Linux filesystem
      /dev/vda3   4200448 46151679 41951232   20G Linux LVM
      /dev/vda4  46151680 46766079   614400  300M Linux RAID
      /dev/vda5  46766080 47380479   614400  300M Linux RAID
      /dev/vda6  47380480 47994879   614400  300M Linux RAID
      /dev/vda7  47994880 48609279   614400  300M Linux RAID
      /dev/vda8  48609280 49223679   614400  300M Linux RAID
      
      命令 (m 以获得说明):w
      The partition table has been altered.
      Syncing disks.
      
      所以,最终我们要用来创建软件磁盘数组的,就是 /dev/vda4 ~ /dev/vda8 这 8 个喔!
    3. 开始处理软件磁盘数组,最终要来创建 /dev/md0 才对!
      [root@station200 ~]# mdadm --create /dev/md0 --level=5 --chunk=256K --raid-devices=4 --spare-devices=1 /dev/vda{4,5,6,7,8}
      
      [root@station200 ~]# mdadm --detail /dev/md0
      /dev/md0:
                 Version : 1.2
           Creation Time : Fri May 26 15:21:34 2023
              Raid Level : raid5
              Array Size : 918528 (897.00 MiB 940.57 MB)
           Used Dev Size : 306176 (299.00 MiB 313.52 MB)
            Raid Devices : 4
           Total Devices : 5
             Persistence : Superblock is persistent
      
             Update Time : Fri May 26 15:21:41 2023
                   State : clean
          Active Devices : 4
         Working Devices : 5
          Failed Devices : 0
           Spare Devices : 1
      
                  Layout : left-symmetric
              Chunk Size : 256K
      
      Consistency Policy : resync
      
                    Name : station200.rockylinux:0  (local to host station200.rockylinux)
                    UUID : 71f58f29:4ab8280a:572ce713:8e547d05
                  Events : 18
      
          Number   Major   Minor   RaidDevice State
             0     252        4        0      active sync   /dev/vda4
             1     252        5        1      active sync   /dev/vda5
             2     252        6        2      active sync   /dev/vda6
             5     252        7        3      active sync   /dev/vda7
      
             4     252        8        -      spare   /dev/vda8
      
    4. 进行优化的格式化:
      [root@station200 ~]# mkfs.xfs -d su=256K,sw=3 /dev/md0
      
    5. 最终就挂载起来吧!
      [root@station200 ~]# mkdir /srv/raid
      [root@station200 ~]# mount /dev/md0 /srv/raid
      [root@station200 ~]# df -T /srv/raid
      文件系统       类型 1K-区块  已用   可用 已用% 挂载点
      /dev/md0       xfs   900096 39540 860556    5% /srv/raid
      
  • 例题 14.1.2-2:
    1. 先观察刚刚创建的磁盘数组是否正常运作,同时观察文件系统是否正常 (/srv/raid 是否可读写)
      [root@station200 ~]# cat /proc/mdstat
      Personalities : [raid6] [raid5] [raid4]
      md0 : active raid5 vda7[5] vda8[4](S) vda6[2] vda5[1] vda4[0]
            918528 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU]
      
      [root@station200 ~]# cp -a /etc /home /srv/raid
      [root@station200 ~]# ll /srv/raid/
      drwxr-xr-x. 142 root root 8192  5月 26 14:38 etc
      drwxr-xr-x.  29 root root 4096  5月  1 12:09 home
      [root@station200 ~]# df -T /srv/raid
      文件系统       类型 1K-区块   已用   可用 已用% 挂载点
      /dev/md0       xfs   900096 172636 727460   20% /srv/raid
      
      所以磁盘数组与文件系统都是正常运作的!
    2. 将某颗运作中的磁盘 (例如 /dev/vda7) 设置为错误 (--fail),再观察磁盘数组与文件系统
      [root@station200 ~]# mdadm --fail /dev/md0 /dev/vda7
      mdadm: set /dev/vda7 faulty in /dev/md0
      
      [root@station200 ~]# mdadm --detail /dev/md0
      /dev/md0:
                 Version : 1.2
           Creation Time : Fri May 26 15:21:34 2023
              Raid Level : raid5
              Array Size : 918528 (897.00 MiB 940.57 MB)
           Used Dev Size : 306176 (299.00 MiB 313.52 MB)
            Raid Devices : 4
           Total Devices : 5
             Persistence : Superblock is persistent
      
             Update Time : Fri May 26 15:24:56 2023
                   State : clean
          Active Devices : 4
         Working Devices : 4
          Failed Devices : 1
           Spare Devices : 0
      
                  Layout : left-symmetric
              Chunk Size : 256K
      
      Consistency Policy : resync
      
                    Name : station200.rockylinux:0  (local to host station200.rockylinux)
                    UUID : 71f58f29:4ab8280a:572ce713:8e547d05
                  Events : 37
      
          Number   Major   Minor   RaidDevice State
             0     252        4        0      active sync   /dev/vda4
             1     252        5        1      active sync   /dev/vda5
             2     252        6        2      active sync   /dev/vda6
             4     252        8        3      active sync   /dev/vda8
      
             5     252        7        -      faulty   /dev/vda7
      
    3. 将错误的磁盘抽离 (--remove) 之后,假设修理完毕,再加入该磁盘数组 (--add),然后再次观察磁盘数组与文件系统
      [root@station200 ~]# mdadm --remove /dev/md0 /dev/vda7
      mdadm: hot removed /dev/vda7 from /dev/md0
      
      [root@station200 ~]# mdadm --add /dev/md0 /dev/vda7
      mdadm: added /dev/vda7
      [root@station200 ~]# mdadm --detail /dev/md0
      /dev/md0:
      .....
          Number   Major   Minor   RaidDevice State
             0     252        4        0      active sync   /dev/vda4
             1     252        5        1      active sync   /dev/vda5
             2     252        6        2      active sync   /dev/vda6
             4     252        8        3      active sync   /dev/vda8
      
             5     252        7        -      spare   /dev/vda7
      
  • 例题 14.2.1-1:
    [root@station200 ~]# fdisk /dev/vda
    ......
    命令 (m 以获得说明):l
    ......
     19 Linux swap                     0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
     20 Linux filesystem               0FC63DAF-8483-4772-8E79-3D69D8477DE4
     21 Linux server data              3B8F8425-20E0-4F3B-907F-1A25A76F98E8
    .....
     28 Linux home                     933AC7E1-2EB4-4F13-B844-0E14E2AEF915
     29 Linux RAID                     A19D880F-05FC-4D3B-A006-743F0F84911E
     30 Linux LVM                      E6D6D379-F507-44C2-A23C-238F2A3DF928
    .....
    # 所以,就是 30 号!
    
  • 例题 14.2.2-1:
    [root@station200 ~]# fdisk /dev/vda
    ......
    命令 (m 以获得说明):n
    分割区编号 (9-128, default 9):
    First sector (49223680-62914526, default 49223680):
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (49223680-62914526, default 62914526): +300M
    
    Created a new partition 9 of type 'Linux filesystem' and of size 300 MiB.
    
    命令 (m 以获得说明):t
    分割区编号 (1-9, default 9):
    Partition type or alias (type L to list all): 30
    
    Changed type of partition 'Linux filesystem' to 'Linux LVM'.
    ....
    
    命令 (m 以获得说明):p
    .....
    所用设备      Start     结束     磁区  Size 类型
    ....
    /dev/vda9  49223680 49838079   614400  300M Linux LVM
    /dev/vda10 49838080 50452479   614400  300M Linux LVM
    /dev/vda11 50452480 51066879   614400  300M Linux LVM
    /dev/vda12 51066880 51681279   614400  300M Linux LVM
    
    命令 (m 以获得说明):w
    
  • 例题 14.2.2-2:
    1. 请将上述的 /dev/myvg/mylv 实际格式化为 xfs 文件系统,且此 fileysytem 可以开机后自动挂载于 /srv/lvm 目录下。
      [root@station200 ~]# mkfs.xfs /dev/myvg/mylv
      [root@station200 ~]# mkdir /srv/lvm
      [root@station200 ~]# vim /etc/fstab
      /dev/myvg/mylv /srv/lvm xfs defaults 0 0
      
      [root@station200 ~]# mount -a
      [root@station200 ~]# df -T /srv/lvm
      文件系统              类型 1K-区块  已用   可用 已用% 挂载点
      /dev/mapper/myvg-mylv xfs   518816 30092 488724    6% /srv/lvm
      
    2. 再创建一个名为 /dev/myvg/mylvm2 的 LV 设备,容量约为 300MB 左右,格式化为 ext4 文件系统,开机后自动挂载于 /srv/lvm2 目录下。
      [root@station200 ~]# lvcreate -L 300M -n mylvm2 myvg
      [root@station200 ~]# lvscan
        ACTIVE            '/dev/myvg/mylv' [512.00 MiB] inherit
        ACTIVE            '/dev/myvg/mylvm2' [304.00 MiB] inherit
        ACTIVE            '/dev/rocky/home' [3.00 GiB] inherit
        ACTIVE            '/dev/rocky/root' [10.00 GiB] inherit
        ACTIVE            '/dev/rocky/swap' [1.00 GiB] inherit
      
      [root@station200 ~]# mkfs.ext4 /dev/myvg/mylvm2
      [root@station200 ~]# mkdir /srv/lvm2
      [root@station200 ~]# vim /etc/fstab
      /dev/myvg/mylvm2 /srv/lvm2 ext4 defaults 0 0
      
      [root@station200 ~]# mount -a
      [root@station200 ~]# df -T /srv/lvm2
      文件系统                类型 1K-区块  已用   可用 已用% 挂载点
      /dev/mapper/myvg-mylvm2 ext4  281491    14 261817    1% /srv/lvm2
      
  • 例题 14.2.3-1:
    1. 请将 myvg 的所有剩余的容量分配给 /dev/myvg/mylv
      [root@station200 ~]# vgdisplay myvg
      ....
        Total PE              103
        Alloc PE / Size       72 / 1.12 GiB
        Free  PE / Size       31 / 496.00 MiB
        VG UUID               oHncDF-aYkB-Qunj-E448-m9g1-n01H-aFnDWV
      
      [root@station200 ~]# lvresize -l +31 /dev/myvg/mylv
        Size of logical volume myvg/mylv changed from 512.00 MiB (32 extents) to 1008.00 MiB (63 extents).
        Logical volume myvg/mylv successfully resized.
      
      [root@station200 ~]# vgdisplay myvg
        Total PE              103
        Alloc PE / Size       103 / <1.61 GiB
        Free  PE / Size       0 / 0
      ......
      
      [root@station200 ~]# lvscan
        ACTIVE            '/dev/myvg/mylv' [1008.00 MiB] inherit
        ACTIVE            '/dev/myvg/mylvm2' [640.00 MiB] inherit
        ACTIVE            '/dev/rocky/home' [3.00 GiB] inherit
        ACTIVE            '/dev/rocky/root' [10.00 GiB] inherit
        ACTIVE            '/dev/rocky/swap' [1.00 GiB] inherit
      
    2. 通过 xfs_growfs 来放大 /dev/myvg/mylv 这个文件系统 (请自行 man xfs_growfs)
      [root@station200 ~]# xfs_growfs --help
      xfs_growfs: 不适用的选项 -- -
      Usage: xfs_growfs [options] mountpoint
      
      Options:
              -d          grow data/metadata section
              -l          grow log section
              -r          grow realtime section
              -n          don't change anything, just show geometry
              -i          convert log from external to internal format
              -t          alternate location for mount table (/etc/mtab)
              -x          convert log from internal to external format
              -D size     grow data/metadata section to size blks
              -L size     grow/shrink log section to size blks
              -R size     grow realtime section to size blks
              -e size     set realtime extent size to size blks
              -m imaxpct  set inode max percent to imaxpct
              -V          print version information
      
      [root@station200 ~]# df -T /dev/myvg/mylv
      文件系统              类型 1K-区块  已用   可用 已用% 挂载点
      /dev/mapper/myvg-mylv xfs   518816 30092 488724    6% /srv/lvm
      
      [root@station200 ~]# xfs_growfs /srv/lvm
      
      [root@station200 ~]# df -T /dev/myvg/mylv
      文件系统              类型 1K-区块  已用   可用 已用% 挂载点
      /dev/mapper/myvg-mylv xfs  1026720 33864 992856    4% /srv/lvm
      
    3. 你目前的系统中,根目录所在 filesystem 能否放大加入额外的 2GB 容量?若可以,请实做,若不行,请说明原因。
      [root@station200 ~]# df -T /
      文件系统               类型  1K-区块    已用    可用 已用% 挂载点
      /dev/mapper/rocky-root xfs  10475520 6212340 4263180   60% /
      
      [root@station200 ~]# vgdisplay rocky
        --- Volume group ---
        VG Name               rocky
      ....
        Total PE              5120
        Alloc PE / Size       3584 / 14.00 GiB
        Free  PE / Size       1536 / 6.00 GiB
      # 所以剩余量是足够的,确实可以提供 2G 给根目录的!没问题!
      
      [root@station200 ~]# lvresize -L +2G /dev/rocky/root
        Size of logical volume rocky/root changed from 10.00 GiB (2560 extents) to 12.00 GiB (3072 extents).
        Logical volume rocky/root successfully resized.
      [root@station200 ~]# xfs_growfs /
      
      [root@station200 ~]# df -T /
      文件系统               类型  1K-区块    已用    可用 已用% 挂载点
      /dev/mapper/rocky-root xfs  12572672 6227032 6345640   50% /
      # 容量从 10G 放大到 12G 了!
      
  • 例题 14.3.1-1:
    # 将 /dev/md0 卸载,并且停止使用
    [root@station200 ~]# df -T /dev/md0
    文件系统       类型 1K-区块   已用   可用 已用% 挂载点
    /dev/md0       xfs   900096 170068 730028   19% /srv/raid
    
    [root@station200 ~]# umount /dev/md0
    
    [root@station200 ~]# cat /proc/mdstat
    Personalities : [raid6] [raid5] [raid4]
    md0 : active raid5 vda7[5](S) vda4[0] vda6[2] vda8[4] vda5[1]
          918528 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU]
    
    [root@station200 ~]# mdadm --stop /dev/md0
    mdadm: stopped /dev/md0
    [root@station200 ~]# cat /proc/mdstat
    Personalities : [raid6] [raid5] [raid4]
    
    # 将 /dev/vda{4,5,6,7,8} 这几个设备的表头数据 (有点类似 superblock) 删除
    [root@station200 ~]# dd if=/dev/zero of=/dev/vda4 bs=10M count=1
    [root@station200 ~]# dd if=/dev/zero of=/dev/vda5 bs=10M count=1
    [root@station200 ~]# dd if=/dev/zero of=/dev/vda6 bs=10M count=1
    [root@station200 ~]# dd if=/dev/zero of=/dev/vda7 bs=10M count=1
    [root@station200 ~]# dd if=/dev/zero of=/dev/vda8 bs=10M count=1
    [root@station200 ~]# lsblk /dev/vda{4..8}
    NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    vda4 252:4    0  300M  0 part
    vda5 252:5    0  300M  0 part
    vda6 252:6    0  300M  0 part
    vda7 252:7    0  300M  0 part
    vda8 252:8    0  300M  0 part
    
    # 将这 5 个 partition 删除
    [root@station200 ~]# fdisk /dev/vda
    .....
    命令 (m 以获得说明):d
    分割区编号 (1-13, default 13): 4
    ....
    # 重复 d 删除 5, 6, 7, 8 分区即可!
    命令 (m 以获得说明):w
    
  • 例题 14.3.1-2:
    # 卸载所有与 /dev/myvg/mylv, /dev/myvg/mylvm2 的设备,并将 myvg 设置为禁用
    [root@station200 ~]# df -T /dev/myvg/{mylv,mylvm2}
    文件系统                类型 1K-区块  已用   可用 已用% 挂载点
    /dev/mapper/myvg-mylv   xfs  1026720 33864 992856    4% /srv/lvm
    /dev/mapper/myvg-mylvm2 ext4  603707    14 570273    1% /srv/lvm2
    
    [root@station200 ~]# umount /srv/lvm /srv/lvm2
    
    [root@station200 ~]# vgchange -a n myvg
      0 logical volume(s) in volume group "myvg" now active
    
    [root@station200 ~]# lvscan
      inactive          '/dev/myvg/mylv' [1008.00 MiB] inherit
      inactive          '/dev/myvg/mylvm2' [640.00 MiB] inherit
      ACTIVE            '/dev/rocky/home' [3.00 GiB] inherit
      ACTIVE            '/dev/rocky/root' [12.00 GiB] inherit
      ACTIVE            '/dev/rocky/swap' [1.00 GiB] inherit
    
    # 移除 myvg
    [root@station200 ~]# vgscan
      Found volume group "myvg" using metadata type lvm2
      Found volume group "rocky" using metadata type lvm2
    
    [root@station200 ~]# vgremove myvg
    Do you really want to remove volume group "myvg" containing 2 logical volumes? [y/n]: y
      Logical volume "mylv" successfully removed
      Logical volume "mylvm2" successfully removed
      Volume group "myvg" successfully removed
    
    [root@station200 ~]# vgscan
      Found volume group "rocky" using metadata type lvm2
    
    # 移除 /dev/vda{9,10,11,13} 这几个 PV
    [root@station200 ~]# pvscan
      PV /dev/vda3    VG rocky           lvm2 [20.00 GiB / 4.00 GiB free]
      PV /dev/vda9                       lvm2 [300.00 MiB]
      PV /dev/vda10                      lvm2 [300.00 MiB]
      PV /dev/vda11                      lvm2 [300.00 MiB]
      PV /dev/vda12                      lvm2 [300.00 MiB]
      PV /dev/vda13                      lvm2 [500.00 MiB]
      Total: 6 [21.66 GiB] / in use: 1 [20.00 GiB] / in no VG: 5 [1.66 GiB]
    
    [root@station200 ~]# pvremove /dev/vda{9..13}
    
    # 将上述的 partition 删除
    [root@station200 ~]# fdisk /dev/vda
    .....
    [root@station200 ~]# lsblk -i
    NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    vda            252:0    0   30G  0 disk
    |-vda1         252:1    0    2M  0 part
    |-vda2         252:2    0    2G  0 part /boot
    `-vda3         252:3    0   20G  0 part
      |-rocky-root 253:0    0   12G  0 lvm  /
      |-rocky-swap 253:1    0    1G  0 lvm  [SWAP]
      `-rocky-home 253:2    0    3G  0 lvm  /home
    
    这样系统回复到最原始的状态了!
  • 例题 14.3.2-1:
    [root@station200 ~]# fdisk /dev/vda
    ......
    命令 (m 以获得说明):n
    分割区编号 (4-128, default 4):
    First sector (46151680-62914526, default 46151680):
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (46151680-62914526, default 62914526): +1.5G
    
    命令 (m 以获得说明):t
    分割区编号 (1-4, default 4):
    Partition type or alias (type L to list all): 29
    ......
    命令 (m 以获得说明):p
    ......
    所用设备      Start     结束     磁区  Size 类型
    ......
    /dev/vda4  46151680 49297407  3145728  1.5G Linux RAID
    /dev/vda5  49297408 52443135  3145728  1.5G Linux RAID
    /dev/vda6  52443136 55588863  3145728  1.5G Linux RAID
    /dev/vda7  55588864 58734591  3145728  1.5G Linux RAID
    /dev/vda8  58734592 61880319  3145728  1.5G Linux RAID
    /dev/vda9  61880320 62914526  1034207  505M Linux filesystem
    
  • 例题 14.5.1-1:
    1. 在测试的系统中, /home 为 xfs 文件系统,请在设置档中加入 usrquota, grpquota 的挂载参数;
      [root@station200 ~]# vim /etc/fstab
      /dev/mapper/rocky-home /home xfs  defaults,usrquota,grpquota 0 0
      
    2. 能否直接卸载 /home 再挂载?为什么?如何进行卸载再挂载的动作?
      [root@station200 ~]# umount /home
      umount: /home: target is busy.
      
      [root@station200 ~]# lsof /home
      COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
      pulseaudi 8423 student  mem    REG  253,2    16384 2097284 /home/student/.config/pulse/...
      pulseaudi 8423 student  mem    REG  253,2    12288 2097283 /home/student/.config/pulse/...
      
      看起来似乎是 student 在系统内,所以 /home 无法卸载。请注销所有的一般用户帐号 (避免使用到 /home), 然后可能还需要额外等待 1, 2 分钟,让系统清理所有的暂存信息后,才有办法继续卸载。
      [root@station200 ~]# w
       13:54:42 up 23:34,  1 user,  load average: 0.00, 0.02, 0.00
      USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
      root     pts/0    172.16.200.254   13:42    1.00s  0.05s  0.01s w
      # 确定只剩下 root 一个人比较好!
      
      [root@station200 ~]# umount /home
      [root@station200 ~]# mount -a
      [root@station200 ~]# df -Th /home
      文件系统               类型  容量  已用  可用 已用% 挂载点
      /dev/mapper/rocky-home xfs   3.0G  152M  2.9G    5% /home
      
    3. 如何观察已经挂载的文件系统参数?
      [root@station200 ~]# mount  | grep /home
      /dev/mapper/rocky-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,
        usrquota,grpquota)
      
  • 例题 14.5.2-1:
    # A. 创建一个名为 "quotaman" 的用户,该用户的密码设置为 "myPassWord"
    [root@station200 ~]# useradd quotaman
    [root@station200 ~]# echo "myPassWord" |passwd --stdin quotaman
    更改用户 quotaman 的密码。
    passwd:所有核对代符都已成功更新。
    
    # B. 观察 quotaman 刚刚创建好帐号后的 quota 数值
    [root@station200 ~]# xfs_quota -x -c "report -ubh" /home
    [root@station200 ~]# xfs_quota -x -c "quota -ubh quotaman" /home
    Disk quotas for User quotaman (1026)
    Filesystem   Blocks  Quota  Limit Warn/Time    Mounted on
    /dev/mapper/rocky-home
                    16K      0      0  00 [------] /home
    
    # C. 创建 150M, 200M 的 quota 限制
    [root@station200 ~]# xfs_quota -x -c "limit bsoft=150M bhard=200M -u quotaman" /home
    [root@station200 ~]# xfs_quota -x -c "quota -ubh quotaman" /home
    Disk quotas for User quotaman (1026)
    Filesystem   Blocks  Quota  Limit Warn/Time    Mounted on
    /dev/mapper/rocky-home
                    16K   150M   200M  00 [------] /home
    
    # D. 在 tty5 登录 quotaman 并且用 dd 创建大文件
    [quotaman@station200 ~]$ dd if=/dev/zero of=test.img bs=1M count=160
    记录了 160+0 的读入
    记录了 160+0 的写出
    167772160字节(168 MB,160 MiB)已拷贝,0.220893 s,760 MB/s
    [quotaman@station200 ~]$ ll -h
    drwxr-xr-x. 2 quotaman quotaman    6  5月  1 11:46 bin
    -rw-r--r--. 1 quotaman quotaman 160M  5月 29 10:19 test.img
    
    # E. 回归 root 的身份,再次观察 quotaman 的 quota 报告,观察 grace time
    [root@station200 ~]# xfs_quota -x -c "quota -ubh quotaman" /home
    Disk quotas for User quotaman (1026)
    Filesystem   Blocks  Quota  Limit Warn/Time    Mounted on
    /dev/mapper/rocky-home
                 160.0M   150M   200M  00 [6 days] /home
    # 因为使用容量超过 160M 了,所以出现宽限时间!
    
    # F. 再以 quotaman 测试超过 200M 的情境
    [quotaman@station200 ~]$ dd if=/dev/zero of=test.img bs=1M count=260
    dd: 写入 'test.img' 时发生错误: 磁盘配额已满
    dd: 写入 'test.img' 时发生错误: 磁盘配额已满
    记录了 200+0 的读入
    记录了 199+0 的写出
    208666624字节(209 MB,199 MiB)已拷贝,0.264424 s,789 MB/s
    # 容量超过 200M 了!当然会失败
    

    quotaman 需要如何处理数据后,才能够正常的继续操作系统呢?很简单,在 7 天的时间内,将使用容量降低到 150M 以下, 就可以恢复正常,也不会有 grace time 的限制问题了!

  • 例题 14.4 课后练习
    1. 关闭 VDO 这个虚拟机的磁盘优化模块,卸载 /srv/vdo,需要进行文件系统的卸载,同时移除 VDO 的管制即可:
      [root@station200 ~]# vim /etc/fstab
      #/dev/mapper/myvdo /srv/vdo xfs defaults,x-systemd.requires=vdo.service 0 0
      
      [root@station200 ~]# umount /srv/vdo
      
      [root@station200 ~]# vdostats --human-readable
      Device                   Size      Used Available Use% Space saving%
      raidvg-vpool0-vpool      6.0G      4.3G      1.7G  72%           83%
      
      [root@station200 ~]# lvremove /dev/raidvg/vdolv
      Do you really want to remove active logical volume raidvg/vdolv? [y/n]: y
        Logical volume "vdolv" successfully removed.
      
      [root@station200 ~]# vdostats --human-readable
      vdostats: Could not find any VDO devices
      
    2. 关闭 raidvg 这个 LVM 的 VG,也关闭 /dev/md0 这个软件磁盘数组,同时恢复原本的磁盘分割,让系统只剩下 /dev/vda{1,2,3}, 其实就是进行系统的文件系统复原而已。由于我们的实做方式为『 partition --> Software RAID --> LVM 』, 所以删除就得要反过来,由 LVM --> RAID --> partition 才对喔!
      # 1. 删除 LVM
      [root@station200 ~]# lvscan
      [root@station200 ~]# vgscan
        Found volume group "rocky" using metadata type lvm2
        Found volume group "raidvg" using metadata type lvm2
      
      [root@station200 ~]# vgchange -a n raidvg
        0 logical volume(s) in volume group "raidvg" now active
      
      [root@station200 ~]# vgremove raidvg
        Volume group "raidvg" successfully removed
      
      [root@station200 ~]# pvremove /dev/md0
        Labels on physical volume "/dev/md0" successfully wiped.
      
      # 2. 删除 /dev/md0 这个 software RAID
      [root@station200 ~]# mdadm --stop /dev/md0
      mdadm: stopped /dev/md0
      
      [root@station200 ~]# dd if=/dev/zero of=/dev/vda4 bs=10M count=1
      [root@station200 ~]# dd if=/dev/zero of=/dev/vda5 bs=10M count=1
      [root@station200 ~]# dd if=/dev/zero of=/dev/vda6 bs=10M count=1
      [root@station200 ~]# dd if=/dev/zero of=/dev/vda7 bs=10M count=1
      [root@station200 ~]# dd if=/dev/zero of=/dev/vda8 bs=10M count=1
      
      # 3. 删除 partition 了!
      [root@station200 ~]# fdisk /dev/vda
      ......
      命令 (m 以获得说明):d
      分割区编号 (1-9, default 9): 9
      ......
      命令 (m 以获得说明):p
      ......
      所用设备     Start     结束     磁区 Size 类型
      /dev/vda1     2048     6143     4096   2M BIOS boot
      /dev/vda2     6144  4200447  4194304   2G Linux filesystem
      /dev/vda3  4200448 46151679 41951232  20G Linux LVM
      
      命令 (m 以获得说明):w
      
    3. 创建 raid1 的软件磁盘数组!
      # a. 分割出 /dev/vda4, /dev/vda5 各 4G 的容量
      [root@station200 ~]# fdisk /dev/vda
      ......
      
      [root@station200 ~]# lsblk /dev/vda
      NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
      vda            252:0    0   30G  0 disk
      ├─vda1         252:1    0    2M  0 part
      ├─vda2         252:2    0    2G  0 part /boot
      ├─vda3         252:3    0   20G  0 part
      │ ├─rocky-root 253:0    0   12G  0 lvm  /
      │ ├─rocky-swap 253:1    0    1G  0 lvm  [SWAP]
      │ ├─rocky-home 253:2    0    3G  0 lvm  /home
      │ └─rocky-lvm  253:3    0  1.5G  0 lvm
      ├─vda4         252:4    0    4G  0 part
      └─vda5         252:5    0    4G  0 part
      
      # b. 开始创建 raid1 软件磁盘数组
      [root@station200 ~]# mdadm --create /dev/md0 -l 1 -n 2 /dev/vda{4,5}
      [root@station200 ~]# cat /proc/mdstat
      md0 : active raid1 vda5[1] vda4[0]
            4181952 blocks super 1.2 [2/2] [UU]
            [=====>...............]  resync = 28.7% (1201536/4181952) finish=0.9min speed=50064K/sec
      
    4. 处理 LVM 设备的文件系统
      # a. 创建 testvg
      [root@station200 ~]# pvcreate /dev/md0
      [root@station200 ~]# vgcreate testvg /dev/md0
        Volume group "testvg" successfully created
      
      # b. 创建 /dev/testvg/testlv 的设备
      [root@station200 ~]# lvcreate -n testlv -l 1020 testvg
      [root@station200 ~]# lvscan
        ACTIVE            '/dev/rocky/home' [3.00 GiB] inherit
        ACTIVE            '/dev/rocky/root' [12.00 GiB] inherit
        ACTIVE            '/dev/rocky/swap' [1.00 GiB] inherit
        ACTIVE            '/dev/rocky/lvm' [1.50 GiB] inherit
        ACTIVE            '/dev/testvg/testlv' [3.98 GiB] inherit
      
      # c. 创建文件系统并且挂仔起
      [root@station200 ~]# mkfs.xfs /dev/testvg/testlv
      [root@station200 ~]# vim /etc/fstab
      /dev/testvg/testlv /srv/testlv xfs defaults,usrquota,grpquota 0 0
      
      [root@station200 ~]# mkdir /srv/testlv
      [root@station200 ~]# mount -a
      [root@station200 ~]# df -Th /srv/testlv
      文件系统                  类型  容量  已用  可用 已用% 挂载点
      /dev/mapper/testvg-testlv xfs   4.0G   61M  4.0G    2% /srv/testlv
      
      [root@station200 ~]# mount | grep testlv
      /dev/mapper/testvg-testlv on /srv/testlv type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,usrquota,grpquota)
      
    5. student 在上述载点内,具有 800M/1000M 的 quota 使用限制。
      [root@station200 ~]# xfs_quota -x -c "limit bsoft=800M bhard=1000M -u student" /srv/testlv
      [root@station200 ~]# xfs_quota -x -c "report -buh" /srv/testlv
      User quota on /srv/testlv (/dev/mapper/testvg-testlv)
                              Blocks
      User ID      Used   Soft   Hard Warn/Grace
      ---------- ---------------------------------
      root            0      0      0  00 [------]
      student         0   800M  1000M  00 [------]
      
修改历史:
  • 2023/02/17:RHEL 改版到 EL9 了,只好再度改版!否则教学上面挺困扰!
2023/02/17 以来统计人数
计数器
其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计