Raid

媽媽;以前工作;“失敗”後,由於磁碟大小無法加入陣列

  • October 26, 2013

抽象的

我有一個功能正常的 Raid 5 陣列,我重新啟動了盒子,然後 mdadm 無法重新組裝一個元件。

看到它只是一個部分,我認為重新同步很容易。但事實證明這不起作用,因為顯然現在設備不夠大,無法加入陣列!?

初始突襲設置

可悲的是相當複雜。我有一個 Raid 5,它結合了兩個 3 TB 磁碟和兩個線性 RAID(由 1tb+2tb 組成)。我沒有對磁碟進行分區,也就是說,raid 跨越物理磁碟。事後看來,這可能是導致最初失敗的原因。

命運重啟後

mdadm 將拒絕組裝其中一個線性陣列,聲稱不存在超級塊(使用 mdadm –examine 檢查兩者都沒有返回任何內容)。更奇怪的是,顯然他們仍然有一些分區表。

在這一點上,我認為最快的解決方案是重新創建線性陣列,將其添加到更大的 raid5 陣列,然後重新同步。因此,我選擇只刪除那些分區表條目,即:將它們分區到空閒空間。然後我創建了一個跨越兩個磁碟的線性陣列。

# mdadm --create /dev/md2 --level=linear --raid-devices=2 /dev/sda /dev/sdc

但是,當嘗試將它們添加回數組時,我得到

# mdadm --add /dev/md0 /dev/md2        
mdadm: /dev/md2 not large enough to join array

所以我正確地猜測磁碟縮小了嗎?

計數塊

我想是時候進行一些塊計數了!

線性陣列的兩個組成部分:

RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096          0   1000204886016   /dev/sda
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096          0   2000398934016   /dev/sdc

如果 mdadm 的線性模式沒有成本,則兩種大小的總和將大於 3tb 驅動器之一 (3000592982016)。但事實並非如此:

/proc/mdstat 報告線性數組的大小為 2930015024,比要求的少 120016

# mdadm --detail /dev/md0 | grep Dev\ Size
Used Dev Size : 2930135040 (2794.39 GiB 3000.46 GB)

但這……太可惡了!在重新啟動之前(儘管是更早的化身),這個線性陣列是更大陣列的一部分!

我相信的事情發生了

重新啟動後,mdadm 發現陣列的一部分失去。由於它是最小的成員,因此陣列設備的大小會自動增長以填充下一個最小的設備。

但這聽起來不像呃,明智的行為,不是嗎?

另一種選擇是,由於某種原因,我不再創建最大尺寸的線性突襲,但是……這也有點荒謬。

我一直在思考要做的事情

縮小退化的陣列以排除“損壞”的線性陣列,然後再次嘗試 –add 和 –grow。但恐怕實際上並沒有改變設備大小。

由於我不明白到底出了什麼問題,我寧願先了解是什麼導致了這個問題,然後再匆忙做任何事情。

所以呃……我猜……嗯……磁碟……縮小了?

預設情況下,元數據的區域mdadm儲備可能會增加……我最近遇到了一些案例,mdadm無緣無故浪費了高達 128MiB。您要檢查mdadm --examine /dev/device*條目data offset。理想情況下,它應該不超過 2048 個扇區。

如果這確實是問題所在,您可以mdadm --create--data-offset=參數一起使用以mdadm減少元數據的浪費空間。

如果這仍然不夠,您必須嘗試使用舊0.90元數據(這可能是最節省空間的,因為它不使用此類偏移),或者稍微縮小 RAID 的另一端(記得縮小LV /文件系統優先)。

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