このページの本文へ

前へ 1 2 次へ

Windows Info 第193回

Windows Subsystem for Linux 2のNTFSソフトリンク対応

2019年10月06日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

 現在プレビューが進められている20H1(Windows 10 Ver.2003)に含まれるWSL2(Windows Subsystem for Linux 2)は、仮想マシンベースでLinuxカーネルを動かすものだ。

Windows 10 20H1プレビューに含まれるWSL2。今回はNTFSのソフトリンクに対応した

 Windows 10に搭載されているWSL(以下WSL1と略す)は、Linuxカーネルがなく、Linuxのカーネルファンクションコールは、すべてWindowsカーネル(NTカーネル)のファンクションコールに変換されいた。このため、Windows側の機能はほとんど問題なく利用できた。

 これに対して、WSL2では、仮想マシン内部でLinuxカーネルがそのまま動作している「ほぼLinux」であるため、Windowsの持つ機能にアクセスするためには、さまざまな対応が必要になる。こうした問題の1つがNTFS上のソフトリンク(シンボリックリンクやジャンクション)への対応である。Windows Insider ProgramのPreview Build 18980より前では、WSL2は、NTFSのソフトリンクを解釈することができなかった。このため、NTFS側でlsコマンドなどを実行すると、ソフトリンクの部分ではエラーが発生していた。

ハードリンクとソフトリンクの違い

 多くのOSではファイルシステム上に「リンク」を作成することができる。リンクとは、他のファイルやディレクトリを1つのものとして結びつける機能である。こうした記憶装置上のリンクには、「ハードリンク」「ソフトリンク」の2種類がある。

 ハードリンクとは、簡単に言えば、複数のファイル名を持つファイルだ。複数のファイル名が記憶装置上の同じ領域を指し示す。一般にファイルシステムは、人間が理解できるファイル名を管理している部分(これをディレクトリという)と、ファイルなどが保持するデータを格納する記憶装置上の一連の領域を管理する部分から構成されている。

 ソフトウェアでファイルを処理するだけなら、必ずしもファイル名がついている必要はなく、単にユニークな数値などが割り振ってあればよい。しかし、これでは人間がファイルを管理できない。そのために作られたのがディレクトリやファイル名である。

 ハードリンクは、データを記憶している記憶装置上の領域に対して、複数のファイル名を付ける。また、こうしたハードリンクされたファイルがいくつあるのかも管理している。このとき、何かオリジナルのファイルがあって、それ以外はリンクといった印象を持つかもしれないが、実際には、ハードリンクされたファイルの1つ1つには区別がなく、一回ハードリンクしてしまうと、ファイルとしては同一の情報や属性を持つことになるため、どちらが先にあったのかという情報はなくなって、区別ができなくなる。

 これに対して、ソフトリンクは、リンク元とリンク先があり、リンク元はリンク先を示すパスなどの情報しか持っていない。しかし、OSは、ソフトリンクをリンク先のファイルとして扱うため、処理上は区別がない。ただし、ファイルの削除やバックアップなど、ソフトリンクを区別して扱うことは可能だ。また、ソフトリンクは必ずしもリンク先が存在している必要はなく、たとえば、ユーザーが削除したなどで、リンク先がなくなってしまう可能性もある。このときリンク元はそのまま放置される。

 ハードリンクは、記憶装置上の領域を示す必要があるため、同一の記憶装置内しかリンクすることができない。この欠点を補うためにあとからソフトリンクが開発された。一般にソフトリンクは、リンク先が存在していなくてもよい。もちろん技術的には、リンク先を監視して存在を追ったり、リンク先が消えたらソフトリンクを消すことも可能だが、こうしたコストをかけても、その恩恵はわずかであり、現在ではリンク先がなくてもかまわない(もちろん、アクセスしようとするとエラーになるが)という実装が一般的だ。

Windowsにおけるソフトリンク

 Windowsには、シンボリックリンク(区別のため以後NTFSシンボリックリンクと呼ぶ)とジャンクションの2つのソフトリンクがある。

 また、ショートカットと呼ばれるソフトリンクによく似たものもある。ショートカットは、エクスプローラーの機能で、実体はリンク先などを記録した「.lnk」という拡張子を持つファイルだ。FAT系ファイルシステムが主流だったWindows 95のときにソフトリンクのように使えるものとして導入され、いまでもスタートメニューなどに利用されている。エクスプローラーの管理するオブジェクトなので、たとえば、コマンドラインからは普通のファイルに見えてしまう。

 Windowsのソフトリンクは、当初ジャンクションしかなかった。しかし、リンク先がフォルダーに限られる点やネットワークパス(UNC)をリンク先にできないといった問題があった。NTFSのハードリンクが同一記憶装置内に限られる点をカバーするためのものだったが、機能が少し不足していた。このため、Windows Vistaで搭載されたのがNTFSシンボリックリンクだ。シンボリックリンクは、ファイルだけでなくディレクトリー(フォルダー)もリンク先にできるなど、ジャンクションよりも融通性が高い、反面、フォルダーのNTFSシンボリックリンクの作成には管理者権限が必要となる。

 Windowsのシンボリックリンクは、いまのところファイルシステム依存である。たとえば、FAT32などのファイルシステムの上ではシンボリックリンクを作ることができない。

Linuxのソフトリンク

 Linuxのソフトリンクは、シンボリックリンクしかない(以後Linuxシンボリックリンクと表記する)。ファイルでもディレクトリーでもリンクすることができる。ハードリンクもあり、こちらはやはり同一記憶装置内のリンクに限定される。

 作成は、lnコマンドで行なう。シンボリックリンクを作成するには「ln -s」と-sオプションを付ける。なお、lnコマンドとWindowsのmklinkコマンドでは、リンク元とリンク先の指定が逆になっているため、両方を使う場合には注意すること。Linuxのシンボリックリンクは、仮想ファイルシステム(VFS)の上で管理され、各ファイルシステムが具体的に実装する。

 古い実装では、リンク先のパスを記憶する小さなファイルが使われたこともある(Windowsのショートカットと同じ方法)。しかし、lnなどのアプリケーションのレベルでは、ファイルシステムを意識することなくシンボリックリンクが作成できる。もちろん、Linuxのシンボリックリンクをサポートしていないファイルシステムもないわけではない。しかし、少なくともLinuxやUnix用に作られたファイルシステムではシンボリックリンクがサポートされていて、すべてlnコマンドで対応が可能だ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
2
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,880
3
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
4
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
5
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥1,100
6
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥2,111
7
【Amazon.co.jp限定】バッファロー microSD 128GB 100MB/s UHS-1 U1 microSDXC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-128U11HA/N
【Amazon.co.jp限定】バッファロー microSD 128GB 100MB/s UHS-1 U1 microSDXC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-128U11HA/N
¥3,080
8
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥4,918
9
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
¥1,980
10
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン