Windows 7のCドライブ上のWindowsフォルダーの中に、「Winsxs」という名称のフォルダーがある。WindowsエクスプローラでこのWinsxsフォルダーの容量を確認してみると、数Gバイトから十数Gバイトになっているはずだ。これを見た読者は、「Winsxsフォルダーを削除すればディスクの空き容量をぐっと増やせる」と、考えるかもしれない。

 しかしWinsxsフォルダーを絶対に削除してはいけない。Winsxsフォルダーには、これまでに適用したセキュリティパッチやサービスパックに含まれているファイルがすべて保存されていて、システムの整合性を維持するために利用されるからだ。

 Winsxsフォルダーの中身を削除すると、アプリケーションが起動しなくなったり、脆弱性を含んだ状態になったりしてしまう。実際にWinsxsフォルダーに含まれるファイルをすべて削除してみたところ、(一部のファイルは使用中で削除できなかったが)ペイントやワードパットといったOS標準搭載のアプリケーションが起動しなくなってしまった。

 さらに、Windows 7の再起動を試みたが起動しなくなった。その状態から回復メニューを使ってなんとか起動できたものの、システムファイルはセキュリティパッチ適用前の脆弱性を含んだ状態に戻ってしまった。

Winsxsフォルダーのファイルを削除しても実体は残る

 実は、WindowsエクスプローラからWinsxsフォルダーの中のファイルを削除しても、Cドライブ全体の空き容量はそれほど減らない。

 実際、Windows 7をインストールしたばかりのPCで、Winsxsフォルダーの内部のファイルを削除する前と後を実際に比べてみた。削除前のWinsxsフォルダーの容量をWindowsエクスプローラで確認すると5.7Gバイトだった。その後、Winsxsフォルダーを開き、(使用中で削除できないものを除いて)すべてのファイルを削除したところ、Winsxsフォルダーの容量は450Mバイトになった。約5.2Gバイト減少したことになる。

 ところがCドライブ全体の容量を見ると、削除前は53.4Gバイトだったのに対して、削除後は51.9Gバイト。1.5Gバイトしか減っていない。

 これは、Winsxsフォルダー内部には「ハードリンク」されているファイルが多いためだ。ハードリンクとは、Windowsのファイルシステムである「NTFS」が提供するリンク機能のこと。一つの物理ファイルに複数のリンクを設定できる。すべてのリンクを切り離さなければ実体となるファイルは削除されない。

 セキュリティパッチが適用されたシステムファイルは、Winsxsフォルダーと、Windowsシステムファイルが格納されているSystem32フォルダーの二つのハードリンクを持つ仕組みになっている。例えば、システムファイルの一つである「Ntoskrnl.exe」にセキュリティパッチが適用されると、WinsxsフォルダーとSystem32フォルダーの両方にNtoskrnl.exeが表示される。

 このとき、WindowsエクスプローラからWinsxsフォルダーのNtoskrnl.exeを削除すると、Winsxsフォルダーのハードリンクが切り離されて、Winsxsフォルダーの中からNtoskrnl.exeは消える。ところが、System32とのリンクが維持されたままなので、Ntoskrnl.exeの実体はディスクからは削除されない。

 Winsxsフォルダーの中のファイルの多くは、Ntoskrnl.exeのようにハードリンクが設定されているため、Winsxsフォルダー上からファイルが消えても、実体はそのまま残る。これがWinsxsフォルダーを削除しても、Cドライブの空き容量はそれほど減らない理由になる。

ハードリンクの付け替えでパッチのバージョンを管理

 このハードリンクは、セキュリティパッチの適用でどのような役割を果たしているのだろうか。

 実は、バージョン管理に役立っている。KB979683のセキュリティパッチ(Ntoskrnl.exeというシステムファイルを更新する)で説明する。パッチの適用前、Ntoskrnl.exeはSystem32フォルダーとともに、Winsxsフォルダーの子フォルダー(フォルダー名は「6.1.7600.16385」というバージョン名を含む)にハードリンクされていた。

 パッチを適用すると、Winsxsフォルダーには新たな子フォルダー(フォルダー名は「6.1.7600.16539」というバージョン名を含む)が作成され、Winsxsの子フォルダーからのハードリンクは新たな子フォルダーとのリンクに付け替えられる。System32フォルダーのNtoskrnl.exeは更新されることになるが、旧バージョンのNtoskrnl.exeはWinsxsの子フォルダーとのハードリンクがあるので削除されない。このようにハードリンクの付け替えによって、システムファイルのバージョン管理を行っている。

瀧澤 俊臣(たきざわ としおみ)
日本ヒューレット・パッカード株式会社 テクノロジーサービス事業統括 サポートデリバリ統括本部 グローバルソリューションセンター本部 ミッションクリティカルサポート二部 コンサルタント
1996年、日本DEC入社。コンパックコンピュータを経て、現在、日本ヒューレット・パッカード勤務。IAサーバ、マイクロソフト製品をメインとしたミッションクリティカルなお客様向けに、運用提案や保守など、システム全般にわたるトータルサポートを提供している。