RAM DISK を使ってみる

SOFTWARE REPORT


RAM DISK

メモリはハードディスクよりも断然早くデータを読み書きすることが出来ます。

ハードディスクと比べて容量が圧倒的に小さくて高価なため、普段はアプリケーション利用時に一時的にプログラムやデータを格納して処理を行うために利用されるのですけど、この一角をハードディスクのように振舞わせ、ファイルの保存場所として利用出来るようにしたものを RAM DISK (ラムディスク) と呼びます。

RAM DISK の特徴は、とにかくアクセス速度が高速ということが挙げられます。保存にかかる時間はほぼ一瞬で、何気なく使う分には気にならないことの多いハードディスクの速度と比べても、その速度は目を見張るほどです。

 

注意すべき点とすれば、メモリはもともと電源を落とせばデータが消える仕組みになっていますので、RAM DISK に保存されたファイルは電源を落とすとすべて消えてしまうところです。

ですので RAM DISK の利用用途としては、作業ファイルを一時的に保存するための用途が一般的になるのかもしれないです。

これでは意味がないと思われる方もいるかもしれませんが、アプリケーションが何か処理をする上で一時的にデータをファイルに書き出すことも良くあることですので、それを RAM DISK にて処理してもらえば、それだけでかなりの速度改善が見込めることもあります。

 

または終了時に自動的に RAM DISK 内のファイルをハードディスクへ書き込むような仕組みを用意できれば、実質的には高速は外部記憶装置 (ハードディスクみたいな、データを保存しておくための装置) としても利用することができます。ただし、この場合は OS がハングアップしたりしたときなどにはデータを失うことになりますので、何かと注意が必要ですけど。

このあたりの仕組みが備わった RAM DISK 装置 (ハードウェア) が販売でもされたら便利そうなのですけどね。

たとえば、DRAM とバッテリーとハードディスクを搭載したハードウェアを用意して、PC からの電源供給がなされなくなった時点で DRAM に保存されているデータを自動的にハードディスクへ書き出して、そして次回に PC からの電源供給がなされた時点でハードディスクから DRAM へとデータを書き出して以前の状態へ復旧してくれるような。

こうすれば OS が正常にシャットダウンしようと、異常終了しようと、RAM DISK としては独自で正常にデータの保持が出来るので、かなり安心できる仕組みになるような気がします。OS だけでも RAM DISK へインストールすることが出来れば、起動もきっと早くなって、とても気軽に PC を立ち上げることが出来そうな気がするのですけど。

 

なんにせよ、このところは DDR SDRAM というものが主流であり、また数年前と比べて安価で大容量になっていますので、自分のような個人であっても 3GB のメモリを載せることが出来ています。

以前はそれなりに大容量のメモリが必要だったり、または増設するにあたってあまったメモリを搭載していたりしていたら、いつの間にやらこんな容量になってしまって、そして今ではこれほど利用することもほとんど無いこともあって、その一角を RAM DISK に割り当ててみることにしました。

 

ERAM という RAM DISK ドライバをインストールする

RAM DISK を実現するに当たって、Windows XP では DAM DISK ドライバをインストールする必要があります。

インターネットで探してみたところ、"えらー15の小屋" さまにて公開されている ERAM for WindowsNT/2000/XP というフリーソフトウェアが見つかり、そして評判もとてもよろしかったので、それを使用させていただくことにしました。

 

上記サイトさまより Version 2.20 をダウンロードして、Windows XP Professional へインストールを行ってみます。

インストール作業は一般的なソフトウェアと違って戸惑ったのですけど、判ってしまえばそれなりに簡単でした。ただし細かな設定をしようとするとややこしかったりするので、事前になり使いながらなり、メモリについての知識を養っておくのが良いかもしれないです。

 

インストール

まず、コントロールパネルから 「ハードウェアの追加」 を選択して、ハードウェアのインストールウィザードを起動します。

そして 「次へ」 をクリックすると、自動的にハードウェアの検出処理が行われた後、インストールしたいハードウェアが接続されているかとたずねられますので、"はい、ハードウェアを接続しています" を選択して次へ進みます。

 

