Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

【Windows】肥大化したシステムボリューム情報フォルダを安全にクリーンアップする方法

Windows Server 2016が稼働するサーバーで、システムドライブ(C:\)の空き容量が枯渇するトラブルが発生しました。WinSxSフォルダやTEMPフォルダ、無効になったユーザープロファイル、古い更新プログラムのファイルなど、ディスクを消費しがちな場所を一通り確認してクリーンアップしましたが、効果はほとんどありませんでした。最終的にたどり着いた犯人は、システムドライブの大部分を占有していた「System Volume Information(システムボリューム情報)」フォルダでした。本記事では、このフォルダがWindowsでどのような目的に使われているのか、何が保存されているのか、そして適切にクリーンアップする方法を詳しく解説します。

システムボリューム情報フォルダへのアクセス方法

System Volume Informationフォルダは、ローカルのHDDやSSD、USBメモリ、SDカードなど、すべてのドライブのルートに自動的に作成されます。システムの復元、検索インデックス、ファイル履歴など、システムに関わる重要なデータが格納されています。

既定ではこのフォルダは非表示になっており、アクセスできるのはNT AUTHORITY\SYSTEMアカウントのみです。エクスプローラーで表示するには、「保護されたオペレーティングシステムファイルを表示しない」オプションをオフにするか、次のPowerShellスクリプトを実行します。

$regkey = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced'
Set-ItemProperty $regkey Hidden 1
Set-ItemProperty $regkey HideFileExt 0
Set-ItemProperty $regkey ShowSuperHidden 1
Stop-Process -ProcessName explorer

管理者権限を持っていても、通常の方法ではフォルダの中身を開けません。任意のユーザー(組み込みのAdministratorアカウントを含む)でエクスプローラーから開こうとすると、アクセス拒否エラーが表示されます。

場所は利用できません。
C:\System Volume Information にアクセスできません。
アクセスが拒否されました。

フォルダの内容を確認するには、自分自身をディレクトリの所有者に変更し、NTFSアクセス許可を付与する必要があります(フォルダのプロパティにある「セキュリティ」タブから操作可能)。コマンドプロンプトから実行する方が手早く済みます。

takeown /f "C:\System Volume information"
icacls "C:\System Volume Information" /grant woshub\jwolf:F

フォルダのプロパティの「セキュリティ」タブで、自分のアカウントに「フルコントロール」権限が付与されていることを確認してください。

また、PsExecを使ってNT AUTHORITY\SYSTEM権限でPowerShellコンソールを起動すれば、所有権を変更せずに中身を確認することもできます。

PsExec.exe -i -s powershell.exe

フォルダの内容を表示するには、次のコマンドを実行します。

Get-ChildItem 'C:\System Volume Information\'

フォルダのサイズは、次のPowerShellコマンドで確認できます。

