LoginSignup
2

WSL2用に内蔵ストレージをext4フォーマットしてマウントする

Last updated at Posted at 2023-08-15

背景

  • WSL2のディスクイメージがストレージを逼迫しているので、内蔵SSDを増設してWSL2(Ubuntu 20.04)から読み書きしたい
  • WSL2からストレージを利用するには、ディスクイメージを作る方法と直接マウントする方法の2つがあるが、SSDをext4フォーマットして直接マウントすることにした
    • ちなみにext4にフォーマットせずともNTFSのままでマウントすることもできる
      • 今回は大容量データの読み書きが発生するのでパフォーマンス優先でext4とした
    • 手順は公式ドキュメントに詳しく書かれている
    • https://learn.microsoft.com/ja-jp/windows/wsl/wsl2-mount-disk

作業手順

おおまかな流れ

  1. Windows上でパーティションを分割(optional)
  2. PowerShellから、WSL2にパーティションをマウント
  3. 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
    
  • 完了です。お疲れ様でした。

すべての作業が完了した後で、該当パーティションはWindowsからはこのように見える
スクリーンショット 2023-08-15 23.41.47.png

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
2