そして 「新しいハードウェアデバイスの追加」 を選択して、続いて 「一覧から選択したハードウェアをインストールする」 を選択したら、「すべてのデバイスを表示」 を選択して行きます。

そして 「ディスクの使用」 ボタンを押してダウンロードした ERAM フォルダの 2000/ フォルダを選択してあげれば、これでインストールは完了となります。

あとは PC 再起動すれば、コントロールパネルから ERAM の設定が可能となります。

 

復元ポイント対策

付属のドキュメントにも記されていますが、Windows XP で ERAM を利用する場合、何かの際に元に戻すための仕組みである "復元ポイント" の情報がすべてのドライブにおいて消去されてしまうという現象が発生するとのことなので、そのための対処をしておきます。

 

これには、システムフォルダ (C:\Windows\system32) 内にある "filelist.xml" ファイルの書き換えを行う必要があります。

ですので間違って壊さないよう、まずはこれをバックアップしておきましょう。バックアップ方法は普通にどこかへコピーしておくだけです。ただしフォルダオプションにて "保護されたオペレーティングシステムファイルを表示しない" にチェックが入っていると、このファイルそのものが見えないので注意しましょう。

バックアップが終わったら一度、マイコンピュータのプロパティにある 「システムの復元」 タブにて 「すべてのドライブでシステムの復元を無効にする」 を選択します。このとき、既に保存されている復元ポイントはすべて消去されるので注意しましょう。

 

そうしたら "filelist.xml" のプロパティから "読み取り専用" のチェックをはずして、テキストエディタにて編集を行います。

ファイルの構造をたどり、次の構造をまず探します。

<PCHealthProtect>

<DIRECTORIES>

<Exclude>

ここの下に ERAM ディスクのドライブレターを登録します。ディフォルトで Z: へ RAM DISK が登録されますので、通常は以下のようになります。ドライブレターを変更した場合は、この記載内容も変更し忘れないように注意しましょう。

<REC>Z:\</REC>

なお、この "filelist.xml" 内には環境変数のような表記がいくつも見られますけど、実際はシステムの環境変数ではないようなので注意しましょう。環境変数が利用できたらドライブ名を変更するときなどに何かと便利そうなんですけどね、残念ながら無理でした。

 

この作業が終わったら、再びマイコンピュータのプロパティを表示して、「システムの復元」 タブにて 「すべてのドライブでシステムの復元を無効にする」 からチェックをはずせば完了です。

 

ERAM を設定する

ERAM の設定は、コントロールパネルの "ERAM" にて行うことが出来ます。

各項目の詳細は付属の文書に記されていますのでそちらをご覧ください。以下では実際にいろいろいじってみたお話を記してみます。

 

OS 管理下のメモリを割り当ててみる

最初は一番手軽そうだった OS 管理のメモリから RAM DISK 領域を確保する方法で使用してみることにしました。

せっかく RAM DISK を利用するのだからハードディスクにスワップされてしまうのはなんだかもったいないので、とりあえず "固定ページ領域" を選択して、ディスクサイズはとりあえず 512MB としてみました…。

そして "実デバイス扱い" の部分はチェックをしないようにしてみました。これは RAM DISK として認識されている方が、OS が何かの際に的確に気を配ることが出来るとのことなので、何か変な事態にならないためにもそうしてみることにしました。

 

これにて Windows を再起動してみたところ、起動後に RAM DISK が認識されていたものの、正常に利用できない状態でした。

エラーメッセージは "ディスクが破損しているか、または Windows と互換性のない形式が使われている可能性があります" とのことでした。これはどうやら、ERAM ディスク以外に FAT 形式のドライブが存在していないのが原因だそうでした。

FAT ドライブが存在していないから、FAT 用のデバイスドライバがロードされない、よって FAT 形式でフォーマットされた ERAM ドライブへアクセスすることが出来ないということです。

 

