2010-08-05

SSD + HDD の構成を生かすために

雑感: 256GB は小さいか?

2010 Mid のアップデートでは、iMac (の一部) そして(8 月発売開始予定の) Mac Pro で、Apple Online Store のカスタマイズオプションとして SSD が選べるようになった。iMac では 256GB の SSD と 1TB または 2TB の HDD の組み合わせにできる。この構成で発注した場合、SSD に OS とアプリをインストールした状態で出荷してくれる。高価なので迷ったが、SSD + HDD(1TB) で発注した。

実際に届いた iMac を見ると、SSD が Macintosh HD、HDD が Macintosh HD 2 となっている。OS やら何やらはすべて SSD (Macintosh HD) に入っており、HDD (Maintosh HD 2) は見事に空っぽだ。このまま何も気にせず使うこともできた。たとえば、HDD を単なる Time Machine 用ボリュームにする、など。

ちなみに、この SSD は、システムプロファイラ.app によれば、「APPLE SSD TS256B」という機種になっている。ググったところこれは THNS256GG8BBAA という東芝製のドライブだとのこと。

HDD の 1TB や 2TB と比較するから、256GB という容量は頼りなく思えるが、ウチの MacBook (Early 2008) だって HDD は 250GB だ。これで、iPod/iPhone/iPad の母艦として十分やっていけている。音楽も写真も電子本もウチにあるものは全部丸ごと、このたった 250GB の HDD に入っている。HD な動画を入れさえしなければ、たいていの用途には十分なサイズなのだ。

とはいえ、せっかくの SDD + HDD なのだからこの構成を生かすように使いたい。

基本方針: 速さと大きさをそれぞれ生かす

Wikipedia の Flash SSD 項目によれば SSD の特徴は以下のとおり。

(「Wikipedia:ja Flash SSD」より)
ランダムアクセス時の読み出し性能に優れ、これを多用するOSやアプリケーションソフトウェアの起動や、データへのアクセスのスループット向上が期待できる。 [...snip...]
HDDと比べ発熱が少なく耐衝撃性に優れ、小型で、動作音も発生しないので、モバイル用途に向いており、デスクトップパソコンに先んじてノートパソコンでの採用例が多い。

なんといっても高速であること。それが HDD に対する最大の優位だ。発熱が少ないこと、静かなことも地味だけど大事。

速い SSD と大容量の HDD。それぞれの特徴を生かすとなれば「頻繁にアクセスされるものは SSD に、サイズの大きいものは HDD に置く」が基本方針となる。

  1. OS やアプリは SSD に。iOS SDK なんかも SSD に。
  2. iTunes のライブラリは、音楽もアプリも電子本もまとめて HDD に。
  3. あれこれのアプリが作るデータファイルは HDD に。

簡単に言うと、ホームに置かれている作り付けのフォルダのうち、以下のものを HDD に飛ばしたい。

  • Documents (← 各種アプリがデータファイルを置こうとする場所)
  • Downloads (← Safari を始めとするブラウザがダウンロードしたファイルを置く)
  • Movies (← 動画編集はやらないけど)
  • Music (← iTunes のライブラリが置かれる)
  • Pictures (← iPhote のライブラリが置かれる)
  • Public (← 使ったことない)
  • Sites (← Apache を動かしたときのテストぐらいにしか使わん)
立ちはだかる壁: ACL って何?

フォルダを HDD に飛ばすのには古き良き Unix 由来の技術、シンボリックリンクを使う。このためには、(1) ~/Documents などを HDD にコピーする、(2) ~/Documents を削除、(3) HDD にコピーしたフォルダからシンボリックリンクを張る、という作業を行う。出荷状態のままの iMac ならこれらのフォルダは事実上、空だから作業は簡単かつすぐに終わる……はずだった。ところが、ここで思わぬ障害にぶつかった。

