Mac | 4月 7th, 2009
ファイルの最終アクセス日を記録しないように以前設定をして、書き込み頻度を下げましたが、/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のコピペ機能が動かなくなりました。
若干リスキーな変更なので、自己責任で試してみるといいと思います。





匿名
5月 4th, 2009この方法だと、USBでドライブを繋いだまま起動した時にそのディスクがフォーマットされる事がある様な気がします。
完全に同じ方法で再現した訳ではないのですが、参考にして作業したら繋いでいたUSBのHDDをフォーマットしてしまいました。
認識の順序とかって明確に決まってるんですかね?
ちゅう
5月 7th, 2009ご指摘ありがとうございます。参考にして頂いたのに、HDDがフォーマットされてしまったようでごめんなさい。
の部分で、USBのHDDを繋いでいたときに デバイス名が変わるのかもしれません。その部分は全く気づきませんでした。デバイス名をうまく取得する別の方法を考えたほうがいいのかもしれません。
AknEp
5月 11th, 2009いえいえ、消えても全く困らないドライブだったので。リスキーだとも書いてありますしね。
また、僕がやったときは起動した後でターミナルからそれを打ってしまったので…そうでなければ起きない問題かもしれません。
クイター
7月 11th, 2009はじめましてこんばんは、クイターといいます。
先月iBookG4(最終型)を買いネットで調べながらやっとの思いでさわっております。
Winとの両刀使いです。
「/etc/rc.localを編集します」の部分が調べてみてもわかりません
Finderから検索してみても出てきませんし、なんとなくテキストで作ってみましたが違うようです。
どういったやり方なのでしょうか
もちろん近い将来SSDに交換予定ですのでそれの準備です。
ちゅう
7月 16th, 2009上記はLeopardで試したものなのですが、 root権限で /etc/rc.local を編集すれば良いと思います。
無い場合は…、どうなんでしょう。 /etc/rc.common でもいいと思いますが。
Finderでも見えるはずですが、Finderから root権限で操作する方法を知らないので何ともいえません。
Terminalで編集すればよいのではないでしょうか?