Partition

使用 mdadm 向後調整/重新排列 RAID1 的痛苦方式

  • November 26, 2018

在基於 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 設備空間添加到卷組中,為下一個分區創建卷,複製數據並為下一個分區重新啟動程序

引用自:https://serverfault.com/questions/941626