Hyper-V にインストールした Ubuntu で空き容量が足りなくなり、仮想ハードディスクの拡張が必要になったのでそのときのメモです。
単純に「VHD のサイズを変えとけばいいだろ~」と思っていたのですが、そうじゃなかったので少し手間取りました。
概要
ホスト環境:
- メーカー:HP
- 型番:Envy te02
- OS:Windows 11 Pro 64bit
- CPU:Intel Core i7-13700 @ 2.10GHz
- RAM:32GB
- SSD:1TB
- Hyper-V は有効化済み
ゲスト環境:
- OS:Ubuntu 22.04.1
- RAM:16GB
作業内容
1. VHD を拡張する
Hyper-V の右側のメニュー「ディスクの編集」を開き、
拡張したい仮想ハードディスクのファイルを選択して次へ。
「拡張」を選び、
拡張後のサイズを設定しておきます。
2. Ubuntu 側の設定
まずは Ubuntu 側のターミナルから、ハードディスクサイズを再スキャン。
$ sudo sh -c "echo 1 > /sys/class/block/sda/device/rescan"
これにて Ubuntu 側で空き領域が認識されます。
次に、parted
でパーティション拡張の設定を行っていきます。
$ sudo parted /dev/sda
GNU Parted 3.4
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted)
まずはパーティション情報を見ておきます。
このとき、一部の領域が利用されていないので GPT を修正するか?という警告が表示されたので「F」で Fix を選んでおきました。
(parted) print free
警告: /dev/sda で利用可能な領域の一部が利用されていません。GPT を修正して全ての領域を利用可能にするか(104857600
ブロック増えます)、このままで続行することができますが、どうしますか?
修正/Fix/無視(I)/Ignore? F # ← 入力
モデル: Msft Virtual Disk (scsi)
ディスク /dev/sda: 376GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
17.4kB 1049kB 1031kB 空き容量
14 1049kB 5243kB 4194kB bios_grub
15 5243kB 116MB 111MB fat32 boot, esp
1 116MB 322GB 322GB ext4
322GB 376GB 53.7GB 空き容量
一番下の「空き容量」と表示されている領域が拡張した領域です。これに /dev/sda
を割り当てていきます。
/dev/sda
に該当すると思われるのが下から2番目の番号「1」の領域。よってこの番号で拡張先を指定します。
(parted) resizepart 1
警告: パーティション /dev/sda1 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? y # ← 入力
終了? [322GB]? 100% # ← 入力
「100%」で空き容量すべてを割り当てることを示します。
もう一回 print free
で拡張されたか確認します。
(parted) print free
モデル: Msft Virtual Disk (scsi)
ディスク /dev/sda: 376GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
17.4kB 1049kB 1031kB 空き容量
14 1049kB 5243kB 4194kB bios_grub
15 5243kB 116MB 111MB fat32 boot, esp
1 116MB 376GB 376GB ext4
きちんと拡張されてました。これにて完了です。
parted 終了後((parted) q
で抜ける)、パーティション設定が反映されました。
3. ファイルシステムサイズを反映する
これにて容量が拡張された…はずなのですが、まだファイルシステム側は認識していないようでした。
よって、別途 resize2fs
でファイルシステムにサイズの拡張を反映します。
$ sudo resize2fs /dev/sda1
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 38, new_desc_blocks = 44
The filesystem on /dev/sda1 is now 91721979 (4k) blocks long.
今度こそ反映されました。お疲れ様でした。