Mac OS XでRAMディスクをコマンドライン1行で作成する

海上忍
2012-02-17 12:45:00
  • このエントリーをはてなブックマークに追加

 先日、とあるニュース記事を目にして考え込んでしまった。その内容とは「Windows 8でISOマウントをサポート」。ISOイメージファイルを(仮想ディスクとして)マウントする機能が、OS標準の機能でサポートされるというのだ。そういえば、Windows NTではDAEMON TOOLSなどサードパーティー製ユーティリティを使ってISOイメージをマウントしていたっけなあ……などとしばし遠い目。

 同等の機能は、かなり以前からOS Xでは標準対応されている。OS Xどころか、旧Mac OS時代から「Disk Copy」が標準装備され、ドライバ類の配布もDisk Copy書類で行われることが多かった。だから、なぜいま頃Windowsに仮想ディスク機能が!?と正直驚いた。

 Windows 8の仮想ディスク機能がどのような形で実装されるかは不明だが、実装のエレガントさという点ではOS Xに一日の長があるのは確実だろう。その機能は、DiskImagesやDiskArbitrationといったフレームワークで整備され、FinderやDiskImageMounter.appなどのGUIツール、hdiutilといったコマンドの形で提供されている。仮想ディスクがリアルのファイルシステムと融合しているのだ。

作業後に消去したいファイルの一時作業領域として便利な「RAMディスク」も、OS Xなら次期OSを待たずに利用できる
作業後に消去したいファイルの一時作業領域として便利な「RAMディスク」も、OS Xなら次期OSを待たずに利用できる

 現在では目立たないが、「hdik」はその伝統ある(?)仮想ディスク実装において特殊な役割を与えられたコマンドだ。ユーザランドのプロセスには依存せず、カーネルレベルで動作するため、DVD-ROMでブートするときなどに利用されてきた経緯がある。たとえば、以下に示すとおりコマンドを実行すれば、容量約256MBの仮想ディスク(RAMディスク)がマウントされる。

$ diskutil eraseDisk HFS+ RAMDISK `sudo hdik -drivekey system-image=yes -nomount ram://524288`

 一方、OS X 10.4以降はDiskImages.frameworkが整備され、仮想ディスクに関わるほぼすべての処理をユーザランドで処理できるようになった。Lionでは、以下のとおり一般ユーザーの権限だけでRAMディスクを作成できる。パフォーマンス差もほとんどないため、通常はこちらを利用するといいだろう。

$ diskutil eraseDisk HFS+ RAMDISK `hdiutil -nomount ram://524288`
  • コメント(4件)
#1 kaho   2012-02-19 22:30:35
hdutilではなくhdiutlだと思います
#2 ten   2012-02-21 05:55:28
hdiutil -nomount はエラーになる

hdiutil: -nomount: verb not recognized

ちゃんと動くものを書いて欲しいなぁ
#3 kaho   2012-03-01 17:35:37
コマンド名は(いつの間にか)修正されましたけれど,まだこれでは動きませんね.
diskutil eraseDisk HFS+ RAMDISK `hdiutil attach -nomount ram://524288 `
と,attachオプションをつけなければいけないと思います.
#4 pipipopo   2012-03-01 22:02:25
以下のコマンドで動作しました。
% diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://524288`
Started erase on disk1
$<3>Unmounting disk
$<3>Erasing
$<3>Initialized /dev/rdisk1 as a 256 MB HFS Plus volume
$<3>Mounting disk
$<3>Finished erase on disk1 ramdisk
  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]