Lvm

收縮包含 LVM 的 MDADM Raid 5

  • May 19, 2019

計劃:

多年來,我一直在個人伺服器中開發 Raid5 陣列,現在是時候轉向更適合此應用程序的東西了。我已經積累了 6 個 8tb 驅動器,其中包含媒體、備份等。

我買了一個 Synology 8 托架設備來容納我所有的驅動器,但現在我正試圖將數據移動到其中,這就是麻煩開始的地方……

我買了一台額外的 8tb 設備,我的 Raid5 中的一台設備出現故障,然後用這兩個設備在 Synology 上創建了一個 Raid1 卷。Synology 允許在添加另一個驅動器(或 5 個)時將 Raid1 升級到 Raid5。我已經將 8tb 的數據轉移到了這個新驅動器,並使用了我放置的每一點儲存空間,從原來的 40tb Raid 卷中清除了總共 16tb 的空間。

現在的計劃是將原始卷減少到 24tb,將 Raid5 重塑為 3+2 Raid6,使額外的兩個驅動器失效並將它們添加到 Synology,然後移動大部分剩餘空間。Rince 重複,所有數據都應該是交叉的。

到目前為止的步驟:

/dev/md127 掛載在 /srv/media 上,並在 LVM 中包含 vg_data/lv_media。首先,解除安裝卷。

umount /srv/media

在繼續之前確保 fs 是健康的

e2fsck -ff /dev/vg_data/lv_media

將 LVM 中的邏輯卷減少可用量 (16tb)

lvreduce -L -16t -r -v vg_data/lv_media

檢查 LVM 創建段的位置(這些年來我已經分配了它們,lv_media 不再是連續的)

pvs -v --segments /dev/md127

一些段接近物理卷的末端,中間有空閒空間的間隙。手動將尾隨段移動到更靠近驅動器開頭的間隙。這可能涉及拆分段或創建新段,但在我的情況下,我只需移動一個段以釋放足夠的空間。

pvmove --alloc anywhere /dev/md127:4982784-5046783 /dev/md127:284672-348671

調整 LVM PV 的大小以釋放 RAID 上的空間。

pvresize -v --setphysicalvolumesize 24000g /dev/md127

縮小 RAID(在重塑之前)

mdadm --grow /dev/md127 --size=25769803776

這就是我卡住的地方。mdadm raid 拒絕承認/看到 LVM 現在正在使用更少的空間,並抱怨它無法將數組縮小到已經分配的空間之外:

mdadm:無法為 /dev/md127 設置設備大小:設備上沒有剩餘空間

知道如何安全地減小數組的大小嗎?

@frostschutz 你美!我不知道我是怎麼錯過的,但我上週一定讀了太多手冊頁!

mdadm --grow /dev/md127 --array-size=25769803776

這是一種臨時的、安全的、可逆的方式來檢查您的數據在大小更改後是否仍然完好無損。如果不是,則可以以相同的方式恢復大小而不影響數據。

e2fsck -ff /dev/mapper/vg_data-lv_media

這個檢查沒有錯誤地通過,所以我們可以開始了。看起來從 Raid5 到 Raid6 的更改引入了我的遷移不需要的額外複雜性,更改陣列形狀的最安全方法是在此過程中擁有額外的備用,所以我選擇了

mdadm --grow /dev/md127 -l5 -n4 --backup-file /srv/cache/raid.backup

備份文件在 SSD 上,希望對我們有所幫助。到目前為止一切順利,如果這個故事有一個幸福的結局,我會接受這個答案……

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