RAID 4アレイで使用する物理ボリュームのサイズを縮小するコマンドの例
RAID 4アレイで使用する物理ボリュームのサイズを縮小するコマンドの例です。ここでは例として、アレイで使用する物理ボリュームのサイズを「100MiB」から「50MiB」に減らします。
環境について
以下のアレイを作成した環境でコマンドを実行しています。1.論理ボリュームの確認
比較のため現状の論理ボリュームの情報を確認します。「Array Size」が、論理ボリュームのサイズです。
「Used Dev Size」が、アレイで使用している物理ボリュームのサイズです。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --detail /dev/md/RAID4Array
/dev/md/RAID4Array:
Version : 1.2
Creation Time : Tue Apr 15 20:48:45 2014
Raid Level : raid4
Array Size : 204544 (199.78 MiB 209.45 MB)
Used Dev Size : 102272 (99.89 MiB 104.73 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Apr 15 20:48:51 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 128K
Name : vb-ubuntu1310:RAID4Array (local to host vb-ubuntu1310)
UUID : 0990d46e:ade99029:a29d4dde:ec8817ea
Events : 18
Number Major Minor RaidDevice State
0 8 51 0 active sync /dev/sdd3
1 8 67 1 active sync /dev/sde3
3 8 83 2 active sync /dev/sdf3
/dev/md/RAID4Array:
Version : 1.2
Creation Time : Tue Apr 15 20:48:45 2014
Raid Level : raid4
Array Size : 204544 (199.78 MiB 209.45 MB)
Used Dev Size : 102272 (99.89 MiB 104.73 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Apr 15 20:48:51 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 128K
Name : vb-ubuntu1310:RAID4Array (local to host vb-ubuntu1310)
UUID : 0990d46e:ade99029:a29d4dde:ec8817ea
Events : 18
Number Major Minor RaidDevice State
0 8 51 0 active sync /dev/sdd3
1 8 67 1 active sync /dev/sde3
3 8 83 2 active sync /dev/sdf3
2.デバイスの情報
論理ボリュームを「GParted」で見ると、以下のようになっています。パーティションが1つあるということと、論理ボリュームの総セクタ数が「409088」であることが分かります。
3.パーティション(ファイルシステム)の情報
論理ボリューム上のパーティション(ファイルシステム)の情報を確認します。論理ボリューム上に1つパーティションを作成しています。
パーティションの「終了セクタ」は「407751」です。
ここでは例として物理ボリュームのサイズを「50MiB」にするため、論理ボリュームの総セクター数は「204800」になります。
(50 * 1024 * 1024 * (3 - 1) / 512)
4.パーティション(ファイルシステム)の縮小
パーティション(ファイルシステム)の縮小を行います。余裕を見て少し小さめにしておくと良いでしょう。
操作を適用する前に、同様にパーティション情報を表示し、「終了セクタ」を確認してから操作を適用すると良いでしょう。
5.パーティション(ファイルシステム)の縮小完了
パーティション(ファイルシステム)の縮小後のパーティションの情報を確認します。全体的に見ると以下のようになります。
パーティションの情報を見ると、以下のようになっています。
パーティションの「終了セクタ」が「202751」になっています。
6.論理ボリュームのサイズの縮小
物理ボリュームのサイズを「50MiB」にするので、論理ボリュームのサイズは「100MiB」になります。以下のコマンドを実行し、論理ボリュームのサイズを「100MiB」に縮小します。
コマンドやオプションの説明は「論理ボリュームのサイズを一時期に変更するコマンドの説明」を参考にしてください。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --grow /dev/md/RAID4Array --array-size=100M
ubuntu@vb-ubuntu1310:~$
ubuntu@vb-ubuntu1310:~$
7.論理ボリュームの確認
現状の論理ボリュームの情報を確認します。「Array Size」が、論理ボリュームのサイズです。
「100MiB」になっています。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --detail /dev/md/RAID4Array
/dev/md/RAID4Array:
Version : 1.2
Creation Time : Tue Apr 15 20:48:45 2014
Raid Level : raid4
Array Size : 102400 (100.02 MiB 104.86 MB)
Used Dev Size : 102272 (99.89 MiB 104.73 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Apr 15 20:50:11 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 128K
Name : vb-ubuntu1310:RAID4Array (local to host vb-ubuntu1310)
UUID : 0990d46e:ade99029:a29d4dde:ec8817ea
Events : 18
Number Major Minor RaidDevice State
0 8 51 0 active sync /dev/sdd3
1 8 67 1 active sync /dev/sde3
3 8 83 2 active sync /dev/sdf3
/dev/md/RAID4Array:
Version : 1.2
Creation Time : Tue Apr 15 20:48:45 2014
Raid Level : raid4
Array Size : 102400 (100.02 MiB 104.86 MB)
Used Dev Size : 102272 (99.89 MiB 104.73 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Apr 15 20:50:11 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Chunk Size : 128K
Name : vb-ubuntu1310:RAID4Array (local to host vb-ubuntu1310)
UUID : 0990d46e:ade99029:a29d4dde:ec8817ea
Events : 18
Number Major Minor RaidDevice State
0 8 51 0 active sync /dev/sdd3
1 8 67 1 active sync /dev/sde3
3 8 83 2 active sync /dev/sdf3
8.バックアップGPTデータの修復
パーティションテーブルの形式が「GPT」の場合、ここでバックアップGPTデータを修復します。ここでは例として、「gdisk」を利用してバックアップGPTデータを修復します。
ubuntu@vb-ubuntu1310:~$ sudo gdisk /dev/md/RAID4Array
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/RAID4Array.
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/RAID4Array.
The operation has completed successfully.
念の為、チェックも行っておきます。
ubuntu@vb-ubuntu1310:~$ sudo gdisk /dev/md/RAID4Array
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. 4029 free sectors (2.0 MiB) available in 2
segments, the largest of which is 2015 (1007.5 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. 4029 free sectors (2.0 MiB) available in 2
segments, the largest of which is 2015 (1007.5 KiB) in size.
9.ディスクとパーティション(ファイルシステム)の情報
論理ボリュームの総セクター数を確認します。「総セクタ数」が「204800」になっていることが分かります。
パーティションが論理ボリュームの総セクター数以内に収まっていることが分かります。
またバックアップGPTデータ分の余裕もあります。
必要以上にパーティションを縮小し、後方に空き容量がある場合、ここでパーティションを拡大してもよいです。
ここまでの手順で、論理ボリューム上のパーティションやファイルシステムに問題がないか確認しておきます。
次の手順から実際に物理ボリュームのサイズを変更します。
10.論理ボリュームのサイズを元に戻す
以下のコマンドを実行し、変更した論理ボリュームのサイズを元に戻しておきます。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --grow /dev/md/RAID4Array --array-size=max
ubuntu@vb-ubuntu1310:~$
ubuntu@vb-ubuntu1310:~$
11.物理ボリュームのサイズを変更する
物理ボリュームのサイズを変更します。以下のコマンドを実行します。
コマンドやオプションの説明は、「アレイで使用する物理ボリュームのサイズを変更するコマンドの説明」を参考にしてください。
sudo mdadm --grow /dev/md/RAID4Array --size=50M
12.コマンドの実行結果
以下のようにコマンドの実行結果が表示されます。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --grow /dev/md/RAID4Array --size=50M
mdadm: component size of /dev/md/RAID4Array has been set to 51200K
mdadm: component size of /dev/md/RAID4Array has been set to 51200K
結果から、アレイで使用する物理ボリュームのサイズが「50MiB」になったことが分かります。
13.論理ボリュームの確認
最後に現状の論理ボリュームの情報を確認します。「Array Size」が、論理ボリュームのサイズです。
「Used Dev Size」が、アレイで使用している物理ボリュームのサイズです。
アレイで使用する物理ボリュームのサイズが「50MiB」になっています。
ubuntu@vb-ubuntu1310:~$ sudo mdadm --detail /dev/md/RAID4Array
/dev/md/RAID4Array:
Version : 1.2
Creation Time : Tue Apr 15 20:48:45 2014
Raid Level : raid4
Array Size : 102400 (100.02 MiB 104.86 MB)
Used Dev Size : 51200 (50.01 MiB 52.43 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Apr 15 21:36:09 2014
State : clean
Active Devices : 3
Working Devices : 3 Array Size : 102400 (100.02 MiB 104.86 MB)
Used Dev Size : 51200 (50.01 MiB 52.43 MB)
Failed Devices : 0
Spare Devices : 0
Chunk Size : 128K
Name : vb-ubuntu1310:RAID4Array (local to host vb-ubuntu1310)
UUID : 0990d46e:ade99029:a29d4dde:ec8817ea
Events : 19
Number Major Minor RaidDevice State
0 8 51 0 active sync /dev/sdd3
1 8 67 1 active sync /dev/sde3
3 8 83 2 active sync /dev/sdf3
/dev/md/RAID4Array:
Version : 1.2
Creation Time : Tue Apr 15 20:48:45 2014
Raid Level : raid4
Array Size : 102400 (100.02 MiB 104.86 MB)
Used Dev Size : 51200 (50.01 MiB 52.43 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Apr 15 21:36:09 2014
State : clean
Active Devices : 3
Working Devices : 3 Array Size : 102400 (100.02 MiB 104.86 MB)
Used Dev Size : 51200 (50.01 MiB 52.43 MB)
Failed Devices : 0
Spare Devices : 0
Chunk Size : 128K
Name : vb-ubuntu1310:RAID4Array (local to host vb-ubuntu1310)
UUID : 0990d46e:ade99029:a29d4dde:ec8817ea
Events : 19
Number Major Minor RaidDevice State
0 8 51 0 active sync /dev/sdd3
1 8 67 1 active sync /dev/sde3
3 8 83 2 active sync /dev/sdf3
以上で完了です。