mdadm 拒絕將第二個相同的磁碟添加到陣列
我有一個處於降級狀態的 RAID 1 陣列,並且想要向其添加另一個驅動器。
# mdadm --detail /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Mar 21 17:23:00 2014 Raid Level : raid1 Array Size : 488254464 (465.64 GiB 499.97 GB) Used Dev Size : 488254464 (465.64 GiB 499.97 GB) Raid Devices : 2 Total Devices : 1 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Tue Jun 9 00:10:04 2015 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 Name : mars:1 (local to host mars) UUID : 3458a3fd:a510d0a7:605d8cd5:9880c31e Events : 25816 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 2 0 0 2 removed
我正在嘗試使用與第一個相同的驅動器,格式相同以容納整個大小。但是,mdadm 拒絕添加它
# mdadm /dev/md1 --add /dev/sdc1 mdadm: /dev/sdc1 not large enough to join array
分開的輸出表明兩個驅動器具有不同的扇區大小,但我不確定那是什麼以及是否可以糾正。如果不能,我有什麼選擇?
# parted /dev/sdb unit s print Model: ATA SAMSUNG HD502HJ (scsi) Disk /dev/sdb: 976773168s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2048s 976773119s 976771072s primary ext4 raid, type=fd # parted /dev/sdc unit s print Model: ATA SAMSUNG HD502HJ (scsi) Disk /dev/sdc: 976771055s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2048s 976769023s 976766976s primary raid, type=fd
您的新磁碟比現有磁碟小 1MB 多一點。這可能是不同的型號(儘管具有相同的標識,但可能是在不同的工廠製造的,規格略有不同),或者在工廠測試期間可能發現了更多的缺陷扇區。
在 上
sdb
,您有一個sdb1
跨越整個磁碟的分區,減去 1 個 MBR 扇區加上未使用的扇區以將分區對齊為 1MB(為了提高性能,建議這樣做)。數組跨越整個分區;它的大小是分區大小減去128MB,也就是reshape area。976771055 個扇區的大小
sdc
比數組 976771072 個扇區的大小小 17 個扇區。因此,您無法將陣列安裝在新磁碟上。您可以使用相同的數據和更小的重塑區域創建一個數組。由於它幾乎適合,只需從 128MB 中減少 2MB 就足夠了。我認為不可能在現有陣列上調整重塑區域的大小,因此您必須備份它,創建一個新的,然後恢復數據。
我要做的是將陣列上的一個分區縮小 2MB。
無論如何,在我看來,最簡單的解決方案是創建一個新的 RAID-1 陣列,
sdc1
並將其作為唯一的活動卷。如果您想保持陣列上分區的大小,請傳遞--data-offset=126M
以創建一個重塑區域,以使其全部適合。更好的是,創建一個跨越整個分區減去幾 MB 的數組作為安全邊際,以防此問題再次發生。然後將舊數組中的所有數據複製到新數組中。如果要縮小區域,請為要縮小的分區執行文件副本而不是分區副本,或者(如果您有多個分區)先執行該分區,然後再縮小它。最後擦除數組sdb1
,然後添加sdb1
到新數組。或者,縮小現有數組的內容,使最後 2MB(至少)不分配給任何分區,然後用於
mdadm /dev/md1 --grow --size=…
縮小現有數組。
9767 6 6976 from
/dev/sdb
小於 9767 7 1072 from/dev/sdc
。這不是一個相同的驅動器。