2013/12/21

OS X と 仮想SSD

SSD 標準搭載の MacBook Air がでた 10.8 Lion あたりから、OS X ではHFS Plusファイルシステムへの SSD に対するサポートがはいってきている。

具体的には、OS X がSSDに インストールされている場合、遅延再配置(hfs_relocate)と Hot File Adaptive Clustirng が無効になる。
二つの機能の概要については...、まあ、こちらのページを参照して欲しい。
(...まさか、未だに自分の原稿が上位でヒットするとは思わなかったよ。)

いずれの機能も HDDの特性を加味してディスク上のデータ配置を置き換えることで IO性能を上げるものであるが、しかし SSDの場合 再配置してもIO性能が上がらないし、むしろ書き込み回数を増やして不利益になるからだ。

OSXがSSDと認識しているかどうかは 「diskutil info」コマンドで確認できる。
[valkyrie:~] shiro% diskutil info disk0s2
   Device Identifier:        disk0s2
   Device Node:              /dev/disk0s2
   Part of Whole:            disk0
   Device / Media Name:      Macinosh HD

   Volume Name:              Macinosh HD
   Escaped with Unicode:     Macinosh%FF%FE%20HD

   Mounted:                  Yes
   Mount Point:              /
   Escaped with Unicode:     /

   File System Personality:  Journaled HFS+
   Type (Bundle):            hfs
   Name (User Visible):      Mac OS Extended (Journaled)
   Journal:                  Journal size 73728 KB at offset 0x1bf2000
   Owners:                   Enabled

   Partition Type:           Apple_HFS
   OS Can Be Installed:      Yes
   Recovery Disk:            disk0s3
   Media Type:               Generic
   Protocol:                 SATA
   SMART Status:             Verified
   Volume UUID:              A95E84F4-7013-38C7-BB33-BB8DB8E8ED69

   Total Size:               959.3 GB (959337365504 Bytes) (exactly 1873705792 512-Byte-Units)
   Volume Free Space:        478.1 GB (478122086400 Bytes) (exactly 933832200 512-Byte-Units)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         No
   Ejectable:                No

   Whole:                    No
   Internal:                 Yes
   Solid State:              Yes
最下行の Solid State のフラグが Yes ならばSSD上であるとOS Xが判断していると言うことだ。
(余談だが、SSD だからといってルートフォルダに  .hotfiles.btree ファイルがないとは限らない。初期状態からSSDで出荷された Mac ならその通りだが、HDD搭載の Macから換装したりなどすると、以前の  .hotfiles.btree ファイルが残る。使われてはいないが、どうもアクセスはされるみたいで更新日付は適宜アップデートされてしまう。消しても問題ないとは思うのだが、さすがに失敗したときのリスクが怖いので試していない。)

さて、仮想環境上の OS X はどうであろうか?

とりあえず手元の Fusion 6 で仮想マシンを作ってみたところ、仮想ディスクはすべて SATA接続のディスクとして作成される。

SATA接続のディスクから OS Xを起動すると、SSD上の仮想マシンはちゃんと「SSD」が接続されたように振る舞う。図は、Mountain Lion を搭載した仮想マシンだが、Solid State が YES になってるのがわかる。

Fusion 6 で動作する Mountain Lion の仮想マシン

ただし、以前の Fusion で作成した仮想マシンは 仮想SATA接続ではなく仮想SCSI(lsilogic)接続になっており、こちらはSSDと認識されていない。仮想SATA接続は仮想ハードウェアバージョン10からのサポートで、Fusion 6からしか使えないからだ。

以前作った仮想マシンについては、以下の手順で仮想SATA接続に変更できる。

まず、仮想マシンをちゃんとシャットダウンして、スナップショットをすべて削除する。

次に、設定パネルの互換性タブから仮想ハードウェアバージョンを10にあげる。

仮想ハードウェアバージョンを10にする

これにより仮想SATA接続の仮想ディスクが利用可能になる。

最後に、仮想ディスクを選択してバスタイプをSATA接続に変更する。

バスタイプをSATAに変更

スナップショットを削除していないとバスタイプの変更ができないので注意だ。

不用意にバスタイプを変更すると起動しなくなるOSもあるが、OS X のブートローダは結構柔軟性があり、SCSIからSATAへの変更程度なら問題なく起動してくれる。
ゲストOSの上の動作とはいえ、無用な書き換えを防ぐことでSSDを長持ちさせることができるのでやっておいたほうがいいし、そのために Fusion 6 にアップグレードするのも悪い話ではないだろう。


しかし、OS X の場合はこの方法を使っても、OS側がSSDを検出しない、SCSI/IDE接続のディスクをSSDかHDDか検出していない模様のため、あまり意味がない。