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 以來統計人數
計數器
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

今日 人數統計
昨日 人數統計
本月 人數統計
上月 人數統計