背景
- WSL2のディスクイメージがストレージを逼迫しているので、内蔵SSDを増設してWSL2(Ubuntu 20.04)から読み書きしたい
- WSL2からストレージを利用するには、ディスクイメージを作る方法と直接マウントする方法の2つがあるが、SSDをext4フォーマットして直接マウントすることにした
- ちなみにext4にフォーマットせずともNTFSのままでマウントすることもできる
- 今回は大容量データの読み書きが発生するのでパフォーマンス優先でext4とした
- 手順は公式ドキュメントに詳しく書かれている
- https://learn.microsoft.com/ja-jp/windows/wsl/wsl2-mount-disk
- ちなみにext4にフォーマットせずともNTFSのままでマウントすることもできる
作業手順
おおまかな流れ
- Windows上でパーティションを分割(optional)
- PowerShellから、WSL2にパーティションをマウント
- WSL2上でext4にフォーマット、マウント設定
Windows上でパーティションを分割(optional)
SSDやHDDを分割して使う必要がなければこの手順はスキップして良い。
今回の場合、8TBのSSDに4TBのパーティションを作成した。
Windowsの『ディスクの管理』を起動し、新規GPTパーティションを作成する。容量はお好きに。
筆者は癖でNTFSでフォーマットしてドライブレターを割り当てたが、後でext4フォーマットする際に消し飛ぶのでその必要はなかった。
PowerShellから、WSL2にパーティションをマウント
まずはPowerShellから次を実行して DeviceID
を調べる
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
結果の例:ここでは \\.\PHYSICALDRIVE0
というのがDeviceID
```
DeviceID Caption Partitions Size Model
-------- ------- ---------- ---- -----
(中略)
\\.\PHYSICALDRIVE0 Samsung SSD 870 QVO 8TB 1 8001560609280 Samsung SSD 870 QVO 8TB
```
続いて、ストレージをWSL2にマウントする。これでドライブがWSL2から見えるようになるはず。ここで権限周りで怒られる場合があり、その場合はPowerShellを管理者権限で起動(PowerShellのアイコンを右クリック→管理者として実行)してリトライする。
wsl --mount <YourDeviceID> --bare
例)wsl --mount \\.\PHYSICALDRIVE0 --bare
WSL2のターミナルを開き、ドライブが見えるか確認する。ここでパーティション名を確認しておく。
lsblk
結果例: この場合はsde2が新しく作ったパーティションとわかる
(中略)
sde 8:64 0 7.3T 0 disk
├─sde1 8:65 0 16M 0 part
└─sde2 8:66 0 3.7T 0 part
WSL2上でext4にフォーマット、マウント設定
-
ここからはWSL2上での作業になる
-
e2fsprogs
パッケージをインストールsudo apt update sudo apt install e2fsprogs
-
フォーマットを実行
sudo mkfs.ext4 /dev/sde2
-
マウントポイントを設定
sudo mkdir /mnt/data # マウントポイントの作成 sudo mount /dev/sde2 /mnt/data
-
自動マウント設定
- 先にパーティションのUUIDを調べておく
sudo blkid
- 結果例
- 今回であれば
/dev/sde2: UUID="f764fdca-f2ba-408b-a790-a1f56120b2fb"
がそれ
- 今回であれば
/dev/sde2: UUID="f764fdca-f2ba-408b-a790-a1f56120b2fb" TYPE="ext4" PARTLABEL="Basic data partition" PARTUUID="3329384f-efc0-496c-ae8a-6f7d54f620c5" /dev/loop0: UUID="2021-12-21-15-08-50-00" LABEL="wsl-cli-bundle" TYPE="iso9660" /dev/loop1: UUID="2021-12-21-15-17-09-00" LABEL="LinuxKit" TYPE="iso9660" /dev/sda: UUID="3255683f-53a2-4fdf-91cf-b4c1041e2a62" TYPE="ext4"
- fstabに自動マウントのための設定を追記
sudo vi /etc/fstab # ファイルの末尾に以下の行を追加して保存 UUID=<フォーマットしたパーティションのUUID> /mnt/new_ext4_partition ext4 defaults 0 0 # 例 UUID=f764fdca-f2ba-408b-a790-a1f56120b2fb /mnt/data ext4 defaults 0 0
-
完了です。お疲れ様でした。