【mdadm】raid5 にHDDを追加メモ【raid5】

はじめに

サブマシンに HDD を追加したので、raid5 のアレイ拡張メモします。

RAID5 アレイの拡張

増設したHDDを確認します。

$ sudo fdisk -l
Disk /dev/sda: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: ST4000DM004-2CV1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: C233DCD0-446C-40E9-9F7B-8DD34FF782E7

Device     Start        End    Sectors  Size Type
/dev/sda1   2048 7812499455 7812497408  3.6T Linux RAID

(省略)

Disk /dev/sdg: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: ST4000DM004-2CV1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/md0: 29.1 TiB, 31998907252736 bytes, 62497865728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 524288 bytes / 4194304 bytes
Disklabel type: gpt
Disk identifier: 819610BF-44DB-49C3-A506-0A1F8635F219

Device     Start         End     Sectors  Size Type
/dev/md0p1  2048 54685630463 54685628416 25.5T Linux filesystem

/dev/sdg が追加したHDDのようです。

追加HDDにGPTパーティションテーブルを作成する

1,parted を使って対話型シェルで設定します。

// parted 起動
$ sudo parted /dev/sdg

2,GPTテーブルを作成します。

(parted) mklabel gpt

3,設定しやすいように単位をGBに変更します。

昔はセクタ数で設定していましたが、覚えきれないので GB で設定するようにしました。

(parted) unit GB

4,パーティションを作成します。

先頭から 4000GB までのパーティションを作りました。端数は使用しません。

(parted) mkpart primary 0 4000GB

5,RAIDパーティションとしてマークします。

パーティション1に raid フラグを設定します。

(parted) set 1 raid on

6,確認します。

綺麗に 4000GB パーティション作られ、RAID フラグが立っています。

(parted) print
Disk /dev/sdg: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      0.00GB  4000GB  4000GB               primary  raid

7,parted から抜けます。

(parted) quit

fdisk で確認
問題なさそうです。

$ sudo fdisk -l

Disk /dev/sdg: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: ST4000DM004-2CV1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 74CD63D0-F6C7-4BCF-84E3-E185563A5262

Device     Start        End    Sectors  Size Type
/dev/sdg1   2048 7812499455 7812497408  3.6T Linux RAID

RAIDアレイに追加する

raid5 は /dev/md0 です。
mdadm で sdg を追加していきます。

$ sudo mdadm --add /dev/md0 /dev/sdg
mdadm: added /dev/sdg

確認してみる

$ cat /proc/mdstat
mdadm: added /dev/sdg
fukuisi@io:~$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid5 sdg[10](S) sda1[0] sdd1[3] sdb1[1] sdc1[2] sdj1[6] sdi1[5] sdh1[9] sdf1[8] sde1[4]
      31248932864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [9/9] [UUUUUUUUU]
      bitmap: 2/30 pages [8KB], 65536KB chunk

unused devices: <none>

sdg[10](S) が追加したHDDになります。
この時点ではスペア扱いなので(S) がついてます。
この場合、raid5 の他のドライブが壊れた時、スペアの sdg[10](S) が自動で組み込まれますが、
今回は raid5 拡張するので、アクティブにします。

RAID ドライブ数を増やし、アクティブにします。
9台だったものを 10台に増加する。
mdadm コマンドのオプション –raid-disks で台数を増やします。

$ sudo mdadm --grow /dev/md0 --raid-disks=10

確認します。

$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid5 sdg[10] sda1[0] sdd1[3] sdb1[1] sdc1[2] sdj1[6] sdi1[5] sdh1[9] sdf1[8] sde1[4]
      31248932864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [10/10] [UUUUUUUUUU]
      [>....................]  reshape =  0.0% (634452/3906116608) finish=2462.2min speed=26435K/sec
      bitmap: 2/30 pages [8KB], 65536KB chunk

unused devices: <none>

sdg[10] が組み込まれ が再構築状態 reshape になります。
後は終わるまで待つだけです。1.5日位ですかね。

watch をつけてリアルタイムで確認もできます。

$ watch cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid5 sdg[10] sda1[0] sdd1[3] sdb1[1] sdc1[2] sdj1[6] sdi1[5] sdh1[9] sdf1[8] sde1[4]
      31248932864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [10/10] [UUUUUUUUUU]
      [>....................]  reshape =  0.0% (634452/3906116608) finish=2462.2min speed=26435K/sec
      bitmap: 2/30 pages [8KB], 65536KB chunk

unused devices: <none>

reshape が終わるまで容量が増えたように見えません。
気長に待ちましょう。

$ sudo fdisk -l
Disk /dev/md0: 29.1 TiB, 31998907252736 bytes, 62497865728 sectors ←増えてない
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 524288 bytes / 4194304 bytes
Disklabel type: gpt
Disk identifier: 819610BF-44DB-49C3-A506-0A1F8635F219

Device     Start         End     Sectors  Size Type
/dev/md0p1  2048 54685630463 54685628416 25.5T Linux filesystem
The primary GPT table is corrupt, but the backup appears OK, so that will be used.

ToDo:
終わったらメインサーバーのバックアップをこのサブサーバーに取る予定。
rsync 以外の簡単にバックアップできる方法を探してみます。