この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
第三シスの趙(@realdapeng)です。
困っていた内容
AWSのマネコンで EBSボリュームのサイズ拡張は容易でできますが、
マネコンでは、EBSボリュームの縮小するのはAWSでサポートしておりません。
Volumeのサイズ縮小について
どう対応すればいいの?
EBSボリュームのサイズを縮小したい場合は、新規にサイズの小さいEBSボリュームを作成して、元のボリュームの中身をコピーして、という方法を紹介します。
前提
縮小対象サーバ情報
OS:Windows2019
EBS: 50GB
目標
50GB → 30GBに縮小
手順
- Windows Serverでパーティションを縮小
- Windows Serverをシャットダウン
- 新規Linuxで縮小後のEBSにクローン
- 縮小後のEBSをWindows Serverにアタッチ
やって見る
1. Windows Serverでパーティションを縮小
コマンド「DISKMGMT.MSC」で「ディスクの管理」を起動する
パーティションを右クリック>ディスクの縮小 を選択
「C: の縮小」ウィンドウでサイズを決定
今回はCドライブなので「C: の縮小」となっています。
提示する縮小可能な領域そのまま縮小する。
するとディスクが下記のように縮小され、未割当の領域が出来ます。
2. Windows Serverをシャットダウン
EBSボリュームをデタッチ
デタッチする
EBSの状態が「available」になる
3. 新規Linuxで縮小後のEBSにクローン
Amazon Linux 2(Amazon Linux 2 AMI (HVM)) 作成
EBSのアベイラビリティゾーンは、Windows ServerのEC2のアベイラリティゾーンと合わせる必要があります。
縮小後(30GB)のEBS を追加してください。
EC2作成後、作業用EC2に縮小前(50GB)をアタッチします。
アタッチ
EBSの状態が「in-use」になる
SSHにて作業用EC2に接続
lsblkでEBS確認
fdiskで新旧EBS確認
dd コマンドでクローン実施
確認用のコマンドも含め下記のように操作をしました。
[root@ip-172-31-33-134 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
mqxvda1 202:1 0 8G 0 part /
xvdb 202:16 0 30G 0 disk
xvdf 202:80 0 50G 0 disk
mqxvdf1 202:81 0 16.4G 0 part
[root@ip-172-31-33-134 ~]# fdisk -l -u /dev/sdb
Disk /dev/sdb: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@ip-172-31-33-134 ~]# fdisk -l -u /dev/sdf
Disk /dev/sdf: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9fff4844
Device Boot Start End Sectors Size Id Type
/dev/sdf1 * 2048 34416639 34414592 16.4G 7 HPFS/NTFS/exFAT
[root@ip-172-31-33-134 ~]# dd if=/dev/sdf of=/dev/sdb bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00562221 s, 91.1 kB/s
[root@ip-172-31-33-134 ~]# sudo dd if=/dev/sdf1 of=/dev/sdb1 bs=1M
16804+0 records in
16804+0 records out
17620271104 bytes (18 GB) copied, 276.65 s, 63.7 MB/s
[root@ip-172-31-33-134 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
mqxvda1 202:1 0 8G 0 part /
xvdb 202:16 0 30G 0 disk
mqxvdb1 202:17 0 16.4G 0 part
xvdf 202:80 0 50G 0 disk
mqxvdf1 202:81 0 16.4G 0 part
[root@ip-172-31-33-134 ~]# sudo fdisk -l -u /dev/sdb
Disk /dev/sdb: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9fff4844
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 34416639 34414592 16.4G 7 HPFS/NTFS/exFAT
[root@ip-172-31-33-134 ~]#
4. 縮小後のEBSをWindows Serverにアタッチ
上記作業完了後、AWSマネジメントコンソールから作業用EC2を停止させ、縮小後のEBSをデタッチ
そのまま縮小後のEBSをWindows Serverにアタッチを行います。
ルートデバイス名をメモしてください
アタッチする
メモしたルートデバイスを設定
アタッチ後、Windows Serverを起動し、リモートデスクトップ接続が行えることを確認。
コマンドで「DISKMGMT.MSC」で「ディスクの管理」を起動する
トータルディスク容量が30GBになりました。
接続後、再度ディスクの管理を確認すると未割当の領域が少なくなっていることが分かります。
未割当の領域をCドライブに追加する為、(C:)のパーティションを右クリック>ボリュームの拡張を選択します。
そのまま全て「次へ」を選択し、ディスクの拡張を行います。
容量が30GBのことを確認できました。
マイコンピュータでも確認できました。
おわりに
どなたかの参考になれば幸いです〜。
以上、最後まで読んでいただきありがとうございました。