ImDiskの使い方
ImDisk Virtual Disk Driver
ImDiskは仮想ドライブ(CD/FD/etc)として利用するだけなら、右クリックやコントロールパネルからの操作でもなんとかなる。しかし、RAMディスクとして利用するにはコマンドライン(ImDisk.exe)の利用が不可欠になると思う。しかし日本語の情報が皆無なので、自分のためにも少しまとめてみました。
■ 管理者権限に注意
一部の操作には「管理者権限」が必要になる。ディスクのマウント操作等は、稼働中のサービスに対する依頼であるため管理者権限は不要だが、フォーマットやイメージの保存には管理者権限が必要となるようだ。どの操作に管理者権限が必要であるかは把握しづらいので、基本的に管理者権限での利用が推奨される。
コントロールパネルからの操作も管理者権限で実施する事が望ましいので、
へのショートカットを作成し、常に管理者権限で起動するようにしておくと良い。
■ 仮想ドライブのマウント (imdisk -a)
-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)
-d :
・指定ドライブをアンマウントする。
・利用中の場合は失敗する。(読取専用でなければ失敗する事の方が多い?)
-D :
・指定ドライブを強制アンマウントする。(利用中でも失敗しない)
-u unit : (*)
・アンマウントするユニット番号を指定する。
-m mountpoint :
・アンマウントするドライブ名かマウントポイントを指定する。
■ 非常時のアンマウント (imdisk -R) (*)
imdisk -R -u unit
-R :
・非常用コマンドで、仮想ドライブがハングアップした時に利用する。
-u unit :
・アンマウントするユニット番号を指定する。
■ 構成情報の表示 (imdisk -l)
-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 :
・対象のデバイスを指定する。
特定用途にしか利用しない、利用頻度が低い、難しいと考えられる部分は(*)印を付けて灰色にしてある。
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 :
・対象のデバイスを指定する。
特定用途にしか利用しない、利用頻度が低い、難しいと考えられる部分は(*)印を付けて灰色にしてある。
この記事へのコメント
既定値でなくなったようです