LoginSignup
1
1

More than 1 year has passed since last update.

WSL2で追加できるVHDを作って保存先にしたい

Last updated at Posted at 2022-11-13

Microsoft Store版のWSL Previewでは、仮想ハードディスク(VHD)を追加でマウントすることが容易にできるようなので、データなどを保管するために空のVHDが用意したいと思います。

環境

  • エディション: Windows 11 Home
  • バージョン: 22H2
  • WSL バージョン: 0.70.4.0
  • カーネル バージョン: 5.15.68.1
  • ディストリビューション: Debian GNU/Linux 11

仮想ハードディスク(VHD)を用意する

PowerShellからコマンドで用意することもできますが、ここではWindowsに標準で含まれている「ディスク管理」を利用します。

  1. タスクバーの スタート から右クリックで ディスク管理 を開きます。
  2. 操作 メニューから VHD の作成 を選択します。
  3. 以下の項目を指定します。
    • 場所: 保存場所を指定(C:\Users\ユーザー名\my-drive.vhdx など)
    • 仮想ハードディスクのサイズ: ディスクサイズを指定(128 GB など)
    • 仮想ハードディスク フォーマット: VHDX を指定
    • 仮想ハードディスクの種類: 可変容量 を指定
    • すべて指定できたら OK で実行します
  4. アイコンのあるディスク表示上から右クリックで VHD の切断 を選び OK で実行します。

これで仮想ハードディスクとしてのVHDファイルが、指定した保存場所に用意されました。
このVHDを、WSLで利用できるext4のファイルシステムでフォーマットして、マウントできるようにしたいと思います。
※VHDXはVHDの後継フォーマットです。

WSLでVHDをフォーマットする

PowerShellから以下のコマンドでWSLにディスクをアタッチ(接続)します。
※VHDファイルの場所などは適宜差し替えてください。

PowerShell
PS C:\> wsl --mount --vhd \\?\C:\Users\ユーザー名\VHDファイル名.vhdx --bare

ディスクの管理で「VHD の切断」を行っていないと使用中となり、アタッチできません。

アタッチされているか、また、そのデバイス名を確認します。

WSL
$ lsblk
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda    8:0    0 365.5M  1 disk
sdb    8:16   0     1G  0 disk [SWAP]
sdc    8:32   0   128G  0 disk  ← 容量的にアタッチされたVHDと確認
sdd    8:48   0   256G  0 disk /mnt/wslg/distro

fdiskを使ってパーティションを設定

今回はパーティションが1つだけ作成していますが、使用環境に合わせてパーティションを追加してください。

パーティションを作成(ここでの対象デバイスは sdc としています)

WSL
$ sudo fdisk /dev/sdc  ← 確認したデバイス名を/dev/の後に指定

↓ パーティションを作る
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): [Enter]
First sector (2048-268435455, default 2048): [Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-268435455, default 268435455): [Enter]

Created a new partition 1 of type 'Linux' and of size 128 GiB.

↓ 変更を保存(実行)
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

↓ 確認
$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 365.5M  1 disk
sdb      8:16   0     1G  0 disk [SWAP]
sdc      8:32   0   128G  0 disk
└─sdc1   8:33   0   128G  0 part  ← 出来上がったパーティション
sdd      8:48   0   256G  0 disk /mnt/wslg/distro

ファイルシステムとして ext4 でフォーマットします。

WSL
$ sudo mkfs -t ext4 /dev/sdc1  ← フォーマットするパーティションを指定

フォーマットが終わったら一旦WSLよりアタッチを解除します

PowerShell
PS C:\> wsl --unmount \\?\C:\Users\ユーザー名\VHDファイル名.vhdx

これでWSLで利用するためのVHDが用意できました。

WSLで作成したVHDをマウント

PowerShell
PS C:\> wsl --mount --vhd \\?\C:\Users\ユーザー名\VHDファイル名.vhdx --partition 1 --name ディレクトリ名

ディスクは '/mnt/wsl/ディレクトリ名' として正常にマウントされました。
と表示されれば上記の場所としてマウントされアクセスすることができるようになります。
パーティションを複数作っている場合は「 --partition 2 --name 別ディレクトリ名」といった具合に各々マウントします。

パーティションを設けない場合は、「fdisk」は使用せず「mkfs」で対象をext4フォーマットしてください。

PowerShell
PS C:\> wsl --mount --vhd \\?\C:\Users\ユーザー名\VHDファイル名.vhdx --name ディレクトリ名

wsl --mount であらかじめマウントをしておく必要があるので、バッチファイルでまとめておくと良さそうです。

最後に

保存先を別の仮想ハードディスクに変更して、制作したデータやDBなどの格納先としておけば、バックアップ等も容易になるのではないかと思います。
また、他のディストリビューションでも使いたいといった時にも便利かもしれません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1