縮小一個 RAID-1 分區並擴大另一個
我有一個專用伺服器,
/dev/md2
安裝/
了 2 TB 並/dev/md3
安裝/home
了 3.5 TB。現在我想縮小
/dev/md2
到 500 GB 並增長/dev/md3
到大約 5 TB。我怎麼做?我已經能夠將大小調整/dev/md2
到 500 GB,但沒有將底層更改/dev/sd[a,b]3
為 500 GB 並將/dev/md3
(和/dev/sd[a,b]4
)增加到 5 TB。的輸出
cat /proc/mdstat
Personalities : [raid1] md3 : active raid1 sda4[0] sdb4[1] 3714478663 blocks super 1.2 [2/2] [UU] resync=PENDING bitmap: 28/28 pages [112KB], 65536KB chunk md2 : active raid1 sda3[0] sdb3[1] 2111700992 blocks super 1.2 [2/2] [UU] [====>................] resync = 22.1% (467664704/2111700992) finish=144.6min speed=189433K/sec bitmap: 13/16 pages [52KB], 65536KB chunk md1 : active raid1 sda2[0] sdb2[1] 523712 blocks super 1.2 [2/2] [UU] md0 : active raid1 sda1[0] sdb1[1] 33521664 blocks super 1.2 [2/2] [UU]
fdisk -l
(無 ramdisk 條目)的相關輸出:Disk /dev/sdb: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: 26A1CC9A-D448-41DA-AB97-926922E45FAD Device Start End Sectors Size Type /dev/sdb1 4096 67112959 67108864 32G Linux RAID /dev/sdb2 67112960 68161535 1048576 512M Linux RAID /dev/sdb3 68161536 4291825663 4223664128 2T Linux RAID /dev/sdb4 4291825664 11721045134 7429219471 3.5T Linux RAID /dev/sdb5 2048 4095 2048 1M BIOS boot Partition table entries are not in disk order. Disk /dev/sda: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: CF6FA031-2CD0-4CD6-939B-E761A2871AB2 Device Start End Sectors Size Type /dev/sda1 4096 67112959 67108864 32G Linux RAID /dev/sda2 67112960 68161535 1048576 512M Linux RAID /dev/sda3 68161536 4291825663 4223664128 2T Linux RAID /dev/sda4 4291825664 11721045134 7429219471 3.5T Linux RAID /dev/sda5 2048 4095 2048 1M BIOS boot Partition table entries are not in disk order. Disk /dev/md0: 32 GiB, 34326183936 bytes, 67043328 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk /dev/md1: 511.4 MiB, 536281088 bytes, 1047424 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk /dev/md2: 2 TiB, 2162381815808 bytes, 4223401984 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk /dev/md3: 3.5 TiB, 3803626151424 bytes, 7428957327 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes
您擁有 RAID1,因此如果您準備在重塑期間承擔磁碟故障的風險,則可以這樣做。這不是一個完整的食譜,你必須了解你在做什麼。即使這樣,您也很有可能會失去數據,我強烈建議您在開始之前進行備份。真的。是的,我是認真的。
總體規劃是
- 打破 RAID 鏡像
- 調整現在未使用的一半以適應新要求
- 使用新大小的分區創建新的 RAID 半鏡像
- 將所有文件系統從活動的一半複製到新調整大小的一半(在此之前停止盡可能多的服務)
- 使用新的半 RAID 重新啟動(棘手)
- 將鏡像的剩餘一半添加回 RAID
- 整理
現在,在您考慮將其應用到您的實時系統之前,請先進行備份。
在執行時,在幾個一次性環回磁碟映像上嘗試該過程。以下是創建這些的方法:
dd if=/dev/zero bs=1M count=200 > disk1.dat # Create a 200MB "disk" cp -p disk1.dat disk2.dat # And another parted disk1.dat --align optimal unit MiB --script mklabel gpt # First disk label parted disk1.dat --align optimal unit MiB mkpart primary 1 2 # Dummy partition parted disk1.dat --align optimal unit MiB mkpart primary 2 3 parted disk1.dat --align optimal unit MiB mkpart primary 3 150 # First useful partition parted disk1.dat --align optimal unit MiB mkpart primary 150 100% # Second parted disk2.dat --align optimal unit MiB --script mklabel gpt # Second disk parted disk2.dat --align optimal unit MiB mkpart primary 1 2 parted disk2.dat --align optimal unit MiB mkpart primary 2 3 parted disk2.dat --align optimal unit MiB mkpart primary 3 150 parted disk2.dat --align optimal unit MiB mkpart primary 150 100% d1=$(losetup --show --find --partscan disk1.dat); echo $d1 # Loop device d2=$(losetup --show --find --partscan disk2.dat); echo $d2 mdadm --create /dev/md103 --metadata default --level=1 --raid-devices=2 ${d1}p3 ${d2}p3 mdadm --create /dev/md104 --metadata default --level=1 --raid-devices=2 ${d1}p4 ${d2}p4 mkfs -t ext4 -L 103 /dev/md103 mkfs -t ext4 -L 104 /dev/md104 mkdir /mnt/103 /mnt/104 # Mountpoints for our test filesystems mount /dev/md103 /mnt/103 mount /dev/md104 /mnt/104
您現在將擁有兩個 RAID1 文件系統
/dev/md103
,/dev/md104
您可以在其上複製一些數據並嘗試該過程。您已經擁有$d1
和$d2
作為環回磁碟映像設備的基本名稱。這是一些細節。您的備份完成了嗎?
- 打破 RAID 鏡像
您可以使用以下命令將兩個 RAID 分區中的一半設置為故障
mdadm /dev/md103 --set-faulty ${d2}p3 --remove ${d2}p3 # sdb3 mdadm --zero-superblock ${d2}p3 mdadm /dev/md104 --set-faulty ${d2}p4 --remove ${d2}p4 # sdb4 mdadm --zero-superblock ${d2}p4
- 調整第二個磁碟分區的大小
使用您喜歡的工具刪除並重新創建第二個磁碟上的分區。例如,
parted $d2 --align optimal unit MiB rm 3 parted $d2 --align optimal unit MiB rm 4
此時您可能需要重新啟動系統。(或者,它
partprobe
可能滿足要求。)不要忘記重新創建循環設備並分配$d1
,$d2
當你這樣做時。parted $d2 --align optimal unit MiB mkpart primary 3 50 parted $d2 --align optimal unit MiB mkpart primary 50 100%
- 使用新大小的分區創建新的 RAID 半鏡像
創建 RAID 設備和文件系統。不要擔心第一個會警告你它似乎已經是數組的一部分——它是,但現在不是。
mdadm --create /dev/md203 --metadata default --level=1 --raid-devices=2 missing ${d2}p3 mdadm --create /dev/md204 --metadata default --level=1 --raid-devices=2 missing ${d2}p4 mkfs -t ext4 -L 203 /dev/md203 mkfs -t ext4 -L 204 /dev/md204 mkdir /mnt/203 /mnt/204 mount /dev/md203 /mnt/203 mount /dev/md204 /mnt/204
- 將所有文件系統從活動的一半複製到新調整大小的一半
在執行之前停止盡可能多的服務很重要,這樣文件系統就盡可能穩定。
cp -ax /mnt/103 /mnt/203 # cp -ax / /mnt/203 cp -ax /mnt/104 /mnt/204 # cp -ax /home /mnt/204
- 使用新的半 RAID 重新啟動
您必須
/etc/mdadm/mdadm.conf
使用新數組進行更新。使用此命令並添加任何尚未列出的內容mdadm --examine --scan
您還需要更新
grub
,也許您的initramfs
,以便它可以找到新的根文件系統。你沒有在你的設置中給出這些細節,所以我不能給你指示。 6. 將鏡像的剩餘一半添加回 RAID當您完全確定您在新的半鏡像 RAID 上成功執行時,您可以銷毀原來的一半並將其添加回新的半鏡像。如果您仍然掛載文件系統,這些命令將失敗。(在這個階段他們不應該。)
mdadm --stop /dev/md103 mdadm --zero-superblock ${d1}p3 mdadm --stop /dev/md104 mdadm --zero-superblock ${d1}p4
現在使用上述命令調整剩餘磁碟分區的大小
parted
。將新調整大小的分區添加到新的半鏡像 RAID1
mdadm /dev/md203 --add ${d1}p3 mdadm /dev/md204 --add ${d1}p4
- 整理
/etc/mdadm/mdadm.conf
從、grub
和initramfs
、 和中刪除舊設備/etc/fstab
。重啟。