Windows Updateを確実に実行するための「予約済み記憶域」
パーティションやファイルとしては見ることができない!?
今回の記事では、前回(次期Windows 10では領域確保でストレージ32GB機でも確実にアップデート)の続きとして、現在プレビュー版が公開中の19H1に実装された「予約済み記憶域」(Reserved Storage)を調べていく。この予約済み記憶域は、Windows Update時などに必要な作業領域を確保するためのものだ。
問題は、どういう方法で記憶域の容量を確保しているかである。Windows 10上でパーティションを調べたが、特に新しいものは作られておらず、別パーティションを確保しているというわけでもないようだ(Unix系OSでは、パーティションを使って、スワップ領域やテンポラリーディレクトリーの容量を確保する)。
また、あらかじめ大きなファイルを作っておいて、その中に入れるという手法でもない。ドライブ内のファイルをファイルサイズで検索してみたが、予約済み記憶域の容量に相当するような大きさのファイルは存在しなかった。
予約済み記憶域に関しては「設定」→「システム」→「ストレージ」→「システムと予約済み」に表示されるほか、「同」→「一時ファイル」にも、「最大××MBが再利用可能でない場合があります」などと、空き領域が増えない可能性を表示する(どちらも予約済み記憶域が実装されてない状態では表示されない)。
ここから推測すると、予約済み記憶域はNTFSの機能を拡張する形で実装されていて、そこに保存されるファイルは、見かけ上、普通のファイルでしかないのに、他のファイルとは違って、予約済み記憶域で確保した領域からドライブ上の記憶領域が割り当てられるのだと考えられる。
fsutil.exeを使ってファイルシステムをチェック
NTFSの「予約クラスター」で領域確保?
そこで、ファイルシステム関係のコマンド、fsutilを使って起動ドライブを調べてみた。すると、「予約済み記憶域」を有効にしたシステムでは、NTFSの「予約クラスター」が増えていた。予約クラスターを調べるには、
fsutil volume allocationreport c:
としてコマンドを実行する。先頭にクラスター割り当てなどの表示がある。システムにより予約クラスターの量は違うが、19H1で予約済み記憶域が設定されていない場合には、
Total clusters:30,890,162 (126,526,103,552 bytes) 117.8GB
Free clusters:18,407,606 (75,397,554,176 bytes) 70.2GB
Reserved clusters:24,073 (98,603,008 bytes) 94.0MB
Allocated clusters:12,482,556 (51,128,549,376 bytes) 47.6GB
Cluster Size:4096Bytes
と、24,073クラスター(94.0MBであるのに対して、設定されている場合は、
Total clusters:29,068,551 (119,064,784,896 bytes) 110.9GB
Free clusters:21,103,352 (86,439,329,792 bytes) 80.5GB
Reserved clusters:843,419 (3,454,644,224 bytes) 3.2GB
Allocated clusters:7,965,428 (32,626,393,088 bytes) 30.4GB
Cluster Size:4096Bytes
と3.2GBも予約クラスターがあるのだ。この表示は、「設定」→「システム」→「ストレージ」→「システムと予約済み」に表示される予約済み記憶域の数字と近いものだ。
つまり、予約済み記憶域は、この予約クラスターを使って実現しているようだ。NTFSの予約クラスターとは、圧縮ファイルなどを利用する場合など、NTFSが作業に必要なクラスターを確保しておくための機能である。
予約クラスターは、伸張したクラスタなどに対して読み書きの処理が行われている間に該当クラスターを格納するために使われる。予約クラスターは、圧縮ファイル専用というわけではなく、このほかに$MFT(マスターファイルテーブル。NTFSでファイルを管理するための情報の1つ)領域を拡張する場合などにも使われる。
作業上、$MFTや伸張されたクラスターなどは、ディスク上に記憶しなければならず、この操作ができないとNTFSが処理を完了できなくなり、最悪システムがデッドロック状態に陥ってしまう。このため、あらかじめクラスターを予約領域として確保し、作業領域が確保できることを保証しておく。
隠しファイルなど違うのは、NTFS自体が未割り当てのクラスターとして領域を管理するところにある。つまり、空き容量を減らすもののファイルとしては存在していないため、ファイルやフォルダーなどへの割り当てクラスターを合計した総利用容量には含まれない。
予約済み記憶域とは、必要な容量のクラスターを予約クラスターとすることで、ドライブの空き容量からは除外され、通常のファイル書き込み操作などで使われてしまうこともない。おそらく、一時ファイルに対しては、専用のAPIを使うなどし予約クラスターを使ってファイルを作成するか、あるいは一時ファイルであることを示すフラグなどがあるのかもしれない(これについては別の機会に調べたい)。

この連載の記事
-
第472回
PC
WindowsのエラーをMicrosoftに送信するテレメトリ機能を理解する -
第471回
PC
Windowsのコマンドラインでエイリアスを使う -
第470回
PC
Windows用のパッケージマネージャー「Winget」 プレビュー版で機能が充実してきた -
第469回
PC
Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に -
第468回
PC
2025年のWindowsどうなる!? Windows Insider Programの状況をあらためて見る -
第467回
PC
Copilot+ PCのNPUでカメラを処理する「Windows Studio Effects」 その内容や効果は? -
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う - この連載の一覧へ