Linux

硬體 RAID 陣列擴展後 fdisk 不允許我使用其他可用扇區

  • February 20, 2017

我們在戴爾 R720xd 上有一個約 18TB 的大型硬體 RAID 陣列。目前 RAID5 陣列由 6x4TB 組成,我需要對其進行擴展。

步驟 1 展開硬體 RAID 陣列。

如果您安裝了戴爾管理工具,就足夠簡單了。

omconfig storage vdisk action=reconfigure controller=0 vdisk=1 raid=r5 pdisk=0:1:0,0:1:1,0:1:3,0:1:3,0:1:4,0:1:5,0:1:8,0:1:9

(新磁碟是最後兩個,可以使用該omreport工具確認)雖然需要一段時間,但一切都很好,我能夠確認陣列已擴展..

% omreport storage vdisk controller=0 vdisk=1

Virtual Disk 1 on Controller PERC H710P Mini (Embedded)

Controller PERC H710P Mini (Embedded)
ID                                : 1
Status                            : Ok
Name                              : bak
State                             : Ready
Hot Spare Policy violated         : Not Assigned
Encrypted                         : No
Layout                            : RAID-5
Size                              : 26,078.50 GB (28001576157184 bytes)
...
Device Name                       : /dev/sdb
...

Step 2 新建分區

因此,虛擬磁碟現在報告增加的 (26TB) 大小。並且fdisk同意…

Disk /dev/sdb: 25.5 TiB, 28001576157184 bytes, 54690578432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A2D20632-37D1-4607-9AA0-B0ED6E457F91

Device     Start         End     Sectors  Size Type
/dev/sdb1   2048 39064698846 39064696799 18.2T Linux LVM

但是,當我去向磁碟添加一個額外的分區時,會發生以下情況……

Command (m for help): n
Partition number (2-128, default 2): 2
First sector (34-2047): 

我現在磁碟上有大約 160 億個扇區,但我無法使用它們。我只提供扇區 34-2047。即使我目前只設置了一個分區,我也無法分配 8TB 的新空間。

讓我感到奇怪的另一件事是,我得到的分區號是 2-128,而不僅僅是 2-4。分區表沒有顯示任何擴展分區,所以我預計最初會將我限制為 4 個分區。

有什麼我想念的嗎?

  • 擴展驅動器陣列後,機器已重新啟動。在此之前 fdisk 只會報告原始的 18TB
  • 嘗試cfdisk僅報告 390 億範圍內的 2015 年可用扇區,儘管總體報告為 25TB。
  • 如果可以避免,我們不想刪除並重新創建分區,因為我們可能會失去所有數據。我們更喜歡在完成後使用新分區簡單地擴展 LVM 卷組。
  • 它與另一個伺服器故障問題類似,但我不受分區用完的限制,我不認為我受到擴展分區的限制。
  • 它不是由驅動器擴展來擴展扇區大小。如果是 fdisk 就不會報告扇區數的增加,我會想到。另外pvs並且vgs沒有在 LVM 下報告任何額外的未分配空間
  • 我在虛擬機上將其作為空執行執行,但沒有遇到這種情況。但是我正在關閉虛擬機並增加其磁碟設備大小。所以在大小增加期間它不線上。此外,對於 vm,驅動器大小要小許多數量級。

更新 Micheal 請求的 1 ‘x’pert 模式輸出…

Command (m for help): x

Expert command (m for help): p
Disk /dev/sdb: 25.5 TiB, 28001576157184 bytes, 54690578432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A2D20632-37D1-4607-9AA0-B0ED6E457F91
First LBA: 34
Last LBA: 39064698846
Alternative LBA: 39064698879
Partitions entries LBA: 2
Allocated partition entries: 128

Device     Start         End     Sectors Type-UUID                            UUID                                 Name      Attrs
/dev/sdb1   2048 39064698846 39064696799 E6D6D379-F507-44C2-A23C-238F2A3DF928 E9CB58BF-F170-4480-A230-6E2A238367D1 Linux LVM 


Expert command (m for help): v
MyLBA mismatch with real position at backup header.
1 error detected.

那麼可能的 LBA 錯誤?

問題是備份分區表的位置。通常,您希望主分區表位於開始,備份分區表位於末尾。磁碟大小調整使更多扇區可用,但從未移動備份表。fdisk 不喜歡這樣,我相信這是MyLBA mismatch with real position at backup header.錯誤消息。不是很清楚。

我從 to 切換fdiskgdisk,輸出有點不同。在 gdisk 你有…

r       recovery and transformation options (experts only)

進入並執行verify 給出了更有用的錯誤消息……

Recovery/transformation command (? for help): v

Problem: The secondary header's self-pointer indicates that it doesn't reside
at the end of the disk. If you've added a disk to a RAID array, use the 'e'
option on the experts' menu to adjust the secondary header's and partition
table's locations.

Identified 1 problems!

gdisk專家模式下,有以下選項…

e       relocate backup data structures to the end of the disk

…成功執行,驗證輸出現在…

Expert command (? for help): v

No problems found. 15625881566 free sectors (7.3 TiB) available in 2
segments, the largest of which is 15625879552 (7.3 TiB) in size.

現在列印分區表顯示最後一個可用扇區為 560 億而不是 390 億,我能夠創建新分區並將其添加到 LVM 中,如果有人對此感興趣,步驟是……

partprobe           <-- add the /dev/sdb2 device if you don't want to reboot 
pvcreate /dev/sdb2
vgextend bak /dev/sdb2
lvextend /dev/mapper/bak-bak -l 100%PVS -r

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