RAID 0アレイの物理ボリューム数(スロット数)を減らすコマンドの例
「RAID 0」アレイの物理ボリューム数(スロット数)を減らすコマンドの例です。ここでは例として、アレイを構成する物理ボリュームの1つである「/dev/sdf1」をアレイから取り除き、物理ボリューム数を2つにします。
「RAID 0」アレイで物理ボリューム数を変更する場合、一旦「RAID 4」アレイに再形成後、物理ボリューム数を変更し、再度「RAID 0」アレイに再形成します。
環境について
以下のアレイを作成した環境でコマンドを実行しています。1.論理ボリュームの確認
比較のため現状の論理ボリュームの情報を確認します。物理ボリュームの数は3つです。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --detail /dev/md/RAID0Array
/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid0
Array Size : 307104 (299.96 MiB 314.47 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 17 20:46:03 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Name : vb-ubuntu1310:RAID0Array (local to host vb-ubuntu1310)
UUID : de76ac50:0c82738c:231d8309:aa27c990
Events : 0
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 8 81 2 active sync /dev/sdf1
/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid0
Array Size : 307104 (299.96 MiB 314.47 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 17 20:46:03 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Name : vb-ubuntu1310:RAID0Array (local to host vb-ubuntu1310)
UUID : de76ac50:0c82738c:231d8309:aa27c990
Events : 0
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 8 81 2 active sync /dev/sdf1
2.デバイスの情報
論理ボリュームを「GParted」で見ると、以下のようになっています。パーティションが1つあるということと、論理ボリュームの総セクタ数が「614208」であることが分かります。
3.パーティション(ファイルシステム)の情報
論理ボリューム上のパーティション(ファイルシステム)の情報を確認します。論理ボリューム上に1つパーティションを作成しています。
パーティションの「終了セクタ」は「612351」です。
物理ボリュームの数が1つ減るため、論理ボリュームの総セクター数は「409472」になります。
(307104 * 1024 / 512 / 3 * 2)
4.パーティション(ファイルシステム)の縮小
パーティション(ファイルシステム)の縮小を行います。余裕を見て少し小さめにしておくと良いでしょう。
5.パーティション(ファイルシステム)の縮小完了
パーティション(ファイルシステム)の縮小後のパーティションの情報を確認します。全体的に見ると以下のようになります。
パーティションの情報を見ると、以下のようになっています。
パーティションの「終了セクタ」が「407551」になっています。
6.論理ボリュームのサイズの縮小
物理ボリュームの数が1つ減るため、論理ボリュームのサイズは「204736KiB」になります。(307104 / 3 * 2)
以下のコマンドを実行し、論理ボリュームのサイズを「204736KiB」に縮小します。
コマンドやオプションの説明は「論理ボリュームのサイズを一時期に変更するコマンドの説明」を参考にしてください。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --grow /dev/md/RAID0Array --array-size=204736
ubuntu@vb-ubuntu1310:~$
ubuntu@vb-ubuntu1310:~$
7.論理ボリュームの確認
現状の論理ボリュームの情報を確認します。「Array Size」が、論理ボリュームのサイズです。
「204736KiB」になっています。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --detail /dev/md/RAID0Array
/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid0
Array Size : 204736 (199.97 MiB 209.65 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 17 20:46:03 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Name : vb-ubuntu1310:RAID0Array (local to host vb-ubuntu1310)
UUID : de76ac50:0c82738c:231d8309:aa27c990
Events : 0
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 8 81 2 active sync /dev/sdf1
/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid0
Array Size : 204736 (199.97 MiB 209.65 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 17 20:46:03 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Name : vb-ubuntu1310:RAID0Array (local to host vb-ubuntu1310)
UUID : de76ac50:0c82738c:231d8309:aa27c990
Events : 0
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 8 81 2 active sync /dev/sdf1
8.バックアップGPTデータの修復
パーティションテーブルの形式が「GPT」の場合、ここでバックアップGPTデータを修復します。ここでは例として、「gdisk」を利用してバックアップGPTデータを修復します。
ubuntu@vb-ubuntu1310:~$ sudo gdisk /dev/md/RAID0Array
GPT fdisk (gdisk) version 0.8.7
Warning! Disk size is smaller than the main header indicates! Loading
secondary header from the last sector of the disk! You should use 'v' to
verify disk integrity, and perhaps options on the experts' menu to repair
the disk.
Caution: invalid backup GPT header, but valid main header; regenerating
backup header from main header.
Warning! One or more CRCs don't match. You should repair the disk!
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: damaged
****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************
Command (? for help): r
Recovery/transformation command (? for help): e
Warning! This will probably do weird things if you've converted an MBR to
GPT form and haven't yet saved the GPT! Proceed? (Y/N): y
Recovery/transformation command (? for help): w
Caution! Secondary header was placed beyond the disk's limits! Moving the
header, but other problems may occur!
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/md/RAID0Array.
The operation has completed successfully.
GPT fdisk (gdisk) version 0.8.7
Warning! Disk size is smaller than the main header indicates! Loading
secondary header from the last sector of the disk! You should use 'v' to
verify disk integrity, and perhaps options on the experts' menu to repair
the disk.
Caution: invalid backup GPT header, but valid main header; regenerating
backup header from main header.
Warning! One or more CRCs don't match. You should repair the disk!
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: damaged
****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************
Command (? for help): r
Recovery/transformation command (? for help): e
Warning! This will probably do weird things if you've converted an MBR to
GPT form and haven't yet saved the GPT! Proceed? (Y/N): y
Recovery/transformation command (? for help): w
Caution! Secondary header was placed beyond the disk's limits! Moving the
header, but other problems may occur!
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/md/RAID0Array.
The operation has completed successfully.
念の為、チェックも行っておきます。
ubuntu@vb-ubuntu1310:~$ sudo gdisk /dev/md/RAID0Array
GPT fdisk (gdisk) version 0.8.7
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): v
No problems found. 3901 free sectors (1.9 MiB) available in 2
segments, the largest of which is 2014 (1007.0 KiB) in size.
GPT fdisk (gdisk) version 0.8.7
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): v
No problems found. 3901 free sectors (1.9 MiB) available in 2
segments, the largest of which is 2014 (1007.0 KiB) in size.
9.ディスクとパーティション(ファイルシステム)の情報
論理ボリュームの総セクター数を確認します。「総セクタ数」が「409472」になっていることが分かります。
パーティションが論理ボリュームの総セクター数以内に収まっていることが分かります。
またバックアップGPTデータ分の余裕もあります。
必要以上にパーティションを縮小し、後方に空き容量がある場合、ここでパーティションを拡大してもよいです。
ここまでの手順で、論理ボリューム上のパーティションやファイルシステムに問題がないか確認しておきます。
次の手順から実際に物理ボリュームの数を変更します。
10.RAID 4に再形成
以下のコマンドを実行し、「RAID 4」へ再形成します。コマンドやオプションの説明は「物理ボリューム数(スロット数)を変更するコマンドの説明」を参考にしてください。
sudo mdadm --grow /dev/md/RAID0Array --level=raid0 --raid-devices=2 --backup-file=/root/RAID0ArrayBackup.reshape
11.コマンドの実行結果
以下のようにコマンドの実行結果が表示されます。
ubuntu@vb-ubuntu1310:~$
sudo mdadm --grow /dev/md/RAID0Array --level=raid0 --raid-devices=2
--backup-file=/root/RAID0ArrayBackup.reshape
mdadm: level of /dev/md/RAID0Array changed to raid4
mdadm: Need to backup 192K of critical section..
mdadm: /dev/md/RAID0Array: could not set level to raid0
mdadm: level of /dev/md/RAID0Array changed to raid4
mdadm: Need to backup 192K of critical section..
mdadm: /dev/md/RAID0Array: could not set level to raid0
補足(2014/4/17)
「mdadm: /dev/md/RAID0Array: could not set level to raid0」と表示されているように、「RAID 4」アレイから「RAID 0」アレイへの再形成が失敗します。「RAID 4」アレイから「RAID 0」アレイへの再形成は、手動で行います。
12.論理ボリュームの確認
現状の論理ボリュームの情報を確認します。アレイの種類が「RAID 4」になっており、アレイの状態が「clean」になっています。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --detail /dev/md/RAID0Array/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid4
Array Size : 204736 (199.97 MiB 209.65 MB)
Used Dev Size : 102368 (99.99 MiB 104.82 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 17 21:08:16 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Name : vb-ubuntu1310:RAID0Array (local to host vb-ubuntu1310)
UUID : de76ac50:0c82738c:231d8309:aa27c990
Events : 27
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 8 81 2 active sync /dev/sdf1
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid4
Array Size : 204736 (199.97 MiB 209.65 MB)
Used Dev Size : 102368 (99.99 MiB 104.82 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Apr 17 21:08:16 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Name : vb-ubuntu1310:RAID0Array (local to host vb-ubuntu1310)
UUID : de76ac50:0c82738c:231d8309:aa27c990
Events : 27
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 8 81 2 active sync /dev/sdf1
13.アレイからパリティーディスクを取り除く
「RAID 4」アレイからパリティー用の物理ボリュームを取り除いたものが「RAID 0」アレイですから、パリティーディスクをアレイから取り除きます。以下のコマンドを実行し、「/dev/sdf1」を「フォルティーディスク」に設定します。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --fail /dev/md/RAID0Array /dev/sdf1
mdadm: set /dev/sdf1 faulty in /dev/md/RAID0Array
mdadm: set /dev/sdf1 faulty in /dev/md/RAID0Array
次に以下のコマンドを実行し、「/dev/sdf1」をアレイから取り除きます。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --remove /dev/md/RAID0Array /dev/sdf1
mdadm: hot removed /dev/sdf1 from /dev/md/RAID0Array
mdadm: hot removed /dev/sdf1 from /dev/md/RAID0Array
14.論理ボリュームの確認
現状の論理ボリュームの情報を確認します。物理ボリュームが1つアレイから取り除かれ、アレイが「デグレードモード」で動作していることが分かります。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --detail /dev/md/RAID0Array
/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid4
Array Size : 204736 (199.97 MiB 209.65 MB)
Used Dev Size : 102368 (99.99 MiB 104.82 MB)
Raid Devices : 3
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Apr 17 21:27:07 2014
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Name : vb-ubuntu1310:RAID0Array (local to host vb-ubuntu1310)
UUID : de76ac50:0c82738c:231d8309:aa27c990
Events : 30
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 0 0 2 removed
/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid4
Array Size : 204736 (199.97 MiB 209.65 MB)
Used Dev Size : 102368 (99.99 MiB 104.82 MB)
Raid Devices : 3
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Apr 17 21:27:07 2014
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Name : vb-ubuntu1310:RAID0Array (local to host vb-ubuntu1310)
UUID : de76ac50:0c82738c:231d8309:aa27c990
Events : 30
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
2 0 0 2 removed
15.RAID 0へ再形成
「RAID 0」へ再形成する準備が整ったので、以下のコマンドを実行し、「RAID 0」へ再形成します。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --grow /dev/md/RAID0Array --level=raid0 --backup-file=/root/RAID0ArrayBackup.reshape
ubuntu@vb-ubuntu1310:~$
ubuntu@vb-ubuntu1310:~$
16.論理ボリュームのサイズを元に戻す
以下のコマンドを実行し、変更した論理ボリュームのサイズを元に戻しておきます。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --grow /dev/md/RAID0Array --array-size=max
ubuntu@vb-ubuntu1310:~$
ubuntu@vb-ubuntu1310:~$
17.論理ボリュームの確認
現状の論理ボリュームの情報を確認します。アレイの種類が「RAID 0」になっています。
また、物理ボリュームの数が2つになっています。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --detail /dev/md/RAID0Array
/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid0
Array Size : 204736 (199.97 MiB 209.65 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Apr 17 21:32:25 2014
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1
/dev/md/RAID0Array:
Version : 1.2
Creation Time : Thu Apr 17 20:46:03 2014
Raid Level : raid0
Array Size : 204736 (199.97 MiB 209.65 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Apr 17 21:32:25 2014
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 32K
Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 65 1 active sync /dev/sde1