EC2インスタンスのボリュームを縮小してみた

スポンサーリンク

はじめに

AWSで構築した仮想サーバ(Windows Server 2019)がありますが、ディスク構成の見直しによりCドライブの容量を縮小することになりました。拡張は簡単にできますが、縮小は手間がかかります。

対応手順をざっくり書くと以下のとおりです。

  1. サイズの小さいボリュームを作成する。(新ボリュームと呼ぶ)
  2. 既存ボリュームの全データを新ボリュームにコピーする。
  3. 既存ボリュームと新ボリュームを入れ替える。

備忘録を兼ねて手順をまとめておきます。

手順

WindowsサーバのCドライブを2TBから100GBに縮小します。

既存ボリュームの縮小

Windowsサーバに接続します。
「ファイル名を指定して実行」([Windows]キー+[R]キー)から「diskmgmt.msc」を入力します。
赤枠の部分を右クリックしプルダウンメニューから「ボリュームの縮小」を選択します。

縮小後のサイズが100GB以下になるように縮小する領域のサイズを調整し「縮小」ボタンをクリックします。ボリュームの縮小が完了したらサーバをシャットダウンします。

EC2インスタンスと新ボリュームの作成

作業用のEC2インスタンスを新規に作成します。
AMI:Amazon Linux 2
インスタンスタイプ:t2.micro
インスタンスの詳細の設定:あなたの環境に合わせて設定
ストレージの追加:「新しいボリュームの追加」ボタンから100GBのボリュームを追加

セキュリティグループ:SSH(22)を許可

インスタンスの作成を完了します。

既存ボリュームのデタッチ&アタッチ

Windowsサーバを選択します。ストレージタブをクリックし、「ルートデバイス名」の値をメモします。(後続作業で使用します)その後、ボリュームIDをクリックします。

ボリュームにチェックを入れます。

「アクション」ボタンから「ボリュームのデタッチ」をクリックします。確認メッセージが表示されるので「デタッチ」ボタンをクリックします。

先ほどデタッチしたボリュームを選択し、「アクション」ボタンから「ボリュームのアタッチ」を選択します。作業用のEC2インスタンスを選択し「ボリュームのアタッチ」ボタンをクリックします。

データのコピー

作業用のEC2インスタンスにSSHで接続します。「lsblk」コマンドでブロックデバイスの一覧を確認します。

fdiskコマンドでデバイス名を確認します。データ元のデバイス名は「/dev/xvdf」、データ先のデバイス名は「/dev/xvdb」になります。

[root@ip-10-0-1-154 ec2-user]# fdisk -l
Disk /dev/xvda: 8 GiB, 8589934592 bytes, 16777216 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: gpt
Disk identifier: 4D62FC75-4417-481E-83EB-4259C891CE12

Device       Start      End  Sectors Size Type
/dev/xvda1    4096 16777182 16773087   8G Linux filesystem
/dev/xvda128  2048     4095     2048   1M BIOS boot

Partition table entries are not in disk order.


Disk /dev/xvdb: 100 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


Disk /dev/xvdf: 2000 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: 0x6fc0df5c

Device     Boot Start      End  Sectors  Size Id Type
/dev/xvdf1 *     2048 43415551 43413504 20.7G  7 HPFS/NTFS/exFAT
[root@ip-10-0-1-154 ec2-user]#

ddコマンドで2000GBから100GBへ全データをコピーします。

[root@ip-10-0-1-154 ec2-user]# dd if=/dev/sdf of=/dev/sdb bs=1M

dd: error writing ‘/dev/sdb’: No space left on device
30721+0 records in
30720+0 records out
32212254720 bytes (32 GB) copied, 1428.4 s, 22.6 MB/s
[root@ip-10-0-1-154 ec2-user]#

新ボリュームのデタッチ&アタッチ

作業用のEC2インスタンスを停止します。

100GBのボリュームをデタッチし、Windowsサーバにアタッチします。デバイス名は最初の作業でメモしたルートデバイス名の値を入力します。「ボリュームのアタッチ」ボタンをクリックします。

新ボリュームの拡張

Windowsサーバを起動します。
「ファイル名を指定して実行」([Windows]キー+[R]キー)から「diskmgmt.msc」を入力します。

ディスクが100GBになっていることが確認できます。赤枠の部分を右クリックしプルダウンメニューから「ボリュームの拡張」を選択します。100GBまで拡張します。

不要リソースの削除

作業用のEC2インスタンスとWindowsサーバの旧ボリュームを削除して完了です。

コメント

タイトルとURLをコピーしました