# Windowsのhiberfil.sysとpagefile.sysは縮小できるか

エクスプローラーで隠しファイルを表示し、「保護されたオペレーティングシステムファイルを表示しない」を外すと、Cのルートに2つの大きなファイル、`hiberfil.sys`と`pagefile.sys`が現れます。どちらもインストール済みメモリに合わせて大きくなりがちです。既定の比率では、休止状態ファイルだけでもメモリ32GBのPCで約12.8GBになります。どちらもWindowsが使っているので、コンテキストメニューから削除はできません。よくある助言は、休止状態をオフにするか、仮想メモリを「ページングファイルなし」にすることです。それで容量は戻りますが、先に何を失うかを知っておく価値があります。

## hiberfil.sysの中身

`hiberfil.sys`は休止状態ファイルです。休止状態に入ると、Windowsはメモリの内容をここに書いて電源を切り、次の起動で読み戻すので、開いていたアプリは元の場所にあります。休止状態を使わないPCにもあることが多いのは、高速スタートアップがこれに依存するからです。高速スタートアップがオンのとき、シャットダウンはセッションをサインアウトし、カーネルの状態をこのファイルに保存します。次のコールドスタートは、最初から起動する代わりに、ここから再開します。

Microsoftの[システム電源状態のドキュメント](https://learn.microsoft.com/en-us/windows/win32/power/system-power-states)は、休止状態ファイルを2種類に分けています。完全なファイルは物理メモリの約40%が既定で、休止状態、ハイブリッドスリープ、高速スタートアップを支えます。縮小したファイルはメモリの約20%で、支えるのは高速スタートアップだけです。

## 休止状態をオフにするのと縮小版に切り替える違い

管理者として`powercfg /h off`を実行すると、`hiberfil.sys`が削除され、休止状態、ハイブリッドスリープ、高速スタートアップがまとめてオフになります。[Microsoftの記事](https://learn.microsoft.com/en-us/troubleshoot/windows-client/setup-upgrade-and-drivers/disable-and-re-enable-hibernation)は、ハイブリッドスリープがないと、スリープ中の電源喪失で未保存の作業が失われ得ると警告しています。

高速スタートアップだけが欲しく、休止状態は使わないなら、ファイルの種類を縮小に切り替えます。

```cmd
powercfg /h /type reduced
```

メモリの40%と20%なので、32GBのPCはおよそ12.8GBから6.4GBになり、約6GB戻ります。代償は、電源メニューから休止状態が消え、充電器から外して閉じたノートPCが、セッションを守るために休止状態へ移らなくなることです。以前に`/size`で独自のサイズを設定したことがあるなら、[powercfgのリファレンス](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options)は、先に`powercfg /h /size 0`を実行してWindowsにサイズを管理させ、それから種類を変えるよう書いています。縮小に切り替えただけなら、下のコマンドで完全な種類に戻します。休止状態をオフにしたなら、先に管理者として`powercfg /h on`を実行して、もう一度有効にします。

```cmd
powercfg /h /type full
```

## pagefile.sysを完全にはオフにしない

`pagefile.sys`はページングファイルです。メモリが逼迫すると、Windowsはあまり使われない変更済みのページをここに書き、システムが停止したときに書かれるクラッシュダンプの受け皿にもなります。[Microsoftのページファイルのガイダンス](https://learn.microsoft.com/en-us/troubleshoot/windows-client/performance/how-to-determine-the-appropriate-page-file-size-for-64-bit-versions-of-windows)は、この点を直接書いています。ページファイルも専用のダンプファイルもなければ、クラッシュダンプは作られません。ページファイルがないと、コミット制限、つまりWindowsがプログラムに約束できるメモリの量が、インストール済みRAMをわずかに下回るので、メモリがどれだけあっても大きな割り当ては失敗し得ます。

既定のシステム管理サイズは、インストール済みメモリ、クラッシュダンプの設定、実際の使用に合わせて増減します。通常はRAMの3倍か4GBの大きい方までで、ボリュームの8分の1が上限です。クラッシュダンプの要件で、その上限を超えて増え、空きが1GBまで減ることがあります。大きな`pagefile.sys`は、メモリ需要、使用履歴、ダンプ設定のどれかを映していることがあり、サイズだけでは原因は分かりません。

## ページングファイルを別のドライブへ移す

2台目の内蔵ドライブがあるなら、そこにページファイルを追加できます。選んだクラッシュダンプの種類に対する代替を設定して確認するまでは、Cのシステム管理のページファイルを残します。Dに十分大きなファイルがあるだけでは、これは成立しません。[完全メモリダンプ](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/complete-memory-dump)には起動ドライブの要件があり、専用のダンプファイルには独自の設定が必要です。

1. `Win + R`を押し、`sysdm.cpl`と入力してシステムのプロパティを開きます。
2. 「詳細設定」タブで、パフォーマンスの「設定」をクリックし、もう一度「詳細設定」タブを開いて、仮想メモリの「変更」をクリックします。
3. 「すべてのドライブのページングファイルのサイズを自動的に管理する」のチェックを外します。
4. Dを選び、「システム管理サイズ」を選んで「設定」をクリックします。
5. 代替のダンプ設定を確認するまでは、Cは「システム管理サイズ」のままにし、確認して、求められたら再起動します。

Dにページファイルを足しても、それだけではCの空きは増えません。Cのファイルを減らす必要があるなら、先にMicrosoftの専用ダンプ設定のガイダンスに従い、選んだダンプの要件を確認します。そうしないと、次のブルースクリーンで調査用のダンプが残らないことがあります。外付けやリムーバブルのドライブは、ページファイルの置き場所に向きません。

| ファイル | 用途 | 容量を戻すには | 覚えておくこと |
| --- | --- | --- | --- |
| `hiberfil.sys` | 休止状態、ハイブリッドスリープ、高速スタートアップ | `powercfg /h /type reduced` | 縮小すると休止状態はなくなる |
| `pagefile.sys` | ページングとクラッシュダンプ | ダンプ設定を確認したあと、別の内蔵ドライブを検討する | 確認するまではCをシステム管理のままにする |

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-hiberfil-pagefile-c-drive-windows-en-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-hiberfil-pagefile-c-drive-windows-en.webp" width="1360" height="454" loading="lazy" alt="2種類の休止状態ファイルとページファイルの用途">
  </picture>
  <figcaption>完全な休止状態ファイルは休止状態と高速スタートアップを支え、縮小したものは高速スタートアップだけを残し、ページファイルはページングとクラッシュダンプの両方を扱います。</figcaption>
</figure>

## 結果の確認

一度再起動し、選んだ設定とファイルを照合します。縮小した休止状態では`hiberfil.sys`が小さくなり、休止状態をオフにするとファイルは消えます。Cにページファイルが残るなら、`pagefile.sys`はそこにあります。仮想メモリを開き直して各ドライブの設定を確認し、ストレージの設定で空き容量を見ます。それから数日、普通にPCを使います。起動、ふたを閉じたとき、いつもの大きなアプリがまだ期待どおりかで分かることの方が、直後に見た数字より多いです。大きなファイルを探し続けるなら、[Windowsで大きなファイルを探す](/ja/windows/blog/find-large-files-on-windows)と[Windowsのメモリ使用率が高いとき](/ja/windows/blog/windows-high-memory-usage)へ進みます。


Canonical: https://mole.fit/ja/windows/blog/hiberfil-pagefile-c-drive-windows
