SoftwareRaidの容量拡張

たまにはこういうのも書かないとね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組んだ人ならこれでわかると思います。

コメント

タイトルとURLをコピーしました