2022年10月10日月曜日

WSL2のディストリビューションを別ドライブへ移して空き容量を増やす

 WSL2でUbuntuを使用しているが、Windows側もUbuntuの領域も空き容量が少なくなってきたので、Ubuntuを別ドライブへ移して、Ubuntuの仮想領域を拡張した。その手順をまとめておく。


環境

Windows10 ProとWSL2(Ubuntu20.04)。

$ lsb_release -dr
Description:    Ubuntu 20.04.5 LTS
Release:        20.04


現行のUbuntuをエクスポート

別ドライブへ移すWSL2のUbuntuをエクスポートする。

はじめに、WindowsのPower Shelllコンソールを開いて、wslコマンドでUbuntuを停止しておく。

PS > wsl --shutdown

停止したことを確認。

PS > wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Stopped         2

今回はDドライブにexportというフォルダを作成して、そこにエクスポートしたファイル(ubuntu20.tar)を保存する。

PS > mkdir d:\export
PS > wsl --export Ubuntu-20.04 d:\export\ubuntu20.tar 

後でインポートするときに、同じ名前のディストリビューションはインポートできないので、エクスポートが完了したら現行のUbuntuをWSL2から削除しておく。

PS > wsl --unregister Ubuntu-20.04


移行先のドライブへUbuntuをインポート

エクスポートが完了したら、移行先のドライブにインポートする。今回はDドライブにwslというディレクトリを作成して、そこにインポートする。

PS > mkdir d:\wsl
PS > wsl --import Ubuntu-20.04 d:\wsl d:\export\ubuntu20.tar --version 2

インポートが完了したらステータスを確認。

PS > wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Stopped         2


Ubuntuの仮想領域を拡張

続いて別ドライブへ移したUbuntuの仮想領域を拡張する。WSL 2 仮想ハード ディスクのサイズを拡張するを参考に行う。

管理者権限でPower Shellコンソールを開き、diskpartを起動する。

PS > diskpart

diskpartで、インポートしたUbuntuの仮想領域のファイルを選択する。仮想領域のファイルは、インポート先として指定したd:\wsl配下にある拡張子vhdxのファイル。そして仮想領域の情報を確認しておく。WSL2のデフォルトの最大サイズである256MBとなっていることがわかる。

DISKPART> select vdisk file="d:\wsl\ext4.vhdx"
DISKPART> detail vdisk
デバイスの種類 ID: 0 (不明)
ベンダー ID: {00000000-0000-0000-0000-000000000000} (不明)
状態: 追加済み
仮想サイズ:  256 GB
物理サイズ:  234 GB
ファイル名: d:\wsl\ext4.vhdx
子: いいえ
親ファイル名:
関連付けられたディスク番号: 見つかりません。

今回は仮想領域の最大サイズを500GBに拡張する。

DISKPART> expand vdisk maximum=512000
100% 完了しました

DiskPart により、仮想ディスク ファイルは正常に拡張されました。

DISKPART> detail vdisk
デバイスの種類 ID: 0 (不明)
ベンダー ID: {00000000-0000-0000-0000-000000000000} (不明)
状態: 追加済み
仮想サイズ:  500 GB
物理サイズ:  234 GB
ファイル名: d:\wsl\ext4.vhdx
子: いいえ
親ファイル名:
関連付けられたディスク番号: 見つかりません。

DISKPART> exit 

diskpartを終了したら、Ubuntuを起動してログインする。

PS > wsl -d Ubuntu-20.04 -u root

ディスクサイズを確認。256GBからサイズが増えている。

# fdisk -l
...
ディスク /dev/sdb: 500 GiB, 536870912000 バイト, 1048576000 セクタ
Disk model: Virtual Disk
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト 

仮想ディスクサイズが増えたので、次にUbuntuファイルシステムのサイズを拡張する。

# mount -t devtmpfs none /dev
mount: /dev: none は /dev にマウント済みです.
# mount | grep ext4
/dev/sdb on / type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)

上記コマンド出力結果の/dev/sdbが拡張対象のドライブで、resize2fsコマンドでファイルシステムのサイズを拡張する。

# resize2fs /dev/sdb 512000M
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/sdb is mounted on /; on-line resizing required
old_desc_blocks = 32, new_desc_blocks = 63
The filesystem on /dev/sdb is now 131072000 (4k) blocks long.

空き容量が増えたか確認してみる。/dev/sdbの容量が約2倍になって、空き容量が増えた。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        492G  236G  234G  51% /
tmpfs           5.9G     0  5.9G   0% /mnt/wsl
tools           917G  552G  366G  61% /init
...


0 件のコメント:

コメントを投稿