このページの本文へ

前へ 1 2 次へ

Windows Info第156回

32GBストレージのWindows 10機でもアップデート可にするための「予約済み記憶域」を調べる

2019年01月20日 10時00分更新

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

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

Windows Updateを確実に実行するための「予約済み記憶域」
パーティションやファイルとしては見ることができない!?

 今回の記事では、前回(次期Windows 10では領域確保でストレージ32GB機でも確実にアップデート)の続きとして、現在プレビュー版が公開中の19H1に実装された「予約済み記憶域」(Reserved Storage)を調べていく。この予約済み記憶域は、Windows Update時などに必要な作業領域を確保するためのものだ。

予約済み記憶域を有効にした32GBストレージマシンをWindows Insider Preview Build 14317にアップデートしたところ、空き容量は5.32GBとなった

 問題は、どういう方法で記憶域の容量を確保しているかである。Windows 10上でパーティションを調べたが、特に新しいものは作られておらず、別パーティションを確保しているというわけでもないようだ(Unix系OSでは、パーティションを使って、スワップ領域やテンポラリーディレクトリーの容量を確保する)。

パーティション状態を調べて見たが、予約済み記憶域のために新たにパーティションは作られてはいないようだ

 また、あらかじめ大きなファイルを作っておいて、その中に入れるという手法でもない。ドライブ内のファイルをファイルサイズで検索してみたが、予約済み記憶域の容量に相当するような大きさのファイルは存在しなかった。

システム内の1GB以上のファイルを検索してみたが、それらしいものはみつからなかった

 予約済み記憶域に関しては「設定」→「システム」→「ストレージ」→「システムと予約済み」に表示されるほか、「同」→「一時ファイル」にも、「最大××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であるのに対して、設定されている場合は、

予約済み記憶域が有効ではないシステムでは、予約クラスター(Reserved clusters)は94MB程度しかない

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も予約クラスターがあるのだ。この表示は、「設定」→「システム」→「ストレージ」→「システムと予約済み」に表示される予約済み記憶域の数字と近いものだ。

予約済み記憶域が有効なシステムでは、予約クラスターは、3.2GBもある

 つまり、予約済み記憶域は、この予約クラスターを使って実現しているようだ。NTFSの予約クラスターとは、圧縮ファイルなどを利用する場合など、NTFSが作業に必要なクラスターを確保しておくための機能である。

 予約クラスターは、伸張したクラスタなどに対して読み書きの処理が行われている間に該当クラスターを格納するために使われる。予約クラスターは、圧縮ファイル専用というわけではなく、このほかに$MFT(マスターファイルテーブル。NTFSでファイルを管理するための情報の1つ)領域を拡張する場合などにも使われる。

 作業上、$MFTや伸張されたクラスターなどは、ディスク上に記憶しなければならず、この操作ができないとNTFSが処理を完了できなくなり、最悪システムがデッドロック状態に陥ってしまう。このため、あらかじめクラスターを予約領域として確保し、作業領域が確保できることを保証しておく。

 隠しファイルなど違うのは、NTFS自体が未割り当てのクラスターとして領域を管理するところにある。つまり、空き容量を減らすもののファイルとしては存在していないため、ファイルやフォルダーなどへの割り当てクラスターを合計した総利用容量には含まれない。

 予約済み記憶域とは、必要な容量のクラスターを予約クラスターとすることで、ドライブの空き容量からは除外され、通常のファイル書き込み操作などで使われてしまうこともない。おそらく、一時ファイルに対しては、専用のAPIを使うなどし予約クラスターを使ってファイルを作成するか、あるいは一時ファイルであることを示すフラグなどがあるのかもしれない(これについては別の機会に調べたい)。

前へ 1 2 次へ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

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