Macの「ディスクユーティリティ.app」が信用できない

年末に外付け HDD のパーティションが吹っ飛ぶという事件が起きました…。

Snow Leopard 環境で USB 接続の 2TB HDD のパーティションを二つに区切って ExFAT で使用していました。最近になって HFS+ な環境じゃないと困る状況(ExFAT だとファイルの権限が滅茶苦茶に…)が増えてきたので片方を HFS+ でフォーマットすることにしました。

必要なファイルを別のディスクに移し、ディスクユーティリティ.app で再フォーマットするパーティションをしっかり確認していざフォーマット。

………。

…………………おや、エラーが?

使用中のアプリケーションも無いはずだけど、エラーが出てフォーマットが完了できない。とりあえず再起動してもう一度フォーマットすることにする。


再起動後↓


2TB の HFS+ ボリュームがこんがり美味しくできあがりました!!!

どうやらパーティションテーブルを吹っ飛ばしてくれたようです。ExFAT 領域が全滅です。これではパーティションを区切っていた意味がありません。データを全て上書きしたわけではないので多分データは残っているだろうと予想し、修復作業に時間がかかりそう(というか面倒)なのでとりあえず放置。


放置すること数日、2013年初日。世間では「お年玉争奪戦」が行われていた頃です。

ようやくやる気が出たので testdisk でパーティションテーブルの修復作業。MacPorts を使っていれば sudo port install testdiskインストール可能。USB に問題があると厄介なのでケースを分解して Windows マシンに SerialATA で接続。約4時間程のディスクチェックの末に無事、パーティションテーブルを復元。データも問題なし。

デュフフ、これで今夜からまたハッスルでき(ry


さて、パーティションは復元できましたが、当初の予定の HFS+ フォーマットがまだです。HDD を USB 接続で Mac に戻して「ディスクユーティリティ.app」で HFS+ にフォーマットしようと思ったらできない。というか、「ディスクユーティリティ.app」ではマスターブートレコード方式のディスクに対して未フォーマット領域のみフォーマットするという術がないように思える。マスターブートレコードの場合はディスクをまるまる消去しなきゃだめってこと?考えてみたら Mac って「消去=フォーマット」で「フォーマットしない」っていう選択肢が無いよな…。

Windows に繋げば空き領域のみフォーマットすることも可能だけど、当然 HFS+ にはフォーマットできない。で、Bootcamp & VirtualBox の時に使っていた diskutil のマニュアルを読み直してみたら普通にできるっぽい。

まずは diskutil list で接続されているディスクを確認する(※画面は修復後のものなので既にフォーマット済み)。フォーマットしたい場所は /dev/disk2s1

ボリュームフォーマットのコマンドは diskutil eraseVolume [フォーマット方式] [ボリューム名] [場所]。ジャーナリングを有効にするのでフォーマット方式は JHFS+。ついでにベリファイもしておく。

bash
diskutil eraseVolume JHFS+ HFSPlus /dev/disk2s1
diskutil verifyVolume /dev/disk2s1

Mac は NTFS を有効にするとファイル壊すし、Windows から Samba 経由でファイル移動するとファイル消えるとかファイル操作に関して微妙に怖い部分がある(前者はサポート対象外の方法だけど)。今後は「ディスクユーティリティ.app」をあまり信用しないことにする。ていうか Apple のユーティリティのマニュアル読みづらいんですけど…。

diskutil(8) OS X Manual Page
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/10.6/man8/diskutil.8


とりあえず TimeMachine のバックアップもお引越しして2013年の元旦は無事終了しました。

Trackback