コピーは問題ない。次のオリジナルを削除するところでつまづいた。なんと、削除できない。この原因は ACL にあった。これら作り付けのフォルダには ACL が付けられており、そのままでは削除できない。オリジナルのフォルダを削除できなければシンボリックリンクを張ることはできない。まずは、ACL をどうにかしなければならない。

結局、作業はこうなる([]内がターミナルから実行するコマンド):

  1. SSD にあるオリジナルのフォルダ(~/Documents など)を HDD にコピーする。[cp -pR ~/Documents /somewhere/in/hdd]
  2. オリジナルの方から ACL を取り除く。[chmod -a# 0 ~/Documents]
  3. オリジナルのフォルダを削除する。[rm -rf ~/Documents]
  4. HDD のフォルダからシンボリックリンクを張る。[ln -s /somewhere/in/hdd/Documents ~/]

ACL を取り除くコマンドについては「Snow Leopard における ACL の操作」を参照。

参考: 現在の使用領域

上記の作業後、iTunes のライブラリから音楽(21.5GB)と Podcast (4.27GB)、それに iTunes U (49.83GB)の内容を MacBook からコピー(ホームシェアリング経由)、電子本などをふくむ「書類」フォルダ(11.21GB)を Mac mini から丸ごとコピーしたが、SSD の使用領域は 23.93GB となっており、まだまだスカスカの状態を保っている。一方、これらのデータを丸ごと引き受けた HDD の方は使用領域が 93.76GB となっている。もし、すべてを SSD に入れていたら、ちょっと空き容量が気になっていたかも。使い始めの段階で半分埋まっていることになるから。

ちなみに、単に iTunes のライブラリだけで良いなら、こんな手間をかける必要はない。iTunes の環境設定から「詳細」の「"iTunes Media"フォルダの場所」を変更すれば十分。ただ、この場合 iTunes Media というフォルダ以外のデータはデフォルトの場所に残る(アルバムのアートワークなんか)。ま、細かいことなんだけどね。

もう一つの目論見: コンパイルは速くなるか?

さて、今回の SSD 導入には OS や普段良く使うアプリの起動を速くするというよりも大きな願望があった。それは「コンパイルの速度を速くしたい」というもの。コンパイルというかソフトウェアのビルドには、(a) 同じプログラム(コンパイラ等)が何度も繰り返しロードされる、(b)比較的小さい大量のファイルを読み書きする、などの特徴がある。(a) は SSD よりもメモリを増やした方がディスクバッファの関係で速くなりそうだが、(b) に関しては SSD の読み書きの速さが有効ではないか、と思う。

ビルドにかかる時間が気になるほどの大きなプログラムを書くのか、とつっこまれると返す言葉がないんだけど。

関連リンク

関連記事

3 件のコメント:

  1. 大変参考になりました。しかし、cp -pR ~/Documents /somewhere/in/hdd
    とやってもNo such file or directoryとなってしまうのですが、何か間違っているでしょうか?無知な質問をしてしまい申し訳ありません、よろしくお願いいたします。

    返信削除
  2. コメントに気付くのが(とても)遅くなりすみません。もう解決されていましたら、以下は無視してください。
    「/somewhere/in/hdd」というのは、「HDD にあるどこか適当なフォルダ名」のつもりで書きました。
    ウチの iMac を例に具体的に書くと、HDD は 「/Volumes/Macintosh HD」として見えます。まずはここにフォルダを作ります。わたしは Users、その下にさらに mnbi を作りました。なので「cp -pR ~/Documents /somewhere/in/hdd」は実際には「cp -pR ~/Documents '/Volumes/Macintosh HD/Users/mnbi'」になります。後の方を '' (シングルクォート) で囲むことを忘れないようにしてください。これは「Macintosh HD」の中に空白文字がふくまれているからです。
    もし、何かありましたら、twitter (@mnbi) までどうぞ。

    返信削除
  3. すみません、間違いを書いてしまいました。ウチの iMac で HDD は「/Volumes/Macintosh HD 2」でした。なので「cp -pR ~/Documents '/Volumes/Macintosh HD 2/Users/mnbi'」になります。

    返信削除