ゆとりずむ

東京で働く意識低い系ITコンサル(見習)。金融、時事、節約、会計等々のネタを呟きます。

OS起動時に書き込まれるフォルダをRAMディスクに移して高速化

本記事は、ある程度Windowsの操作に習熟している方を対象として記載しております。コマンドプロンプトって何?』といった人は想定しておりません。また、本記事記載の内容を実行し、『PCが立ち上がらなくなった』などの問題が起こる可能性が御座ます。実施の際は、各位の自己責任にてお願い致します。

0.目的

PCを起動しようとしても、延々とディスクがカリカリ言いながら中々立ち上がらない(´・ω・`)。そこで、起動時に書き込まれるフォルダをRAMディスクに移し、起動速度の高速化に挑戦してみました。

1.RAMディスクの準備

ご存知の方も多いかと思いますが、RAMディスクとはPCの物理メモリ上の一定区間をHDDとして扱えるようにしたものです。
Ramディスクを作成することのできるツールは多数ありますが、今回はVsuite Ramdiskを利用します。本ソフトの利点は、無料版でも

  1. Windowsが利用できないメモリ領域を利用できる
  2. PCシャットダウン時にRAMディスク上のデータを保存し、再起動時に復元できる


といった機能が利用できます。Windows(正確には32bit版のみかな?)では、4GBのメモリを搭載していてもその全てを使い切ることができません(いわゆる3.3GBの壁)。本ソフトでは、そうして全く利用されていなかった領域をHDDとして認識させることができます。
また、RAMディスクは情報が磁気的に保存されませんので、再起動するとデータが消失します。本ソフトでは、PCシャットダウン時に、その時点のデータをdiskimageとしてHDDに保存し、再起動時に復元することができます。(なお、有料版であれば、一定期間毎に保存したりもできるようです)これは、大変便利な機能ですが、PCが不正に終了された場合にはデータが保存されませんし(次回起動時は、直近の保存済データとなる)、大容量のRAMディスクを作成すると、終了時の書込・起動時の読込に時間が掛かることになりますので、注意が必要です。
細かい使い方の説明はさておき、今回はこのような設定にて準備致しました。

2.起動時に作成・更新・削除されているファイルの多いフォルダの特定

次に、起動時に作成・更新・削除されているファイルの多いフォルダの特定を行いたいと思います。それには、Moo0 ファイルモニターというソフトを利用します。
このソフトは、作成・更新・削除されたファイルとそのフォルダ、時刻を取得することができます。また、その結果をHTML形式で出力することも可能です。
これといった設定は必要ありませんが、表示設定メニューより、(1)リフレッシュ頻度をリアルタイム (2)ログ取得数を最大 (3)システムと同時起動をオン にして再起動すると、システム起動からディスクの内容を変更した処理を取得していくことができます。
後は、結果より、フォルダ列を並び替えるか、結果をエクセルに取り込みピポットで集計するなりし、書込の多いフォルダを特定します。(ちなみにこんな感じのソフト)

3.ジャンクションの設定

最後に、ジャンクションを作成します。ジャンクションとは、システムが特定のフォルダを参照した際に、別のフォルダを参照するようにリンクを貼ることができる機能です。これで、C:\Test\hoge へのアクセスを、D:\Test\hoge へのアクセスとして読み替えさせ、HDDではなくRamディスクに書込をさせることが可能です。
ジャンクションはマイクロソフト謹製の追加プログラムを取得・導入することによって設定可能です。追加プログラム導入手順は以下の通りです。

  1. Junction より、exeファイルをダウンロード
  2. パスの通っているフォルダ (コマンドプロンプトでpathと打ってenterで出てくるフォルダ。C:\WINDOWS\system32など)に、ダウンロードファイルを保存


以上。簡単でしょう?(゚д゚)
では次に、ジャンクションを作成する方法です。C:\Test\hoge へのアクセスを D:\Test\hoge に飛ばすものとして作成してみましょう。

  1. 行き先のディレクトリを作成 mkdir "D:\Test\hoge"
  2. 元のディレクトリを削除 rmdir "C:\Test\hoge"
  3. ジャンクションを作成 junction "C:\Test\hoge" "D:\Test\hoge"


まずはこんな感じと。

junctionコマンドは

junction "ここにアクセスしたら" "ここを参照せよ"

の形で記載します。成功すると、このように、通常のオブジェクトと異なり左下に小さなマークが付きます。

ジャンクションを作成する前に、参照元のオブジェクトが存在せず、参照先のオブジェクトが存在することが必要になります。
因みに、参照元をExplorer上から削除し、再度同名のフォルダを作成した場合、ジャンクション機能は動作しません。しかし、ジャンクションとしては残っているようで、再度上記コマンドでジャンクションを設定しようとするとエラーになります。ジャンクションを貼り直す為には、

  1. 再作成したフォルダを削除
  2. junction -d "参照元フォルダ名"


にて、ジャンクション削除の上で、再作成をする必要があります。
なお、ジャンクションは再起動しても残りますので、特に再設定する必要はありません。

4.効果

起動時の更新フォルダを確認し、IEの履歴やTempフォルダなどの設定によってアクセス先をRamディスクに変えられるものについては簡単だったのですが、ウイルス対策ソフトのパターンフォルダやWindowsのログフォルダの変更方法が分からなかったため、ジャンクションを作成しました。

起動時間を測定したわけではありませんが、実感として

  1. 電源を入れてから、マウスポインタがサクサク動くまでの時間は早くなった。
  2. ディスクが静かになった。


といった効果を得ることが出来ました。本当はもっと大物のフォルダを貼り直したかったのですが、システム上重要そうなフォルダだったので、今回はパスとしましたので、十分安全圏内で改善が出来たと思っています。
再度の確認になりますが、実施に当たっては、十分にご注意下さい。(起動時間が早くしようとして、データを壊し、その復旧に時間が掛かっては意味がありませんので)。