おは代々木ダイアリー

いろいろ試したメモを書きます

WSL2でXFSをマウントして使ってみる

21H1のアプデで入ると予想されていた WSL2 で Linuxファイルシステムを使えるようになる機能ですが依然入っていません。

ascii.jp

この記事に踊らされて、21H1をインストールしてみたんですが、そんな機能ははいってなくてガッカリしました。

Windows Insider Program で試す

Microsoftのドキュメントにあるように、この機能を使用するには Windows 10のビルド20211以降が必要となっています。

Get started mounting a Linux disk in WSL 2 | Microsoft Docs

というわけで、Devチャンネルにしてみました。

f:id:ohayoyogi:20210531222447p:plain
Windows Insider Program Devチャンネル

インストールされたか確認する

この機能が使えるかどうかを確認するにはそのオプションが使えるかどうかを確認する必要があります。

wsl -h などで wslコマンドのヘルプを表示して --mount オプションがあるかを確認するといいでしょう。

wsl -h

として、

f:id:ohayoyogi:20210531224659p:plain
wsl -h 結果

のように、--mount オプションが確認できればオッケーです。

バイスリストの表示

wmic diskdrive list brief

このコマンドを実行して、繋がってるディスクのデバイスリストを確認します。

f:id:ohayoyogi:20210531225011p:plain
バイスリスト

今回は HITACHI の 320GB HDD を使いたかったので、 \\.\PHYSICALDRIVE2 が今回のマウント対象です。

このHDD、昔のレノボのノートパソコンから抜いたシロモノですが、もう新品では手に入らなそうですね。Amazonで中古で1280円とかw

ディスクのマウント

wsl --mount <DiskPath>

マウントするには、--mount <DiskPath> としてwslコマンドを打ちます。<DiskPath> には \\.\PHYSICALDRIVE2 といった感じで先ほどのコマンドで取得できるデバイスIDを指定します。以下、例

wsl --mount \\.\PHYSICALDRIVE2

デフォルトだと ext4 で自動的にパーティションをマウントしようとするので、--bare オプションでマウントをしないように指定したり、--typeファイルシステムを指定するとよいと思います。

ディスクのフォーマット

今回はディスク全体をマウントしたので、パーティションを切って xfs なファイルシステムを構築します。

parted コマンドの使い方などは趣旨から外れるので書きませんが、以下手順

バイスファイルの確認

lsblk コマンドや dmesg コマンドをたたくと、なんというデバイスファイルでアクセスできるかを確認できます。

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   256G  0 disk
sdb      8:16   0 298.1G  0 disk
sdc      8:32   0   256G  0 disk /
sdd      8:48   0   477G  0 disk

lsblk を叩いてみましたが、容量的に /dev/sdb が今回のディスクっぽいですね。

パーティションの作成

parted で作成していきます。

 $ sudo parted /deb/sdb

(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to
continue?
Yes/No? y
(parted) print
Model: HITACHI HTS543232A7A384 (scsi)
Disk /dev/sdb: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart
Partition name?  []?
File system type?  [ext2]? xfs
Start? 0%
End? 100%
mkfs.xfs /dev/sdb1

なんか NTFSでフォーマットされてますけど…? みたいな警告が出るので -f オプションで強制的に作成してしまいました(なぜ・・・?)

マウント

適当にフォルダを作ってマウントします。

sudo mkdir /hdd
sudo mount /dev/sdb1 /hdd

メモリを増設する(オマケ)

xfsはメモリを食うという噂なので、念のためメモリを増設しました。といっても16GBにしただけだけど。

言い忘れましたが、今回使用したのはDELLのゲーミングデスクトップ「G5 5000」です。下記メモリに換装しましたが、全く問題ありません(最近メモリ値上がりしたっぽいのでつらいなー

G5については見た感じ 2666MHz が上限っぽいので、コレ↓とかでも大丈夫そうですね。(未検証

完成!

これでディスクにゴリゴリ書いていけます!

f:id:ohayoyogi:20210601102739p:plain
平均応答時間がすごいことになっているが…

おわりに

Windowsが標準で使用できるファイルシステム以外が使えるようになったのは大きいですね。 ファイルシステムによる性能の違いなど、検証してみると楽しいかもしれませんね~