HKLMSOFTWARE のサイズ確認方法と、肥大化した場合の圧縮方法
こんにちは、Windows プラットフォーム サポート 横瀬です。
Windows プラットフォームのシステム管理をする上で、避けて通れないのがレジストリですよね。
今回は、このレジストリの中で、比較的サイズが大きくなりやすい HKLM\SOFTWARE のサイズを
確認する方法と、万が一肥大化している場合に、サイズを圧縮する方法をご紹介いたします。
こちらの技術情報では、圧縮する手順の中で、レジストリの元となるファイル (レジストリ ハイブ) が
オペレーションの対象となっております。圧縮作業を実施する際には、慎重に作業いただきますよう
お願いいたします。万が一、置き換え対象を間違えたりした場合、システムが起動できなくなる場合も
あります。
▼ 事前準備
1. Windows Sysinternals のサイトから Registry Usage と PendMoves/MoveFile を
ダウンロードします。
Registry Usage (ru.exe)
https://technet.microsoft.com/ja-jp/sysinternals/dn194428
PendMoves と MoveFile
https://technet.microsoft.com/ja-jp/sysinternals/bb897556
▼ レジストリのサイズ確認する手順
1. 管理者権限をもったユーザーでログオンします。
2. コマンド プロンプトを "管理者として実行" で起動します。
3. ru.exe を使用して、HKLM\SOFTWARE のサイズを確認します。
> ru.exe HKLM\SOFTWARE
※ サイズが大きい場合、表示されるまでに時間がかかる場合があります。
気長にお待ちくださいませ。
例)
> ru.exe HKLM\SOFTWARE
Ru v1.0 - report registry key usage
Copyright (C) 2013 Mark Russinovich
Sysinternals - www.sysinternals.com
Values: 259999
Keys: 174423
Size: 30,833,788 bytes
Size を確認し、1GB (1,073,741,824 byte) 以上のサイズであった場合には、
圧縮をご検討ください。
▼ 肥大化した HKLM\SOFTWARE のレジストリ ハイブを圧縮する手順
1. 管理者権限をもったユーザーでログオンします。
2. レジストリ エディター (regedit.exe) を起動します。
3. 現在のレジストリ キー (HKLM\SOFTWARE) を基に、サイズを圧縮させた
レジストリ ハイブを作成します。
3-1. 以下のキーまで移動し、右クリックし "エクスポート" を
クリックします。
HKEY_LOCAL_MACHINE\SOFTWARE
3-2. エクスポート画面にて、C ドライブの何れかのフォルダーを
指定します。
3-3. エクスポート画面にて、ファイルの種類を "レジストリ ハイブ ファイル" を
クリックし、任意のファイル名をつけて保存します。
例)
ファイル名: SOFTWARE-new
ファイルの種類: レジストリ ハイブ ファイル (*.*)
選択された部分: HKEY_LOCAL_MACHINE\SOFTWARE
4. 手順 3 で圧縮したレジストリ ハイブと、元々のレジストリ ハイブのサイズを
比較します。
※ 元々のレジストリ ハイブは C:\Windows\System32\config\SOFTWARE です。
▼ 圧縮した HKLM\SOFTWARE のレジストリ ハイブと、元のレジストリ ハイブを置き換える手順
1. 管理者権限をもったユーザーでログオンします。
2. コマンド プロンプトを “管理者として実行” にて起動します。
3. 事前準備でダウンロードした PendMoves と MoveFile の場所に移動し、
以下のコマンドを実行します。
例) 圧縮したレジストリ ハイブが C:\tmp\SOFTWARE-new だった場合
> movefile.exe C:\Windows\System32\config\SOFTWARE C:\Windows\System32\config\SOFTWARE-old
> movefile.exe C:\tmp\SOFTWARE-new C:\Windows\System32\config\SOFTWARE
【 補足 】
上記はシステム再起動のタイミングで、肥大化したレジストリ ハイブに
-old をつけて、リネームしておき、その後、圧縮したレジストリ ハイブに
置き換えるよう、設定しています。
4. 以下のコマンドを実行し、指定したオペレーションの順番 (リネームの後、置き換えを行う) を
再度、確認します。
> pendmoves.exe
例) 実行結果の例
PendMove v1.2
Copyright (C) 2004-2013 Mark Russinovich
Sysinternals - wwww.sysinternals.com
Source: C:\Windows\System32\config\SOFTWARE
Target: C:\Windows\System32\config\SOFTWARE-old
Source: C:\tmp\SOFTWARE-new
Target: C:\Windows\System32\config\SOFTWARE
5. システムを再起動します。
6. 再起動後、冒頭のサイズ確認手順にて、レジストリのサイズを確認します。
> ru.exe HKLM\SOFTWARE
▼ SQL Server 2012 SP1 を利用している環境についての補足
SQL Server 2012 SP1 の利用環境で、HKLM\SOFTWARE が肥大化している場合、
以下のブログで掲載している不具合に合致する可能性があります。
レジストリ ハイブの肥大化について(KB 2793634)
https://blogs.msdn.com/b/jpsql/archive/2014/08/29/kb-2793634.aspx
ブログ内で紹介している Service Pack 2 をご適用の上、上述の圧縮手順をお試しください。
▼ 補足
レジストリの肥大化について、マイクロソフト サポートにお問い合わせいただく場合には、
肥大化しているキーの詳細を確認するため、以下のコマンドラインで情報を採取いただけますと、
調査がスムーズに進む場合があります。
例) HKLM\SOFTWARE が大きかった場合の情報採取
> ru.exe -v -c HKLM\SOFTWARE > registory-list.csv 2>&1
上記 registory-list.csv をサポート担当者に、ご提供ください。