たまにはこういうのも書かないとねw
まず前提として
- 対象は/dev/sdcと/dev/sddで構成された/dev/md127のRAID1
- sdcは4TB、sddは3TBでRAID1は3TBで作ってあった。今回故障して新調したsddは4TBなので、使っていなかったsdcの残り1TBを追加して4TBにしたい。
- 共にsdc1、sdd1の単一のパーティションしかもっていない。
- 中身を維持したまま拡張したい。
こんな感じで始めてみます。
応用すれば故障していないのでもディスクとっかえひっかえして容量増やすことが出来ます。RAID5も同じようやり方だったと記憶してますが、やる人は各自追加で調べてください。
何かミスしたり、バージョンとかの違いとかで間違えて飛ばしちゃっても私は知りません。自己責任で慎重にやってください。少なくともバックアップとってから作業してください。私はとってなかったけどw
まず故障したのを何とかしないと
まず壊れたのを捨てます。
# mdadm /dev/md127 --fail /dev/sdd1 --remove /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md127
mdadm: hot removed /dev/sdd1 from /dev/md127
はい外れました。
電源を落として物理的に交換します。
次に新しいのを付けて最大容量のパーティションを作ったらmd127に追加します。
# mdadm -a /dev/md127 /dev/sdd1
mdadm: re-added /dev/sdd1
同期が始まるので、寝たりゲームしてしばらく待ってください。
# cat /proc/mdstat
中略
md127 : active raid1 sdc1[1] sdd1[2]
2930133440 blocks super 1.2 [2/2] [UU]
bitmap: 0/22 pages [0KB], 65536KB chunk
こんなふうに[UU]ってなったら完了です。[U_]だと完了していないので、必ず終わるまで待ってください。
いよいよパーティション拡張
簡単です。
拡張したい側をRAID1から外します。
# mdadm /dev/md127 --fail /dev/sdc1 --remove /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md127
mdadm: hot removed /dev/sdc1 from /dev/md127
外れました。
パーティション広げましょう
# parted /dev/sdc
(parted) print free
モデル: ATA WDC WD40EZAX-00C (scsi)
ディスク /dev/sdc: 4001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
17.4kB 1049kB 1031kB 空き容量
1 1049kB 3001GB 3001GB
3001GB 4001GB 1000GB 空き容量
うちの場合、こんな風にお尻に約1TBの空きがある状態ですので、これを無駄なく使います。
(parted) unit s
(parted) print free
モデル: ATA WDC WD40EZAX-00C (scsi)
ディスク /dev/sdc: 7814037168s
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
34s 2047s 2014s 空き容量
1 2048s 5860533134s 5860531087s
5860533135s 7814037134s 1953504000s 空き容量
わかりやすいようにセクタモードにして作業します。今回は全量の7814037134sまで広げちゃいます。
(parted) resizepart 1
終了? [5860533134s]? 7814037134s
(parted) print free
モデル: ATA WDC WD40EZAX-00C (scsi)
ディスク /dev/sdc: 7814037168s
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
34s 2047s 2014s 空き容量
1 2048s 7814037134s 7814035087s
こんな感じで広がりました。あとは、再びRAID1に組み込みます。
# mdadm -a /dev/md127 /dev/sdc1
mdadm: re-added /dev/sdc1
一応同期されているか確認してみます。
# cat /proc/mdstat
中略
md127 : active raid1 sdc1[0] sdd1[2]
2930133440 blocks super 1.2 [2/2] [UU]
bitmap: 0/22 pages [0KB], 65536KB chunk
[UU]ですね。
でもこの状態だとRAIDが領域を認識していないので、容量は拡張されていません。
# mdadm -D /dev/md127 | grep -e "Arry Size" -e "Dev Size"
Used Dev Size : 2930133440 (2794.39 GiB 3000.46 GB)
ほら。
なので、RAIDに認識させます。
# mdadm --grow /dev/md127 -z max
mdadm: component size of /dev/md127 has been set to 3906885447K
# mdadm -D /dev/md127 | grep -e "Arry Size" -e "Dev Size"
Used Dev Size : 3906885447 (3725.90 GiB 4000.65 GB)
# cat /proc/mdstat
中略
md127 : active raid1 sdc1[0] sdd1[2]
3906885447 blocks super 1.2 [2/2] [UU]
[================>....] resync = 84.0% (3282232768/3906885447) finish=85.7min speed=121346K/sec
bitmap: 3/15 pages [12KB], 131072KB chunk
こんな感じでUsed Dev Sizeが拡張されていて、再同期が始まれば、同期完了を待って完成です。
かなり雑な書き方ですが、RAID組んだ人ならこれでわかると思います。
コメント