これを解決する手段として "実デバイス扱い" にチェックを入れれば良いとのお話がありましたので、早速試してみることにしました。すると今度は正常にアクセスすることが出来るようになりました。

実デバイス扱いとすると、アイコンこそ他のハードディスクと区別がつかなくなるものの、でもフォーマットしなおすことは出来ないし、"ディスクの管理" にも候補としては乗らないみたいなので、まったくハードディスクと一緒ということにはならないようです。

 

ともあれとりあえず、Internet Explorer の一時ファイル保存場所として設定してみようとしたのですけど、いざ設定しようとしてみたところ、どうしても割り当て容量が 0 にしかならなくて困ってしまいました。いろいろと試みたのですけど上手く行かず、おかしいなぁ、といろいろ調べていたら、単にディスク容量が 512kB に設定されていたのが原因だったり…。

そこで ERAM の割り当て容量のところに 512000 と入力して再起動してみたところ、今度は ERAM ドライブが無くなってしまいました。

どうしたものかと調べてみると、"イベントビュア" に ERAM のエラーがいっぱい登録されていました。内容は、メモリの確保に失敗したとのことです。説明書を読み返してみると、32MB 以上のメモリを RAM DISK に割り当てる場合は、OS 管理のメモリの場合には上手く行かないことがあるとのことでした。

さすがに 32MB ではたいしたことが出来なそうなので、ここはやや面倒そうな OS 管理外のメモリを割り当ててみることとしました。

 

OS 管理外のメモリを割り当ててみる

OS 管理外のメモリを割り当てるために、まずは OS に認識させるメモリ容量を減らす必要があります。

これは Windows XP の場合は、ルートディレクトリ (C:\) に保存されている "boot.ini" ファイルを書き換えることで行えます。なお、このファイルも OS によって保護されていますので、フォルダオプションの "保護されたオペレーティングシステムファイルを表示しない" からチェックをはずしておかないと、見つけられないようになっています。

 

このファイルを直接編集することになるのは変わりないのですけど、これを編集するためにはまず、マイコンピュータのプロパティから 「詳細設定」 タグを選択して、【起動と回復】 の 「設定」 ボタンを押します。

そして 「起動と回復」 ダイアログの "起動のオプションファイルを手動で編集するには [編集] をクリック" と書かれた隣の 「編集」 ボタンを押すことで、"boot.ini" ファイルの編集を行うことが出来ます。

そして次のような行を見つけます。

[operationg systems]

