升級可見大小的磁碟時增加/調整 RAID
我最初使用每個磁碟只能定址 2TB 的控制器創建了一個軟體 RAID。這些磁碟是 3 TB 磁碟。它工作得很好,但只使用了每個磁碟的前 2TB。
我現在更改了控制器以查看完整的 3TB。因此,我也想
/dev/md0
使用最後的 1 TB。我努力了:
# mdadm --grow /dev/md0 --size=max mdadm: component size of /dev/md0 has been set to 2147479552K
但正如您所見,它只看到 2TB。如果我嘗試強迫它更高:
# mdadm --grow /dev/md0 --size=2147483648 mdadm: Cannot set device size for /dev/md0: No space left on device
所以不知何故,系統可以看到磁碟是 3TB (in
/proc/partitions
),但 RAID 不能將它們視為 3TB。mddm 詳細資訊:
# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Fri Mar 2 15:14:46 2012 Raid Level : raid6 Array Size : 38654631936 (36863.93 GiB 39582.34 GB) Used Dev Size : 2147479552 (2048.00 GiB 2199.02 GB) Raid Devices : 20 Total Devices : 21 Persistence : Superblock is persistent Update Time : Wed Apr 25 19:47:09 2012 State : active Active Devices : 20 Working Devices : 21 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 4096K Name : node5:1 UUID : 8603c3df:b740ba22:8c9c82fd:a18b3133 Events : 845 Number Major Minor RaidDevice State 20 65 32 0 active sync /dev/sds 1 65 64 1 active sync /dev/sdu 2 65 80 2 active sync /dev/sdv 3 65 96 3 active sync /dev/sdw 4 8 192 4 active sync /dev/sdm 5 8 32 5 active sync /dev/sdc 6 8 48 6 active sync /dev/sdd 7 8 64 7 active sync /dev/sde 8 8 80 8 active sync /dev/sdf 9 8 96 9 active sync /dev/sdg 10 8 112 10 active sync /dev/sdh 11 8 128 11 active sync /dev/sdi 12 8 144 12 active sync /dev/sdj 13 8 160 13 active sync /dev/sdk 14 8 176 14 active sync /dev/sdl 15 8 208 15 active sync /dev/sdn 16 8 224 16 active sync /dev/sdo 17 8 240 17 active sync /dev/sdp 18 65 0 18 active sync /dev/sdq 19 65 16 19 active sync /dev/sdr 21 65 48 - spare /dev/sdt
磁碟大小:
# cat /proc/partitions |grep 2930266584 8 48 2930266584 sdd 8 32 2930266584 sdc 8 112 2930266584 sdh 8 96 2930266584 sdg 8 80 2930266584 sdf 8 128 2930266584 sdi 8 176 2930266584 sdl 8 64 2930266584 sde 65 32 2930266584 sds 8 192 2930266584 sdm 8 144 2930266584 sdj 65 80 2930266584 sdv 8 224 2930266584 sdo 8 208 2930266584 sdn 8 160 2930266584 sdk 8 240 2930266584 sdp 65 0 2930266584 sdq 65 64 2930266584 sdu 65 16 2930266584 sdr 65 48 2930266584 sdt 65 96 2930266584 sdw
編輯:
# mdadm --version mdadm - v3.1.4 - 31st August 2010 # uname -a Linux lemaitre 3.2.0-0.bpo.1-amd64 #1 SMP Sat Feb 11 08:41:32 UTC 2012 x86_64 GNU/Linux
RAID6 使用完整磁碟(即沒有分區)
今天早上系統崩潰了。重新啟動後,系統沒有找到 RAID(這很糟糕)。所有磁碟都顯示為備用 (S):
cat /proc/mdstat Personalities : md0 : inactive sdr[20](S) sds[21](S) sdq[18](S) sdp[17](S) sdo[16](S) sdn[15](S) sdl[14](S) sdk[13](S) sdj[12](S) sdi[11](S) sdh[10](S) sdg[9](S) sdf[8](S) sde[7](S) sdd[6](S) sdc[5](S) sdm[4](S) sdv[3](S) sdu[2](S) sdt[1](S) 42949652460 blocks super 1.2
即使在這裡很明顯
mdadm
沒有找到 3 TB 大小。我跑了
mdadm --stop /dev/md0
。刪除了 /etc/mdadm/mdadm.conf 中的條目。Ranmdadm -A --scan --force
,這導致 RAID 上線並重建。
我在 /sys 周圍戳了一下,離答案更近了。
# cd /sys/block/md0/md # cat component_size 2147479552
這與我們之前看到的一致。但是這個:
# grep . dev-sd*/size dev-sdc/size:2147482623 dev-sdd/size:2147482623 dev-sde/size:2147482623 dev-sdf/size:2930265560 dev-sdg/size:2147482623 dev-sdh/size:2147482623 dev-sdi/size:2147482623 dev-sdj/size:2147482623 dev-sdk/size:2147482623 dev-sdl/size:2147483648 dev-sdm/size:2147482623 dev-sdn/size:2147482623 dev-sdo/size:2147482623 dev-sdp/size:2147482623 dev-sdq/size:2147482623 dev-sdr/size:2147482623 dev-sds/size:2147482623 dev-sdt/size:2147482623 dev-sdu/size:2147482623 dev-sdv/size:2147482623 dev-sdw/size:2930265560
似乎可以解釋為什麼 RAID 看到錯誤的大小:大多數驅動器顯示為 2TB,而已更換的 2 個驅動器顯示為 3TB。所有驅動器都是相同的型號,所以讓我們看看,如果我們可以改變感知大小:
# parallel echo 2930265560 \> ::: dev-sd*/size # grep . dev-sd*/size dev-sdc/size:2930265560 dev-sdd/size:2930265560 dev-sde/size:2930265560 dev-sdf/size:2930265560 dev-sdg/size:2930265560 dev-sdh/size:2930265560 dev-sdi/size:2930265560 dev-sdj/size:2930265560 dev-sdk/size:2930265560 dev-sdl/size:2930265560 dev-sdm/size:2930265560 dev-sdn/size:2930265560 dev-sdo/size:2930265560 dev-sdp/size:2930265560 dev-sdq/size:2930265560 dev-sdr/size:2930265560 dev-sds/size:2930265560 dev-sdt/size:2930265560 dev-sdu/size:2930265560 dev-sdv/size:2930265560 dev-sdw/size:2930265560
瞧。Component_size 仍然很小,但是:
# cat component_size 2147479552
也許它可以被 mdadm 改變:
# mdadm --grow /dev/md0 --size=max
不幸的是,這被鎖定
mdadm
,隨後對 /dev/md0 的訪問被阻止。訪問 component_size 也是如此:# cat component_size # This blocks
糟透了。但好的部分是在系統日誌中它說:
Apr 27 20:45:50 server kernel: [124731.725019] md0: detected capacity change from 39582343102464 to 54010589478912
/dev/md0 上的文件系統仍在執行。
重新啟動後,我不得不再次執行“mdadm –grow /dev/md0 –size=max”。然後等待
resync
完成。再次訪問 /dev/md0 被阻止。所以又一次重新啟動,xfs_growfs /dev/md0
然後調整大小完成。