computerの日記

Cisco,SHELL,C,Qt,C++,Linux,ネットワーク,Windows Scriptなどの発言です

Linux で既存のソフトウェアRAID 5 の領域を増やす方法

Linux で既存のソフトウェアRAID 5 の領域を増やす方法

お疲れさまです。

Linux でソフトウェア RAID 5 を設定する方法について勉強したんですが。
今回は、既存のソフトウェア RAID 5 ストレージ容量を増やす方法を学びましょう。

さて問題は、なぜソフトウェア RAID 5 のストレージ容量を増やす必要があり、そのやり方はというところです。

さて、実際に前回ソフトウェア RAID 5 で作成しているストレージアレイの容量を増やすのはどうしたらいいのか、まずは、では、以下実際にやっていきましょう。

前回の設定で使用したマシンを使用します。
以下からわかる様に、RAID 5 パーティションサイズは 17.17 GB です。
RAIDバイスは、3 です。

As you can see below my RAID 5 Partition Size is 2.17 GB.
RAID devices are 3 (Highlighted in Red color).

========
# mdadm --detail /dev/md0 # RAID 5パーティションの詳細を確認します。

/dev/md0:
Version : 1.2
Creation Time : Sun Jun 18 05:43:07 2017
Raid Level : raid5
Array Size : 16766976 (15.99 GiB 17.17 GB)
Used Dev Size : 8383488 (8.00 GiB 8.58 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent

Update Time : Thu Jul 13 01:37:09 2017
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 09a7208f:869034d1:056672cf:238f70d1
Events : 44

Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
3 8 81 2 active sync /dev/sdf1
================
RAIDバイスの詳細は、/proc/mdstat でも確認できます。
================
# cat /proc/mdstat # RAID 5バイスの詳細です

Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[0] sdf1[3] sdd1[1]
16766976 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
================
このシステムでは以下のように、RAID 5バイスは、/data-md0 ディレクトリにマウントされています。
================
# df -h # マウントデバイスをチェックします。

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 2.9T 1.7G 2.9T 1% /
devtmpfs 910M 0 910M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.4M 912M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/md0 16G 33M 16G 1% /data-md0
/dev/sda2 1014M 174M 841M 18% /boot
/dev/sda1 200M 9.5M 191M 5% /boot/efi
tmpfs 184M 0 184M 0% /run/user/0
================
では、ソフトウェア RAID 5 のストレージ容量を、ハードディスクを追加することにより増やしてみましょう。
新しいハードディスクを、/dev/sdg として用意しました。
================
# fdisk -l | grep /dev/sdg
Disk /dev/sdg: 8589 MB, 8589934592 bytes, 16777216 sectors
================
では、/dev/sdg に新しいパーティションを作成し、パーティション ID を、RAID 5 、すなわち、fd にしていきます。
================
# fdisk /dev/sdg # Creating a New partition

n
p
Enter
Enter
t
fd
w
================
Linux システムにおいては、新しいパーティションを作成したら、システムを再起動してカーネルにおいてその情報をリフレッシュする必要がありますが、partprobe コマンドを使用することによりパーティションテーブルをカーネルにおいてリフレッシュできます。
================
# partprobe /dev/sdg # パーティションテーブルをリフレッシュする。
================
ということで、パーティション情報を確認すると、/dev/sdg1 は既存のソフトウェア RAID 5 パーティションに接続できる準備ができていることがわかります。
================
# fdisk -l | grep /dev/sdg
Disk /dev/sdg: 8589 MB, 8589934592 bytes, 16777216 sectors
/dev/sdg1 2048 16777215 8387584 fd Linux raid autodetect
================
新しいハードディスクを既存の RAID 5バイスに追加するには、以下のコマンドを実行します。
================
# mdadm --manage /dev/md0 --add /dev/sdg1 # 既存の RAID 5バイスに新しいハードディスクを追加する
mdadm: added /dev/sdg1

上記コマンドのうち:

/dev/md0 – 既存の RAID 5 パーティション
/dev/sdg1 – 新しく追加したパーティション
================
既存のソフトウェア RAID 5 パーティションに新しいハードディスクを追加しましたので、詳細について以下のコマンドにより確認します。
以下の表示のように、新しいハードディスク /dev/sdg1 が追加されました。
しかしながら、RAID 5バイスはまだスペアの状態です。容量は、まだ増えていません。
================
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jun 18 05:43:07 2017
Raid Level : raid5
Array Size : 16766976 (15.99 GiB 17.17 GB)
Used Dev Size : 8383488 (8.00 GiB 8.58 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Thu Jul 13 02:45:54 2017
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 512K

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 09a7208f:869034d1:056672cf:238f70d1
Events : 45

Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
3 8 81 2 active sync /dev/sdf1

4 8 97 - spare /dev/sdg1
================
/proc/mdstat コマンドにより、RAID 5バイスの状態を簡単に確かめることができます。
================
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdg1[4](S) sdf1[3] sdc1[0] sdd1[1]
16766976 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

上記表示のうち :

S – Spare デバイス
================
では、以下のコマンドにより、RAID 5 パーティションサイズを増やしましょう。
================
# mdadm --grow /dev/md0 -n4 # RAID 5バイスストレージの容量を増やす
================
さて、デバイスの状態をチェックしましょう。

以下の表示からわかるように、RAID 5バイスの が、そのリサイズを新しく追加されたハードディスクを含み Reshape されています。
Reshape ステータスは、57 % です。
以下のコマンドを実行した結果により、RAID 5バイスが増えていることがわかります。
================
# mdadm --detail /dev/md0

/dev/md0:
Version : 1.2
Creation Time : Sun Jun 18 05:43:07 2017
Raid Level : raid5
Array Size : 16766976 (15.99 GiB 17.17 GB)
Used Dev Size : 8383488 (8.00 GiB 8.58 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Thu Jul 13 02:58:07 2017
State : clean, reshaping
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Reshape Status : 57% complete
Delta Devices : 1, (3->4)

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 09a7208f:869034d1:056672cf:238f70d1
Events : 69

Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
3 8 81 2 active sync /dev/sdf1
4 8 97 3 active sync /dev/sdg1
================
もう一度上記コマンドを実行すると、ソフトウェア RAID 5バイスは、25.75 GB に増加し、RAID 5バイスの数は、4 になりました。
================
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jun 18 05:43:07 2017
Raid Level : raid5
Array Size : 25150464 (23.99 GiB 25.75 GB)
Used Dev Size : 8383488 (8.00 GiB 8.58 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Thu Jul 13 02:58:36 2017
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 09a7208f:869034d1:056672cf:238f70d1
Events : 73

Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
3 8 81 2 active sync /dev/sdf1
4 8 97 3 active sync /dev/sdg1
================
このシステムの RAID 5バイスは増加しましたが、df -h コマンドを実行してみると、元のサイズのままで増加してません。
これは、カーネルRAID 5バイスサイズが増加したことを、resize2fs コマンドにより通知する必要があります。
================
# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 2.9T 1.7G 2.9T 1% /
devtmpfs 910M 0 910M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.4M 912M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda2 1014M 174M 841M 18% /boot
/dev/md0 16G 33M 16G 1% /data-md0
/dev/sda1 200M 9.5M 191M 5% /boot/efi
tmpfs 184M 0 184M 0% /run/user/0
================
したがって、次のコマンドを実行して、カーネルにリサイズした RAID 5バイスと、マウントポイントを通知しましょう。
================
# resize2fs /dev/md0
resize2fs 1.42.9 (28-Dec-2013)
Couldn't find valid filesystem superblock.

おっと、このシステムのファイルシステムが xfs だったのを忘れていました。
以下のコマンドでやり直します。

# xfs_growfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=262016 blks
...(snip)...
data blocks changed from 4191744 to 6287616
================
上記プロセスののち、RAID 5 の容量がリサイズされます。以下の表示を見てください。
================
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 2.9T 1.7G 2.9T 1% /
devtmpfs 910M 0 910M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.4M 912M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda2 1014M 174M 841M 18% /boot
/dev/md0 24G 33M 24G 1% /data-md0
/dev/sda1 200M 9.5M 191M 5% /boot/efi
tmpfs 184M 0 184M 0% /run/user/0
================
全ての設定を終えたら、/etc/mdadm.conf に設定を保存するのを忘れないようにしなければいけません。
以下のコマンドを実行します。
================
# mdadm --detail --scan --verbose >> /etc/mdadm.conf
================
注意:RAID 設定を保存するのは必須です。設定を保存しないでシステムを再起動するとRAIDバイスを見つけられない可能性があります。

設定を保存したら、設定を以下のコマンドで確認します。
================
# cat /etc/mdadm.conf
ARRAY /dev/md/0 level=raid5 num-devices=4 metadata=1.2 name=localhost.localdomain:0 UUID=09a7208f:869034d1:056672cf:238f70d1
devices=/dev/sdc1,/dev/sdd1,/dev/sdf1,/dev/sdg1
================
お疲れさまです。今回の実験を終了します。

次回をお楽しみに。