(Get-ChildItem 'C:\System Volume Information\' | measure Length -s).sum / 1Gb

作業が終わったら、元のアクセス許可に戻しておきましょう。

icacls "C:\System Volume Information" /setowner "NT Authority\System"
icacls "C:\System Volume Information" /remove woshub\jwolf

システムボリューム情報フォルダには何が保存されているのか?

System Volume Informationフォルダには、主に以下のようなサービスのデータが保存されています(網羅的なリストではありません)。

  • WindowsImageBackup — デスクトップ版Windowsのシステム復元ポイント、またはサーバーOSでWindows Server Backup(wbadmin)を使って作成したシステム状態バックアップ
  • 高速なファイル検索(Outlookの検索を含む)に使われるインデックスサービスのデータベース
  • 分散リンク追跡サービス(Distributed Link Tracking Service)のデータベース
  • ボリュームシャドウコピー(VSS)によるディスクのスナップショット。旧バージョンのファイル復元に使用され、スナップショットごとに長いIDを名前とする個別のファイルが作成される
  • NTFSディスククォータの設定情報
  • データ重複排除サービスのベースとチャンク
  • DFSレプリケーションのデータベース(dfsr.db)
  • WPSettings.dat — ストレージサービス(StorSvc)によって作成されるファイル
  • USBドライブには、Windows Searchサービスが利用する一意のディスクラベルを定義するIndexerVolumeGuidファイルも保存される
  • AppxProgramDataStaging、AppxStaging — Windows UWPアプリのバックアップ(アンインストール後の復元に使用可能)

コンピューターやサーバーでシャドウコピーを使って、ファイルやシステム状態を以前の状態に戻している場合は注意が必要です。新しいVSSスナップショットを作成するたびにデータがこのフォルダに書き込まれ、サイズが増えていきます。シャドウコピーの作成頻度が高く、ディスク上のファイルの更新も多いほど、フォルダサイズは急速に肥大化します。

実際、System Volume Informationフォルダ内に160GBを超える巨大なシステムファイルが存在するケースもあります。

システムボリューム情報フォルダのクリーンアップ方法

注意: System Volume Informationフォルダ内のファイルを手動で削除することは推奨されません。システム復元に必要な情報や、一部の重要なサービスのデータが格納されているためです。

システムの復元ポイントとファイル履歴を無効化すれば、このフォルダを根本的に空にできますが、常に許容できる手段とは限りません。まずは、フォルダに何が保存されているのかを把握しましょう。シャドウコピーの使用状況統計を表示します。

vssadmin list shadowstorage
vssadmin 1.1 - Volume Shadow Copy Service 管理用コマンドライン ツール
シャドウコピー記憶域の関連付け
対象ボリューム: (C:)\\?\Volume{843c6330-9866-11e5-80b3-806e6f6e6942}\
シャドウコピー記憶域ボリューム: (C:)\\?\Volume{843c6330-9866-11e5-80b3-806e6f6e6942}\
使用済みシャドウコピー記憶域: 912 MB (2%)
割り当て済みシャドウコピー記憶域: 1.20 GB (3%)
最大シャドウコピー記憶域: 3.98 GB (10%)

この例では、システムドライブ(C:)の10%がシャドウコピー用に割り当てられており、そのうち実際に使用されているのは2%だけです。Maximum Shadow Copy Storage spaceの値がUNBOUNDEDになっている場合、シャドウコピーの上限が設定されておらず、空きディスク領域をすべて消費する恐れがあります。Windowsでは既定で、ディスク全体の10%がシャドウコピーの保存領域として割り当てられます。

vssadminコマンドを使えば、VSSのディスク使用量上限を2GBに引き下げることもできます。構文は次のとおりです。

vssadmin resize shadowstorage /on=[ドライブ文字]: /For=[ドライブ文字]: /MaxSize=[最大サイズ]

実行例は以下のようになります。

vssadmin resize shadowstorage /on=c: /for=c: /maxsize=2GB

Windows Server Backup(WBAdmin)でシステム状態バックアップを作成している場合、古いシステム状態コピーは次のコマンドで一括削除できます(Windows Serverエディション限定)。

wbadmin delete systemstatebackup -keepversions:0

Windows Serverで古いVSSスナップショットを素早く削除するには、diskshadowツールが便利です。

DiskShadow
Delete shadows OLDEST c:\

このコマンドを実行するたびに、最も古いシャドウコピー(スナップショット)が1つずつ削除されていきます。

なお、Windows 10でwbadmin delete systemstatebackupを実行すると、「DELETE BACKUPコマンドはこのバージョンのWindowsではサポートされていません」というエラーが表示されます。デスクトップOS(Windows 10/8.1/7)では、復元ポイントとその上限はGUIからのみ管理できるためです。「システムのプロパティ」を開き、「システムの保護」タブをクリックします。

システムドライブを選択して「構成」ボタンをクリックすると、復元ポイントの保存用クォータ設定ダイアログが開きます。ここでシャドウコピー用のディスク容量を減らせるほか、「削除」ボタンで既存の復元ポイントをすべて消去したり、「システムの保護を無効にする」を選択して復元ポイントの作成自体を停止したりできます。

その他、System Volume Informationフォルダのサイズを縮小する方法としては、以下が挙げられます。

  • VSSデータを別のNTFSドライブへ移動する(vssadmin add shadowstorage /for=c: /on=d: /maxsize=30%)
  • Windowsのファイル履歴機能を無効化または再設定する
  • クリーンアップツール(cleanmgr.exe)でシステムファイルを整理する(ドライブのプロパティ→ディスクのクリーンアップ)

重複排除(Dedup)のChunkStoreをクリーンアップする

Windows ServerでSystem Volume Informationフォルダの中身を分析すると、Dedup\ChunkStoreディレクトリが大量のスペースを消費していることに気づくことがあります。これは、そのボリュームでファイル重複排除機能が有効になっていることを意味します。

Windowsのデータ重複排除サービスは、ボリューム上のファイルから同一のチャンク(断片)を検出すると、それを一意のチャンクへのリンクに置き換えます。この一意チャンクはSystem Volume Informationフォルダに保存されます。重複排除されたボリュームからファイルを移動・削除しても、古いチャンクはすぐには削除されません。これらのブロックは、週に1回実行される特別なGarbageCollectionジョブによって削除されます。そのため、重複排除が有効なボリュームでは、空き容量がすぐには回収されないのです。

未使用チャンクの削除処理を即座に開始するには、次のPowerShellコマンドを実行します。

start-dedupjob -Volume C: -Type GarbageCollection

続けて、残ったチャンクの整合性をチェックするジョブを実行します。

start-dedupjob -Volume C: -Type DataScrubbing

ジョブの進行状況は、Get-DedupJobコマンドレットで監視できます。ジョブ完了後、System Volume Informationフォルダ内の未使用チャンクが削除され、追加のディスク領域が解放されます。

なお、Start-DedupJob -Volume D: -Type Unoptimizationコマンドでボリュームの重複排除を無効化する際は注意が必要です。このコマンドはSystem Volume Informationフォルダ内の全チャンクを削除し、最適化が解除されたボリューム上のファイルは元のサイズに戻ります。最適化を無効化する前に、十分な空きディスク容量があることを必ず確認してください。

  1. プロのように Windows 10 PC をクリーンアップする方法

    古いものであろうと新しいものであろうと、遅くて動きの遅いシステムを使用することを好む人はいません。そのため、PC をクリーンアップしてパフォーマンスを向上させる方法を探している場合は、適切な場所にいます。 この投稿では、ジャンク ファイル、不要なデータ、キャッシュ、Cookie を取り除き、Windows 10 マシンをクリーンアップするための最良の方法について説明します。 通常、コンピューターは 5 年半は問題なく動作しますが、場合によってはそれよりも早く遅くなることがあります。これはユーザーを苛立たせるだけでなく、生産性も低下させます。そうは言っても、Windows 10で不要なフ

  2. Windowsレジストリクリーナーでレジストリを最適化する方法【Advanced System Optimizer活用ガイド】

    Windowsレジストリとは、Windows 10パソコンに適用されるすべての設定情報を格納した階層型データベースのことです。つまり、システム上で行ったすべての変更はレジストリに反映され、その逆もまた然りです。GUI(グラフィカルユーザーインターフェース)では提供されていない設定項目も多く、そうした場合にはレジストリを直接編集することで目的の動作を実現できます。 しかし、システムへのあらゆる変更がレジストリに蓄積されていくため、不要なエントリーや重複エントリーが次第に増えていきます。こうしたジャンクデータを放置すれば、レジストリクリーナーソフトウェアによる定期的なメンテナンスが不可欠となります