ファイルの最終アクセス日を記録しないように以前設定をして、書き込み頻度を下げましたが、/tmp を Ramdisk にして更に書き込み頻度を下げてみようと思います。
Mac OS XでRAMDiskを参考にして設定しました。
% sudo hdid -nomount ram://262144
/dev/disk1
で、128MBのRAMDiskが出来ます。/dev/disk1 のデバイスとして認識されています。
ram://xxx の数字は、 512バイトのブロックをいくつ作るかということらしいです。今回は、128MB作りたかったので、128 x 1024 x 1024 / 512 = 262144 を指定しました。
その後、HFS+で作ったRamdiskをフォーマットします。
% sudo diskutil eraseDisk HFS+ ramdisk /dev/disk1
/dev/disk1 は、さっき認識されたデバイス名を指定すればおk。この操作は、ユーティリティ → ディスクユーティリティ で「Mac OS拡張」でフォーマットするのと同じことです。先ほどのコマンドで、作ったRAMDiskが /Volumes/ramdisk にマウントされました。
ちなみに、自動的にマウントしようとするならば、出力をそのまま受け取ればよいです。
というか、常にこれをやればいいです。上記をまとめたらこうなります。
% sudo hdid -nomount ram://262144| xargs sudo diskutil eraseDisk HFS+
こうすると、Finder にも ramdisk が出ています。コマンドで確認すると、128MBのramdiskが出来ているのが分かります。
% df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s2 119Gi 67Gi 52Gi 57% /
devfs 112Ki 112Ki 0Bi 100% /dev
fdesc 1.0Ki 1.0Ki 0Bi 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% /net
map auto_home 0Bi 0Bi 0Bi 100% /home
/dev/disk1s1 128Mi 3.0Mi 125Mi 3% /Volumes/ramdisk 1
さて、次は /tmp を RAMDiskに向けます。
見てみると、Leopard では、/tmp はただのシンボリックリンクのようなので、これを変更すれば良いです。tmp -> /private/tmp
% sudo unlink /tmp
% sudo ln -s /Volumes/ramdisk /tmp
一旦シンボリックリンクを切って、ramdisk に向けてはりなおすだけです。
これで、/tmp を RAMDisk にすることが出来ました。
問題がなさそうだったら、起動時に自動的に /tmp が RAMDisk になるように設定をします。
/etc/rc.local を編集します。
#!/bin/sh
# Make RamDisk
hdid -nomount ram://262144
diskutil eraseDisk HFS+ ramdisk /dev/disk1
# for SSD
mount -u -o noatime /
前提として、以下を1回実行している必要があります。
% sudo unlink /tmp
sudo ln -s /Volumes/ramdisk /tmp
for SSD のくだりは、最終アクセス日時をディスクに記録しないようにするためのものです。参考→iMacをSSDに換装した[ブログ内記事] 順序を逆にすると、既に何かが起動して /tmp にファイルを作っているからか、動かないアプリがあるかもしれないので気をつけて下さい。ぼくの環境では、 mount -u -o notime を先に書いたら、OSのコピペ機能が動かなくなりました。
若干リスキーな変更なので、自己責任で試してみるといいと思います。