NTFS上でLinuxのファイルシステムを実現するために必要な存在
WSLには前述のようにVolFsとDrvFsという2つの固有のファイルシステムがある。VolFsは、WSL内で動作するLinuxディストリビューションのOSイメージなどが記録される、LinuxのメインのファイルシステムをNTFS上に実現するものだ。まず、LinuxのファイルシステムとしてVFSの機能をすべて満たす必要があり、NTFSそのままでは利用できない。たとえば、ファイルに関するアクセス情報などもLinuxとWindowsでは違っている。
VolFsはNTFSの上にあるものの、WSLが利用しているあいだは、Windows側からアクセスされない前提で動作する。これは、Linuxのカーネルがファイルや関連情報のキャッシングなどを実行するため、リアルタイムに変更状態を反映していないことやWindowsのアプリケーションが必要な処理がなされないなどの問題があるからだ。
WSLは、Windowsの上にLinuxディストリビューションのバイナリファイルが動作できるLinux環境を構築するのが目的であるため、Linux自体の変更はないのが前提だ。違いは、LxCore.sysと呼ばれるソフトウェアが、Linuxカーネルの代わりになるだけで、それ以外のファイルはほとんどがx64/x86用のディストリビューションほぼそのままになっている。
なおWSLでは、登場初期にはVolFsをユーザーフォルダー以下に置いていたが、現在では、
%UserProfileAppData¥Local¥Packages¥[ディストリビューションフォルダー]¥LocalState¥rootfs
に置いて、複数のディストリビューションでも同じ場所を使わないようになっている。
DrvFsは、現在ではメタデータや作成者、作成者のグループIDといった情報を利用できるようになり、よりLinux的に利用できるようになった。たとえば、Windows側では読み書きが可能でも、WSL側からはリードオンリーといった動作が可能になった。
また、Linuxのファイルシステムでは、ファイルやフォルダー名の大文字小文字の区別(ケースセンシティビティ)があるのが普通で、現在のWSLでは、DrvFs上のフォルダーに関して、ケースセンシティビティの設定ができようになっていて、区別する/しないを選択できる。なお、このケースセンシティビティは、サブフォルダーに引き継がれるようになった。 こうしたファイルシステムに対する処理は、LxCore.sysがLinuxカーネルの代わりに引き受け、最終的にNTカーネルが持つ、NTFSの機能として実行される。
このときNTFS側で、ファイルフォルダーごとにLinuxのメタデータなどを管理する必要がある。たとえば、Linuxでは、セキュリティのために機密性の高い情報の入ったファイルを他人に読めないようにしていないと動作しないものなどがあるが、こうしたメタデータが保存されないと、WSLを再開したときにプログラムが動作出来なくなる可能性がある。
このため、VolFsやDrvFsでは、NTFSがもつ「$EA/$EA_INFOMATION」(以下、EA)というアトリビュート(ストリームと呼ぶこともある)にLinux側のメタデータなどを記録する。EAは、NTFSのメタデータの一部ではあるが、これはもともとOS/2のHPFSというファイルシステムをサポートするために作られたもので、NTFSは通常、このアトリビュートを操作しない。簡易にファイルに対して$EAや$EA_INFOMATIONといったアトリビュートがあるかどうかは、fsuti.exeコマンドを使い、
fsutil.exe file layout 対象ファイルパス
で表示させられる。
VolFsやDrvFsは、必要な情報をEAに入れておく。また、VFSがサポートするシンボリックリンクといったファイル構造にかかわる機能もEAに情報を格納することで、永続的に利用可能としている。
DrvFsもVolFsも、ファイルとディレクトリは、NTFSのそれと完全に対応している。LinuxのシンボリックリンクリンクをNTFSのシンボリックリンク(ソフトリンク)に対応させることは不可能ではないが、NTFSでは、ソフトリンクの作成には、管理者権限が必要であるため、WSLからは常に設定できるとは限らない。
しかし、WSLからだけリンクが存在してればいいので、NTFS側はリンクされていないという実装でも対応が可能になる。
この連載の記事
-
第435回
PC
Windows Terminal Preview v1.21では、前回終了時のタブとその表示内容を復元できるように -
第434回
PC
AIの急速な導入がWindowsの予定を変えた!? Windows 12がすぐには出ない可能性 -
第433回
PC
Windows 11の2つのウィジェットを調べる -
第432回
PC
ウェブブラウザが切り開いたWindowsでのタブアプリケーション -
第431回
PC
Windows上でユニコードを「見る」方法 -
第430回
PC
WindowsからWordPadが廃止! RTF(Rich Text Format)はどうなる? -
第429回
PC
Windows Updateの「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにした方がいいか? -
第428回
PC
Google/Bingで使える検索オプション -
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた - この連載の一覧へ