ぼやき

1

Apple MacBook Air に Apple 独自の形状の SDD を乗せて、 CPU を抑えて小型になったラインナップで話題を呼んでいますね。そう SSD って早いんですよ。わたしの 3 世代くらい前の PowerBookG4 1.67 GHz メモリ 2GB でも 126GB の SSD に換装したら Leopard でも普通に動いています。そう、このパフォーマンス奇しくも、新しい MacBook Air と同じくらいなんですよね。 CPU が 2 core だという点を除いては。 SSD 搭載の PowerBookG4 はまだまだ、現役で、日常のネット、メール、ブラウザゲーム、なんかだったら全然 OK 。あと、重たいソフトを使うのをやめて代替アプリにしたら快適です。 Photoshop → Pixelmater 、 Cyberduck → Yummy FTP 等。

それで、 PowerBook G4 を SSD に換装して 10 か月くらい経ちますが、ちょっと起ち上がりがもっさりしてきて、以前のようなキビキビした動きがないので、 SSD の設定見直しとメンテナンスを行いました。

メインテナンスタスクの実行


ターミナルで下記のコマンドを実施。

$ sudo periodic daily weekly monthly

→ Apple サポート: Max OS X :バックグラウンドメインテナンスタスクについて
Mac OS X には不要なファイル(古いログファイルや特定の一時的なアイテム)を削除する機能が備わっている。でも、 3:15 am から 5:30 am の間に可動状態にあれば実施されるようにスケジューリングしてあるみたい。そんな時間にスリープでもなく電源いれている人って稀ですよね。それを手動で行ってくれるのが上記で書いたコマンドです。

これを実行することで、だいぶもっさり感が消えました。

ターミナルでコマンドを打つのはちょっと、という人は、メンテナンスソフトの OnyX でも同じことができます。「メンテナンス」→「スクリプト」で、「日次スクリプト」「週次スクリプト」「月次スクリプト」にチェックを入れて、「実行」ボタンをクリックします。

Onyx のメンテナンス画面

atime 更新の無効化


次は atime 更新の無効化。 Mac OSX では ファイルにアクセスするとその時間をファイルに記録する機能がついています。(ファイル情報の「最後に開いた日」っていうのが更新されるやつ。)これを無効にすることによって少しでも SSD への書き込みを少しでも減らそうというもの。

→ Hirobee ’ s Trail [Memorandum]: SSD 対策の Mac OS X 設定
最初は上記のサイトを参考に、 /etc/rc.local に下記のように記述していました。
#!/bin/sh

mount -u -o noatime /

しかし、調べてゆくとどうも launchd 経由で処理する方が正統派っぽいのでそちらの方法に変更しました。

→ ktomoya の日記: Mac のシステムディスクのマウントに noatime オプションをつける

上記のサイトを参考に、 /Library/LaunchDaemons/com.my.noatime.plist というファイルを作成して下記の XML を入力します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.my.noatime</string>
        <key>ProgramArguments</key>
        <array>
                <string>mount</string>
              <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.my.noatime</string>
        <key>ProgramArguments</key>
        <array>
                <string>mount</string>
                <string>-vuwo</string>
                <string>noatime</string>
                <string>/</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>  <string>-vuwo</string>
                <string>noatime</string>
                <string>/</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

と、簡単に書いてしまいましたが、 root 権限のファイルをいじるのでちょっと面倒でした。 UNIX の vi エディタとか使えれば簡単なんだろうけれど、使い方がよくわからなかったので、ファイル権限を変更して断行しちゃいました。以下、わたし流のやりかたのメモ。

  1. /Library/LaunchDaemons/ に com.my.noatime.plist ファイルを作成。ターミナルにて下記のコマンド。
    $ touch /Library/LaunchDaemons/com.my.noatime.plist
  2. 一時的に書き込みできるようにファイル権限を変更する。ターミナルにて下記のコマンド。
    $ chmod 777 /Library/LaunchDaemons/com.my.noatime.plist
  3. UTF-8 を扱えるテキストエディタ( mi など)で上に書いた XML をコピペする。
  4. ファイル権限を元に戻す。ターミナルにて下記のコマンド。
    $ sudo chmod 644 /Library/LaunchDaemons/com.my.noatime.plist
  5. ファイル権限の確認。ターミナルにて。
    $ ls -l /Library/LaunchDaemons/com.my.noatime.plist

    「 -rw-r–r– 」と表示されれば OK 。

  6. 所有者権限の変更。
    $ sudo chown root:wheel /Library/LaunchDaemons/com.my.noatime.plist
  7. 再起動して、ターミナルにて確認。
    $ mount
    /dev/disk0s10 on / (hfs, local, journaled, <strong>noatime</strong>)

    noatime とあれば設定がきちんとできた証拠。

ジャーナリングの停止(→見送り)


Mac OSX には「遅延再配置」と「 Hot-File-Adaptive-Clustering 」という機能があり、これによりデフラグが必要ないといわれています。

しかし、遅延再配置とは、「アプリケーションがあるファイルを開こうとする時に、そのファイルのデータが分散して HDD 上に記録されていたら、できるだけ連続した領域に収まるようにファイルの再配置をバックグラウンドで行う」機能で、 Hot-File-Adaptive-Clustering とは「ファイルに関してアクセス数を記録し、頻繁にアクセスされるファイル( Hot File )をディスク上の高速な領域に移動させることで、アクセス性能を向上させる」機能。どちらも、 SSD の読み書きが増えるわけです。これを off にするには、ジャーナリングをオフにしなければならない。

しかし、ジャーナリングは突然電源が落ちたときなどに、ファイルシステムのディレクトリと、格納されているファイルの実際の場所と構造との間に食い違いが生じることがあるのを、素早く復旧させる機能なので、オフにするのは少し怖いなぁ、と思っている次第です。

→ Apple サポート: Mac OS X: ファイルシステムのジャーナリングについて

ちなみに、ジャーナリングのオン・オフの切替はディスクユーティリティからできます。

気になるのは、新 MacBook Air の「遅延再配置」と「 Hot-File-Adaptive-Clustering 」機能がどのような設定になっているかですね。だれか調べてくれませんかね。

関連記事