2011年02月20日

ramdiskのアロケーションサイズを変更すれば利用効率は高まる

WindowsのテンポラリをRAMディスクにしたら、OCRソフトがうまく動かなかった原因は
1ディレクトリに格納できるファイル数の上限を超えてしまったと言うことがわかった。

今日、テンポラリを新たに買うUSBメモリに割り当てようかと思い、OCRソフトが一時的にどれくらいファイルを吐き出すか見たら、合計1GBを切っていた。それなら1GBのRAMディスクを既に割り当てているのだからメモリや有料ソフトを買う必要がないと思い、RAMディスクをNTFSにフォーマットしてテンポラリを再度RAMディスクにしたら今度はうまくいった。テキスト化したWordドキュメントもRAMディスク上に置いても余裕があった。

筆者の使っているRAMディスクはアロケーションサイズが64KBもあるのだ。(つまり1バイトのファイルでも64KB占有する)これは変更できない。しかしこのStarWind RAMDISKはフリーソフトにもかかわらず64bitWindows7にも対応している。

そしてFATでフォーマットされているから1ディレクトリに格納できるファイル数を超えたのだろう。

とにかく以下のファイル(またはそのショートカット)をスタートアップフォルダに置けば起動時に勝手にフォーマットしてくれる。ここではアロケーションサイズを1KBにしたが、もっと小さくすれば、Webブラウザがサイトからダウンロードした細かいファイルの利用効率が上がるだろう。アロケーションサイズはでかい方が高速に動作するが、RAMDISK自体高速なのでサイズを小さくしても問題ない。
 NTFSだとファイル圧縮も可能になるが、場所を取るのは画像ファイルばかりで、これは既に圧縮されているものばかりだからあまり意味がないだろう。


ramdisk_format.cmd
--
format ドライブ名: /FS:NTFS /X /A:1024 /V:RAM_DISK < ramdisk.txt
mkdir ドライブ名:\tmp
--
ドライブ名:\tmpはテンポラリのフォルダをドライブ名:tmpに割り当てているからそのフォルダ名を作成しているだけだ。テンポラリフォルダをドライブ名:にしている場合は必要ない。

また、これだけではうまく実行できない。もう1つファイルが必要だ。よく見ればわかるがramdisk.txtがリダイレクションとして使われている。リダイレクションなんて何十年ぶりだな

RAMDISK.txt (ramdisk_format.cmdと同じフォルダ上に置く)
--
RAM_DISK
y
--
要するにこのファイルはFORMATコマンド実行後に出てくる質問に答えているにすぎない。
RAM_DISKと言う文字列はStarWindRamdiskが勝手に付けるボリューム名だ。この名前をFORMATコマンドはなぜか要求してくる。
posted by danpei at 12:16| software