使用 mdadm 向後調整/重新排列 RAID1 的痛苦方式
在基於 Debian 的兩磁碟 RAID1 (mdadm) 伺服器(不涉及 LVM)中得到以下場景:
分區(鏡像 /dev/sdb 相同):
未分配的空間(以前是 Windows 的 /dev/sda1)。
/dev/sda2 linux-raid /dev/md0 (/)
/dev/sda3擴展:
- /dev/sda5 linux-raid /dev/md1(交換)
- /dev/sda6 linux-raid /dev/md2 (/home)
- /dev/sda7 linux-raid /dev/md3 (/usr/local/share/data)
理想情況下,為了磁碟空間,我想實現:
/dev/sda1 linux-raid /dev/md0 (/)。
/dev/sda2 linux-raid /dev/md1 (/home)
/dev/sda3擴展:
- /dev/sda5 linux-raid /dev/md2(交換)
- /dev/sda6 linux-raid /dev/md3 (/usr/local/share/data)
遵循(乍一看)更簡單的方法,我也願意嘗試:
/dev/sda1 linux-raid /dev/md0 (/) (希望mdadm –grow /dev/md0 –size=max命令能夠自動照顧之前佔用的未使用空間)
/dev/sda3擴展:
- /dev/sda5 linux-raid /dev/md1(交換)
- /dev/sda6 linux-raid /dev/md2 (/home)
- /dev/sda7 linux-raid /dev/md3 (/usr/local/share/data)
我認為所有這些都必須離線完成(即通過實時發行版)。
我不確定(關於第一種方法)是我是否必須首先完全關閉 RAID1 陣列,然後逐個硬拷貝分區,然後重新創建 RAID1,或者還有另一種更簡單的方法。
我想知道您對這兩種/其他方法的經驗/建議。
(幾乎)應該可以進行實時遷移,前提是您不需要調整捲的大小。
在 /dev/sd 上創建一個新的 md$$ ab $$1:
mdadm --create device=servername:root --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
在這個 md 上同步你的 /
mount /dev/md/root /mnt/target
mount /dev/md0 /mnt/source
rsync -avr /mnt/source /mnt/target
chroot new root 編輯 fstab 並重新安裝引導載入程序:
mount -t proc /mnt/target/proc
mount -t sysfs /mnt/target/sys
mount -t udev /mnt/target/dev
chroot /mnt/target
- $$ edit fstab with new root device $$
- $$ reinstall bootloader $$
重新啟動系統(並祈禱你沒有忘記任何事情)
重新啟動後,您應該在新的根 md 設備上(檢查 /proc/mounts),然後您只需重複該過程即可將 /dev/md0 分區用於 /home 掛載點。
至於合併sd
$$ ab $$6 和 sd$$ ab $$7,那麼這將取決於您在其他分區上有多少可用空間,因為您需要刪除並重新創建它們。 就我個人而言,我建議利用這個機會遷移到基於 LVM 的系統: * 創建新 md * 在 md 上創建新 VolumeGroup * 在 VG 上創建新卷“root” * 繼續前面的步驟。
然後逐步將釋放的 md 設備空間添加到卷組中,為下一個分區創建卷,複製數據並為下一個分區重新啟動程序