ImDiskの使い方

ImDisk Virtual Disk Driver

 ImDiskは仮想ドライブ(CD/FD/etc)として利用するだけなら、右クリックやコントロールパネルからの操作でもなんとかなる。しかし、RAMディスクとして利用するにはコマンドライン(ImDisk.exe)の利用が不可欠になると思う。しかし日本語の情報が皆無なので、自分のためにも少しまとめてみました。


■ 管理者権限に注意

 一部の操作には「管理者権限」が必要になる。ディスクのマウント操作等は、稼働中のサービスに対する依頼であるため管理者権限は不要だが、フォーマットやイメージの保存には管理者権限が必要となるようだ。どの操作に管理者権限が必要であるかは把握しづらいので、基本的に管理者権限での利用が推奨される。
 コントロールパネルからの操作も管理者権限で実施する事が望ましいので、

C:\Windows\System32\rundll32.exe shell32.dll,Control_RunDLL imdisk.cpl

へのショートカットを作成し、常に管理者権限で起動するようにしておくと良い。


■ 仮想ドライブのマウント (imdisk -a)

imdisk -a -t type -m mountpoint [-n] [-o opt1[,opt2 ...]] [-f|-F file]
[-s size] [-b offset] [-v partition] [-S sectorsize] [-u unit]
[-x sectors/track] [-y tracks/cylinder] [-p "format-parameters"]

-a :
・仮想ドライブを接続する。(RAMディスクを作成する)

-t vm :
・仮想メモリ上に仮想ドライブを構築する。(仮想メモリ上のRAMディスク)
・-fでファイルを指定した場合は、その内容をメモリ上に展開する。
・-fで指定したファイルに対して書き込みする事はない。

-t file :
・-fで指定したファイルを、そのまま仮想ドライブとして利用する。
・-fで指定したファイルに対して直接読み書きする。

-t proxy : (*)
・名前付きパイプ経由で、別プロセスのI/Oサーバと通信する。(iSCSIみたいな物らしい)
・devcon.exeのようなアプリが必要だが、別PCのディスクをマウントする事もできる。

-m mountpoint :
・マウント先のドライブ名かマウントポイントを指定する。
・mountpoint に「G:」「H:」等のドライブ名を指定すれば、そのドライブにマウントされる。
・mountpoint に「#:」を指定すると空いている最初のドライブを指定した事になる。
・mountpoint に「C:\RAMDISK」等のフォルダを指定すると、そのフォルダにマウントされる。
 → JUNCTIONによる実装になる。
 → 指定するフォルダ(上記ではC:\RAMDISK)は存在し、空である必要がある。

-n : (*)
・デバイス名を表示するとき「\Device\ImDisk」を省略する。
・見た目の問題だけ? バッチの後続処理で値を拾う時に利用できる?

-o ro :
・読取専用にする。
・「-t vm」を利用(指定)するなら「-f file」を指定する必要がある。

-o rw : (*)
・規定で書き込み可能なので、指定する必要はない。

-o sparse : (*)
・イメージファイルにスパースファイル属性を付与する。
 →はずなのだが、-aで新規作成するとエラーが発生する。なぜ?

-o rem : (*)
・リムーバブルメディアとしてマウントする。
・書き込みキャッシュの扱いが変更されるらしい。(OSの制御)

-o fix : (*)
・固定ドライブをしてマウントするが、既定値なので指定する必要はない。

-o saved : (*)
・ドライブの変更状態をクリアするが、ドライブマウント時には利用しない。

-o cd :
・CD/DVD-ROMとしてマウントする。
・イメージファイルの拡張子が「.iso」「.nrg」「.bin」の場合の既定値となる。

-o fd :
・フロッピーディスクとしてマウントする。
・イメージファイルが特定のサイズの場合の既定値となる。(1200K,1440K,他)

-o hd :
・ハードディスクとしてマウントする。
・上記「cd」「fd」にある場合以外の既定値となる。

-o raw : (*)
・"unknown"タイプのデバイスとしてマウントするらしい。
・これをバッキングストアとして、別のドライバから利用する事を想定しているらしい。

-o ip : (*)
・「-t proxy」とした時、TCP/IP経由で通信する。
・接続先は「-f 127.0.0.1:10080」のように指定する。

-o comm : (*)
・「-t proxy」とした時、COMポート経由で通信するらしい。

-o shm : (*)
・「-t proxy」とした時、共有メモリ経由で通信する。

