はじめに
AWSで構築した仮想サーバ(Windows Server 2019)がありますが、ディスク構成の見直しによりCドライブの容量を縮小することになりました。拡張は簡単にできますが、縮小は手間がかかります。
対応手順をざっくり書くと以下のとおりです。
- サイズの小さいボリュームを作成する。(新ボリュームと呼ぶ)
- 既存ボリュームの全データを新ボリュームにコピーする。
- 既存ボリュームと新ボリュームを入れ替える。
備忘録を兼ねて手順をまとめておきます。
手順
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サーバの旧ボリュームを削除して完了です。
コメント