Debian

用更大的磁碟替換軟 RAID1 LUKS 磁碟

  • November 24, 2021

我打算用兩個相同的(4TB 磁碟)替換兩個軟 RAID1 磁碟(2TB)。目前磁碟配置有執行 debian 11 的軟 RAID 1。這些磁碟不是 root。

我的計劃是用新的 4TB 磁碟替換(支持熱交換)一個 2TB 磁碟,然後等待磁碟與 mdadm 同步(我什至不知道該怎麼做,但我想我會Google它)。同步結束後,我計劃用剩餘的 2TB 磁碟進行相同的熱交換,用另一個新的 4TB 磁碟替換它,然後等待 mdadm 完成同步。

在這一點上,我仍然(希望)發現自己有兩個需要擴大的 2TB 分區的 LUKS 磁碟。這個操作很麻煩,但我以前在筆記型電腦上做過,但從來沒有使用 RAID1 配置。

  1. 你覺得我的計劃有意義嗎?
  2. 您能否就如何擴大 RAID 1 LUKS 分區(即我計劃的最後一步)提供一些指導?
  3. 還有其他更聰明的選擇嗎?

根據評論中的要求,以下是以下輸出lsblk

root@server:~$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda            8:0    0   3.6T  0 disk  
`-sda1         8:1    0   3.6T  0 part  
 `-md4        9:4    0   3.6T  0 raid1 
   `-4tb    253:1    0   3.6T  0 crypt /media/4tb
sdb            8:16   0   3.6T  0 disk  
`-sdb1         8:17   0   3.6T  0 part  
 `-md4        9:4    0   3.6T  0 raid1 
   `-4tb    253:1    0   3.6T  0 crypt /media/4tb
sdc            8:32   0 119.2G  0 disk  
`-sdc1         8:33   0 119.2G  0 part  
 `-md127      9:127  0 119.2G  0 raid1 /
sdd            8:48   0 119.2G  0 disk  
`-sdd1         8:49   0 119.2G  0 part  
 `-md127      9:127  0 119.2G  0 raid1 /
sde            8:64   0 465.8G  0 disk  
`-sde1         8:65   0 465.8G  0 part  
 `-md0        9:0    0 465.6G  0 raid1 
sdf            8:80   0   2.7T  0 disk  
`-sdf1         8:81   0   2.7T  0 part  
 `-3tb      253:2    0   2.7T  0 crypt /media/3tb
sdg            8:96   1 931.5G  0 disk  
`-sdg1         8:97   1 931.5G  0 part  
 `-md1        9:1    0 931.4G  0 raid1 
   `-vm     253:3    0 931.4G  0 crypt /media/vm
sdh            8:112  1   1.8T  0 disk  
`-sdh1         8:113  1   1.8T  0 part  
 `-md2        9:2    0   1.8T  0 raid1 
   `-backup 253:0    0   1.8T  0 crypt /media/backup
sdi            8:128  1 931.5G  0 disk  
`-sdi1         8:129  1 931.5G  0 part  
 `-md1        9:1    0 931.4G  0 raid1 
   `-vm     253:3    0 931.4G  0 crypt /media/vm
sdj            8:144  1   1.8T  0 disk  
`-sdj1         8:145  1   1.8T  0 part  
 `-md2        9:2    0   1.8T  0 raid1 
   `-backup 253:0    0   1.8T  0 crypt /media/backup

您的所有/media/*掛載似乎都使用了磁碟->部分->raid1->crypt 分層。

請注意,如果您現有的 2 TB 磁碟以 MBR 樣式進行分區,則您無法真正使用新的更大磁碟執行此操作,因為您將達到 MBR 最大容量限制。幸運的是,Linux 軟體 RAID 不要求您在 RAID 集的各個部分上具有相同類型的分區(或者實際上,對於非引導磁碟,您可以選擇根本不使用任何分區方案)。

因此,假設這md2是您希望遷移到更大磁碟的 RAID 集,並且您需要先進行交換sdh

  1. 標記sdh1為失敗的 RAID1 組件:mdadm --manage /dev/md2 --fail /dev/sdh1
  2. md2RAID 集中刪除它:mdadm --manage /dev/md2 --remove /dev/sdh1
  3. 告訴核心磁碟將被熱拔出:echo 1 > /sys/block/sdh/device/delete. 根據控制器和磁碟型號,磁碟可能會或可能不會在您執行此操作時實際降速。
  4. 用新磁碟物理更換sdh磁碟。
  5. 找出新的磁碟設備名稱(它可能是也可能不是/dev/sdh;我們稱之為sdX)。
  6. 如果您希望使用分區,請使用 GPT 分區類型並創建一個覆蓋整個磁碟的分區。將分區類型設置為“Linux RAID”(GPT 分區類型 GUID A19D880F-05FC-4D3B-A006-743F0F84911E;大多數 GPT 分區工具都有一些更使用者友好的方式來指定。)這個分區將比這個 RAID 集的現有一半大;在這一點上這完全沒問題。mdadm將只使用鏡像分區所需的數量,sdi1直到您稍後在第 10 步中授予它使用全部容量的權限。

(如果您使用分區,您可能希望使用一些特定的大小而不是只使用完整的磁碟,以防止您將來可能需要更換磁碟並且可能無法找到替換磁碟具有完全相同數量的塊。再說一次,未來的磁碟可能會比目前的磁碟大,這不會成為問題。)

  1. 將新磁碟添加到 RAID 集。如果您對磁碟進行了分區,請使用mdadm --manage /dev/md2 --add /dev/sdX1; 如果您決定將整個磁碟用作未分區的 RAID 設備,請使用mdadm --manage /dev/md2 --add /dev/sdX.
  2. 監視/proc/mdstat以查看同步何時完成。
  3. 對第二個磁碟重複步驟 1-8 sdj
  4. 當兩個磁碟都已更換且同步時,使用mdadm --grow /dev/md2 --size=max允許md2RAID 設備充分利用增加的容量。

(如果您在上面的第 6 步中選擇不使用分區,您也可以使用特定大小而不是--size=max此處,原因與第 6 步相同。)

  1. md2成功調整設備大小後,用於在RAID 集cryptsetup resize /dev/mapper/backup頂部調整加密設備的大小。md2
  2. 最後,在加密設備上調整文件系統的大小,使用fsadm resize /dev/mapper/backup或使用文件系統特定工具(resize2fs /dev/mapper/backup對於 ext2/ext3/ext4 文件系統類型,xfs_growfs /media/backup對於 XFS 等)

引用自:https://unix.stackexchange.com/questions/678484