multi(0)disk(0)rdisk(0)partithin(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn

この multi(0) から始まる行をコピーして、もうひとつ、次のような /MAXMEM オプションを付加した行を追加します。なお引用符でくくられた文字列は見出しみたいなものですので、メモリ制限を行っていることを判りやすいように、何か文字列を追加しておくのがお勧めです。

multi(0)disk(0)rdisk(0)partithin(1)\WINDOWS="Microsoft Windows XP Professional (RAM DISK)" /fastdetect /NoExecute=OptIn /MAXMEM=1536

この /MAXMEM オプションは、OS が利用するメモリの最大値を MB 単位で指定するものです。上の例の場合は、OS が 1536MB までを利用するということで、それより先のメモリはあまるということになります。

編集が終わったら保存して閉じ、先ほどのダイアログの "既定のオペレーティングシステム" のところで、新たに追加したものを選択しておきます。こうすることで次回起動時には新しい設定の方が採用されるようになります。

なお、同じくそのダイアログの中の "オペレーティングシステムの一覧を表示する時間" に設定されている秒数だけ候補の選択待ちになりますので、うまく行かなかった場合に選びなおすことも出来ますし、また、選択待ちの時間が長いような場合にはここを調整すれば短縮できます。ただし、選択を省略したい場合でも、万一の場合に備えて 3 秒くらいは待ち時間を設定しておくのがお勧めです。

 

この設定が終わったら、とりあえず再起動はせずに、ERAM の方の設定も調整してしまいましょう。

メモリ全体は 3GB だったので、OS が 1536MB までの利用としたことで、余ったメモリも丁度半分の 1536MB です。ですのでそれだけメモリを割り当てることが出来るはずではありますけど、とりあえずは 512MB の設定のまま、確保元を OS 管理外領域からに変更してみます。

"メモリの確保元" にて "OS 管理外領域" を選択し、その下の "OS 管理外領域" にて、"メモリの上限を検出" と、"OS に通知" にチェックを入れておきます。また "開始位置指定" にはチェックを入れずにおきます。

 

そして Windows を再起動してみたところ、無事、512MB の RAM DISK が認識されました。問題なく動作することが確認できたので、改めてディスクサイズを 1,572,864 kB に設定し、1.5GB の RAM DISK も問題なく用意することが出来たようです。

 

仮想メモリに割り当ててみようとするも…

大容量の RAM DISK を用意したことだし、仮想メモリをそこへ保存したら快適になるだろうかと試してみることにしたのですけど…。

仮想メモリのドライブとして割り当てるには "実デバイス扱い" として RAM DISK を構成している必要があるとのことだったのですけど、幸いというかそのように設定してあったので、さっそくマイコンピュータのプロパティの 「詳細設定」 タグからパフォーマンスオプションの仮想メモリ設定をいじってみることにしました。

既に登録されている C:\ のページファイル設定を "なし" にして、RAM DISK へ 1024MB の仮想メモリを登録してみました。

 

そして Windows を再起動してみたのですけど、何故だか C:\ に仮想メモリが割り当てられているようで、肝心の RAM DISK へはまったくページファイルが用意されている様子がないのでした。

容量が足りないのかと 2,097,152 kB (2GB) を RAM DISK に割り当てられるように設定を調整し、改めてページファイルをそこへ設定してみたりもしましたけど、改善されませんでした。他にも物理ドライブと併用してみたりとか、いろいろ調整してみるも、やっぱり RAM DISK へはページファイルが作成されずでした。

Windows XP Professional だと仮想メモリの管理周りがいろいろと変わっているらしいので、上手く行かないのかもしれないですね。

 

最終調整

仮想メモリを用意できないとなると用途はとりあえず一時作業用くらいしか思い当たらないので、割り当て容量を 512MB に戻しておくことにしました。

boot.ini の /MAXMEM は 3GB から 512MB を引いた 2,560 に設定し、ERAM のディスク容量は 524,288 kB に設定しました。そして少しでも、電源を切ったら内容が消えることを OS などに伝えるために、"実デバイス扱い" のチェックをはずしておくことにします。

 

そうすると FAT ドライバが組み込まれない問題が再発しますので、その改善策として、FAT ドライバが強制的に組み込まれるようにしておきます。方法は付属の文書に書かれているのですけど、コマンドプロンプトにて次の行を実行するだけです。

RUNDLL32 ERAMNT.CPL,StartupFastfat 1

これで Windows 起動時に FAT ドライバが組み込まれるので、ERAM ドライブも正常に利用することが出来るようになります。なお、FAT ドライバを自動組み込みに戻すには、最後の "1" の部分を "4" にすれば良いとのことでした。

 

もしも起動しなくなった場合

ERAM はよく出来ているらしく、設定不備で OS が起動できなくなるという事はめったに無いそうですし、実際に自分も問題なく利用できているのですけど、もしも ERAM の設定ミスで Windows が起動できなくなった場合のお話が付属のドキュメントにさらりと触れられていましたので、念のため触れておこうと思います。

 

といいつつ細かいお話ではないのですけど、とにかく、起動しなくなったら何とかして ERAM.SYS を削除すれば良いとのことでした。

このファイルはシステムフォルダ (C:\Windows\system32\) の Drivers フォルダへ保存されていますので、FAT32 フォーマットならば Windows の起動ディスクなどを用いたり、NTFS フォーマットなら Windows XP などのセットアップの回復コンソールなどを使えばなんとか出来そうな気がします。

また、そこまでしなくても、Windows XP のロゴが出る直前あたりに F8 キーを押して、"セーフモード" か "前回正常起動時の構成" などを選択して起動を試みてみるのも良さそうです。

 

RAM DISK を使ってみる

環境変数の TMP と TEMP に登録されているパスを RAM DISK へ設定して…、基本的にはこれでおしまいです。本当は仮想メモリも設定してみたかったのですけどね、でもそれは無理でしたのでとりあえずこれだけです。

これで何か早くなったかというと、別に目に見えて早く感じられるものはほとんどないのですけど、でもインストーラーが圧縮ファイルを %TEMP% フォルダにて展開するような場合には、目に見えてその速度は体感できはしましたけど。

 

他にも個人的に、Microsoft FrontPage 2003 という Web サイト開発ツールを使っているのですけど、このソフトは FrontPage Server Extensions に対応した Web サイトを直接編集することが出来、その際には一時フォルダへファイルをダウンロードして編集作業を行うのでした。保存ボタンを押した時点でそのファイルはまた自動的にアップロードされるので、これは RAM DISK で作業をしてしまったほうが効率が良いはずです。

たしか FrontPage 2003 周りのファイルも %TEMP% フォルダに保存されている気がしたので、環境変数の値を変更するだけで大丈夫かと思ったのですけど、FrontPage 2003 を起動してとりあえずいろいろ編集しつつ、途中で RAM DISK の中身をあさってみたのですけど、どうもそれらしいファイルが保存されている形跡がなかったのでした。

どこに保存されているのだろうかと調べてみると、どうやら Internet Explorer の一時ファイル領域にそれが保存されているようでした。

 

これを RAM DISK に保存するように設定した場合、もしかして Cookie も再起動時に消えてしまうのではないかという不安も残しつつ、とりあえずは試しに RAM DISK へそれを設定してみることにしました。

そうしてみたところ、FrontPage 2003 で HTML ファイルを編集するとき、保存などが明らかに、圧倒的に早くなったように思います。そんなに待ち時間が気になるほどではなかったですけど、それがほとんど気にならなくなった感じで、断然快適になりました。

また、うわさには聞いていましたけど、Internet Explorer の一時ファイルを RAM DISK へ保存することによって、インターネットのブラウジングもこれまた圧倒的に快適になったのでした。

気になっていた Cookie も、一時ファイルに保存されているような痕跡もあるのに、でもちゃんと "Documents and Settings" にある自分のフォルダにも Cookie は保存されているようで、とりあえず RAM DISK の内容が消えることによっての影響はなくてよかったです。

 

他にも Lhaz という圧縮・展開ソフトウェアの設定にて RAM DISK を作業フォルダに設定してみたのですけど、保存しきれる容量のファイルならば格段に圧縮速度が、具体的には処理はメモリ上で行われ、最後にファイルがハードディスクの指定した場所に保存される時間が早くなったのはよかったです。

でも RAM DISK の容量を超える圧縮ファイルが出来てしまう場合には、何の通知も無く処理が終わってしまうのがなかなか厄介で、この場合にも圧縮が完了したと思い込んでしまいそうでした。

また、そうなった場合に作業フォルダを変更するのも少し厄介でしたし、そうなった後に変更してもまた圧縮しなおしだったりなので、個人的には Lhaz での使用はやめておきました。

 

Adobe Photoshop 5.5 でも、RAM DISK を仮想ディスクとして登録しようとしてみたところ、残念ながら RAM DISK を選択することは出来ませんでした。ただし、これは "実デバイスとして扱う" ように設定していないためであり、実デバイスとして認識させなおしてみたところ、ちゃんと設定することが出来るようになりました。

設定後、ならばとまた実デバイス扱いではないようにしてみると、自動的に仮想ディスクの対象からはずされてしまうようです。ともあれメモリも十分搭載しているし、今回は Photoshop では利用しないこととします。

 

そんな感じで、微妙な感じかもしれないですけど、でも個人的に一番良く使う Internet Explorer と FrontPage 2003 周りの作業領域が RAM DISK になった影響は、とても素晴らしいものでした。その快適さにすっかり気に入ってしまった自分でした。