Windows 11でWSL2のLinuxにデータ保存用などのディスク(VHDX)を追加してマウントする方法。
対応
-
追加するディスク用の仮想ディスクイメージを作成する(ホスト側)。
※本例ではPath\To\new-disk.vhdx
に最大サイズ100GB
の可変サイズのディスクイメージファイル(スパースファイル)が作成されます。New-VHD -Path "Path\To\new-disk.vhdx" -SizeBytes 100GB -Dynamic
-
作成したディスクイメージをホストにマウントする(ホスト側)。
Mount-VHD -Path "Path\To\new-disk.vhdx"
-
Linuxを起動する(ホスト側)。
※DistroName
はUbuntu
などお使いの環境のLinuxディストリビューション名です。wsl -d DistroName
-
ディスク情報を取得する(ホスト側)。
diskpart
DISKPART>
プロンプトが表示されたら以下のコマンドを実行する。LIST DISK
以下のようにホストのディスク情報が表示される。
※本例ではディスク 2
が追加したディスクです。ディスク 状態 サイズ 空き ダイナ GPT ### ミック ------------ ------------- ------- ------- --- --- ディスク 0 オンライン 238 GB 1024 KB * ディスク 1 オンライン 465 GB 0 B ディスク 2 オンライン 100 GB 100 GB
ディスク番号が確認できたのでdiskpartを終了する。
exit
-
作成したディスクを空のファイルシステムとしてマウントする(ホスト側)。
※デバイス名は¥¥.¥PhysicalDrive
+手順4のディスク番号です。wsl --mount \\.\PhysicalDriveX --bare
マウントが成功すると以下のメッセージが表示される。
この操作を正しく終了しました。
-
マウントされたディスクを確認する(Linux側)。
sudo fdisk --list
以下のようにマウントされたディスクの情報が表示される。
※デバイス名はsXX
としています。・ ・ ・ Disk /dev/sXX: 100 GiB, 107374182400 bytes, 209715200 sectors Disk model: Virtual Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes
-
作成したディスクにパーティションを作成する(Linux側)。
パーティション操作を誤るとデータ消失など思わぬ結果が生じる可能性があります。十分に確認して間違いのないようにご注意ください(At your own risk!)。
sudo fdisk /dev/sXX
Welcome to fdisk (util-linux 2.37.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x2f5fb74c. Command (m for help):
コマンド
n
で新規パーティションを作成を選択する。Command (m for help): n
パーティション種別を聞いてくるので
Enter
押下で既定のプライマリパーティションを選択する。Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p):
パーティション番号を聞いてくるので
Enter
で既定のパーティション1を作成する。Partition number (1-4, default 1):
開始セクタ/終了セクタを聞いてくるので
Enter
で既定のパーティション範囲を設定する。First sector (2048-209715199, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-209715199, default 209715199): Created a new partition 1 of type 'Linux' and of size 100 GiB. Command (m for help):
w
コマンドで作成したパーティションをディスクに書き込む。Command (m for help): w
書き込みが完了すると以下のメッセージが表示される。
The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
-
作成したパーティションを確認する(Linux側)。
lsblk
sXX1
パーティションが作成されているのが確認できます。NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 388.4M 1 disk sdb 8:16 0 2G 0 disk [SWAP] sdc 8:32 0 256G 0 disk /var/lib/docker /snap /mnt/wslg/distro / sXX 8:48 0 100G 0 disk └─sXX1 8:49 0 100G 0 part
-
作成したディスクをフォーマットする(Linux側)。
※本例ではパーティション1をext4形式でフォーマットします。sudo mkfs.ext4 /dev/sXX1
パーティションが作成されると以下のように表示されます。
mke2fs 1.46.5 (30-Dec-2021) Discarding device blocks: done Creating filesystem with 26214144 4k blocks and 6553600 inodes Filesystem UUID: 16009e86-2d55-4365-9185-6ed3d71a6e09 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done
-
Linuxをシャットダウンする(ホスト側)。
wsl --terminate DistroName
-
Linuxにパーティション1をマウントする(ホスト側)。
wsl --mount \\.\PhysicalDriveX --partition 1 --type ext4
ディスクは '/mnt/wsl/PhysicalDriveXp1' として正常にマウントされました。 注: /etc/wsl.conf で automount.root 設定を変更した場合、場所は異なります。 ディスクのマウントを解除してデタッチするには、'wsl.exe --unmount \\.\PhysicalDriveX' を実行してください。
-
WSL2のLinuxを起動する(ホスト側)。
wsl -d DistroName
-
マウントされたディスクを確認する(Linux側)。
df -h
/mnt/wsl/PhysicalDriveXp1
にマウントされていることが確認できます(デバイス名は前手順のものと変わる模様)。・ ・ ・ /dev/sXX1 98G 24K 93G 1% /mnt/wsl/PhysicalDriveXp1 ・ ・ ・
ここまでの手順でLinux側に追加したディスクイメージがマウントできているのが確認できるかと思います。
注意点として
- WSLをシャットダウンした場合は手順11の
wsl --mount
を実行する必要がある。 - ホストを再起動した場合は、手順2の
Mount-VHD
を実行する必要がある。
がありますが、毎回上記を設定するのも面倒ですので、WSL起動スクリプトを作成しておくと良いかもしれません。
参考ウェブサイトなど
- Microsoft Learn
Linux ディスクを WSL 2 にマウントする
以上です。