-o awe :
・物理メモリ上に仮想ドライブを構築する。(RAMディスク)
・「-t file」とした場合のみ利用できる。(-f vmではない)
・-fでファイルを指定した場合は、その内容をメモリ上に展開する。
・-fで指定したファイルに対して書き込みする事はない。
・-fを指定しない場合、初期化なしでマウントするが、「-s」でサイズを指定する必要がある。

-f file :
・イメージファイルを指定する。(-t proxy以外)
・fileには「C:\dir\image.bin」「\\server\share\image.bin」形式のファイルパスを指定する。
・「-t proxy」の場合は、接続先IP:Port、COMポート、共有メモリ等を指定する。

-F file : (*)
・'NT-style'でイメージファイルを指定する。
・fileには「\Device\Harddisk0\Partition1\image.bin」形式のファイルパスを指定する。
・ドライブレターの割り当てられていないドライブを利用する事ができる。

-s size :
・仮想ドライブのサイズを指定する。
・単位に「b, k, m, g, t, K, M, G, T, %」が指定できる。(g→GB,G=GiB)
・「%」を指定した場合は、空きメモリに対する比率となる。
 →空きメモリ = (リソースモニタでの)利用可能 = スタンバイ + 空き
・マイナスを指定すると、空きメモリから指定サイズを除いた値が適用される。
 →空きメモリが4GBの時、「-s -1GB」とすると「-s 3GB」を指定した事になる。
 →要は「空きメモリをxxxだけ残して残りを利用」するという指定になる。

-b offset : (*)
・イメージファイルのオフセット(読取開始位置)を指定する。
・複数パーティションを含むディスク全体のイメージをマウントするために利用できる。
・「.nrg」「.sdi」については「auto」を指定する事で自動選択がサポートされる。

-v partition :
・"raw hard disk image"をマウントする場合にパーティションを指定する。

-S sectorsize : (*)
・セクタサイズを指定する。

-u unit : (*)
・マウントに利用するユニット番号を指定する。(省略時は自動選択)

-x sectors/track : (*)
-y tracks/cylinder : (*)
・特定のディスクジオメトリ情報で仮想ドライブを構成する。
・ブートイメージを作成する時などに利用する。

-p "format-parameters" :
・マウント後に「format」コマンドを発行する。
・format-parametersは、そのままformatの引数として利用される。
・「-p "/fs:ntfs /q /y"」とすれば、確認なしでNTFSでクイックフォーマットされる。


■ 仮想ドライブのアンマウント (imdisk -d / imdisk -D)

imdisk -d|-D [-u unit | -m mountpoint]

-d :
・指定ドライブをアンマウントする。
・利用中の場合は失敗する。(読取専用でなければ失敗する事の方が多い?)

-D :
・指定ドライブを強制アンマウントする。(利用中でも失敗しない)

-u unit : (*)
・アンマウントするユニット番号を指定する。

-m mountpoint :
・アンマウントするドライブ名かマウントポイントを指定する。


■ 非常時のアンマウント (imdisk -R) (*)

imdisk -R -u unit

-R :
・非常用コマンドで、仮想ドライブがハングアップした時に利用する。

-u unit :
・アンマウントするユニット番号を指定する。


■ 構成情報の表示 (imdisk -l)

imdisk -l [-u unit | -m mountpoint]

-l :
・デバイスの一覧を表示する。

-u unit : (*)
-m mountpoint :
・デバイスを指定すると、詳細情報が表示される。


■ 既存仮想ドライブの更新 (imdisk -e) (*)

imdisk -e [-s size] [-o opt1[,opt2 ...]] [-u unit | -m mountpoint]

-e :
・マウントされているドライブの構成情報を更新する。

-s size:
・sizeに指定した容量を拡張する。(既存の容量に追加する)
・Windows2000以降でNTFS利用時のみ、再フォーマトなしで利用可能になる。

-o ro :
・読取専用に変更する。

-o rw :
・書き込み可能に変更する。

-o rem :
・リムーバブルドライブに変更する。

-o fix :
・固定ドライブに変更する。

-o saved :
・'image modified'フラグをクリアする。
・'image modified'の状況は「-l」オプションで確認できる。

-u unit : (*)
-m mountpoint :
・対象のデバイスを指定する。


 特定用途にしか利用しない、利用頻度が低い、難しいと考えられる部分は(*)印を付けて灰色にしてある。

この記事へのコメント

この記事へのトラックバック