| 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のコピペ機能が動かなくなりました。

若干リスキーな変更なので、自己責任で試してみるといいと思います。

6 comments

  1. 匿名

    5月 4th, 2009

    この方法だと、USBでドライブを繋いだまま起動した時にそのディスクがフォーマットされる事がある様な気がします。
    完全に同じ方法で再現した訳ではないのですが、参考にして作業したら繋いでいたUSBのHDDをフォーマットしてしまいました。
    認識の順序とかって明確に決まってるんですかね?

  2. ちゅう

    5月 7th, 2009

    ご指摘ありがとうございます。参考にして頂いたのに、HDDがフォーマットされてしまったようでごめんなさい。

    diskutil eraseDisk HFS+ ramdisk /dev/disk1

    の部分で、USBのHDDを繋いでいたときに デバイス名が変わるのかもしれません。その部分は全く気づきませんでした。デバイス名をうまく取得する別の方法を考えたほうがいいのかもしれません。

  3. AknEp

    5月 11th, 2009

    いえいえ、消えても全く困らないドライブだったので。リスキーだとも書いてありますしね。
    また、僕がやったときは起動した後でターミナルからそれを打ってしまったので…そうでなければ起きない問題かもしれません。

  4. クイター

    7月 11th, 2009

    はじめましてこんばんは、クイターといいます。

    先月iBookG4(最終型)を買いネットで調べながらやっとの思いでさわっております。
    Winとの両刀使いです。

    「/etc/rc.localを編集します」の部分が調べてみてもわかりません
    Finderから検索してみても出てきませんし、なんとなくテキストで作ってみましたが違うようです。

    どういったやり方なのでしょうか

    もちろん近い将来SSDに交換予定ですのでそれの準備です。

  5. ちゅう

    7月 16th, 2009

    上記はLeopardで試したものなのですが、 root権限で /etc/rc.local を編集すれば良いと思います。
    無い場合は…、どうなんでしょう。 /etc/rc.common でもいいと思いますが。
    Finderでも見えるはずですが、Finderから root権限で操作する方法を知らないので何ともいえません。
    Terminalで編集すればよいのではないでしょうか?

Trackbacks and Pingbacks

  1. 変なヤバいもんログ » iMacをSSDに換装した

Leave a Comment


download the hurt locker  
UA-682965-1