MD4Ram - Multi Device Driver for R.A.M. | Version 1.01a edition #02 (BETA) | |
(C) Copyright 2005, taro |
本プログラムは開発途中のベータ版です。 評価、実験には自由に利用してくださって構いませんが、転載・再配布は行なわないでください。 このドキュメントもベータ版のようなもので推敲が不十分で内容が間違っている箇所があるかもしれませんが、ご容赦願います。
- 目次 - 1-1 概要 1-2 ファイ構成 1-3 実行環境 1-4 使用、転載、再配付について 1-5 説明・表記について 2-1 インストール/アンインストール 2-2 バージョンアップ/アップグレードについての注意点 2-3 MD4Ramの使い方 2-4 あると便利なソフトウェア 3-1 MD4RCtlコマンド詳細 3-2 署名ブロックについて 3-3 ディスクキャッシュについて 3-4 暗号化について 3-5 使用できるアレイ数を変更する 4-1 注意・制限事項 4-2 参考 4-3 変更履歴 |
1-1 | 概要 |
MD4RamはDVD-RAMドライブ等のリムーバブルディスクやRAMディスク、イメージ
ファイル等、様々なデバイスを組み合わせて利用できるWindows 2000/XP用
ソフトウェアRAIDドライバです。
以前からLinuxではDVD-RAMドライブを使ったソフトウェアRAIDを使って
いましたが、Windows上でも利用したいということから、このトライバを開発
しました。
MD4Ramを使えば複数のDVD-RAMドライブを束ねて、1台の容量の大きなドライブ
として使うことができます。DVD-RAMドライブが2台あれば約9Gバイト、4台あれば
約18Gバイトのストレージとして利用可能です。しかも、ストライピングにより読み
書きの速度も高速化されます。
ハードディスクやネットワーク共有ドライブに格納したファイルを仮想ディスク
として利用したり、RAMディスク、仮想CD/DVDドライブ機能も備えています。また、
これらのデバイスを組み合わせてRAID(JBOD/ストライピング/ミラーリング)を
構築することが可能です。
たとえば、2層DVD等の4.7Gバイトを超えるISOイメージをDVD-RAMドライブを2台
使ったストライピング・ドライブに格納して、仮想CD/DVDドライブから利用すると
いったことが可能です。MD4Ramの仮想CD/DVD機能は簡易的なものなので、別の仮想
CD/DVDソフトウェアと組み合わせて使うことも可能です。
その他、以下のような機能・特徴を備えています。
*1 | いったんフォーマットしてしまえばNTFSが使える環境もありましたが。 |
*2 |
Panasonic/B.H.A. DVD-RAMドライバ。 Windows 2000環境でDVD-RAMとMD4Ramを使うためにはDVD-RAMドライバは必須です。 |
*3 |
GUI版MD4Ram Managerはドキュメントが用意できていません。
ここではコマンドプロンプト用のMD4RCtlコマンドを使って説明しています。 |
MD4Ramは使い方を誤るとディスクに格納されているファイルやデータを完全に消してしまいます。 作者はこのプログラムを使用したことによって生じた損害はまったく保証できません。 プログラムの動作や内容を十分理解した上で、自己責任の上でご利用ください。 |
1-2 | ファイル構成 |
ファイル名 | 説明 |
md4ram.htm | 説明(本ファイル) |
md4ram.reg | ドライバ インストール用レジストリ登録エントリ |
md4ram.sys | ドライバ プログラム |
md4rctl.exe | 制御コマンド プログラム |
md4rman.exe | MD4Ram Manager GUI版制御プログラム |
md4rman.htm | MD4Ram Manager 簡易説明ファイル |
1-3 | 実行環境 |
※ |
管理者(Adminisrator)権限を持つユーザで実行してください。 |
1-4 | 使用、転載、再配付について |
このプログラムの著作権は作者が保持しています。
以下の条件に従って自由に使用してください。
[email protected] |
1-5 | 説明・表記について |
本ドキュメントでは、RAIDドライブを構成するDVD-RAMドライブ/イメージファイル/RAMディスク等を物理デバイス、または単にデバイス(device)と表記します。
これらの物理デバイスから構成された、RAIDドライブはディスク アレイまたは単にアレイ(array)と表記します。
2-1 | インストール/アンインストール |
2-2 | バージョンアップ/アップグレードについての注意点 |
2-3 | MD4Ramの使い方 |
MD4Ramは制御コマンドMD4RCtlを使って操作・制御します。
MD4RCtlはコマンドプロンプト用のプログラムです。まずはコマンドプロンプトを開いてください。通常、[スタート]メニューから[すべてのプログラム](または「プログラム」)→[アクセサリ]→[コマンドプロンプト]を選択すると開きます。
※ 準備
安全のため、MD4Ramドライバは自動的には開始しないように設定してあります。
MD4Ramドライバサービスを開始するには、コマンドプロンプトから
|
と入力して[Enter]キーを押してください。
自動的にMD4Ramドライバを開始したい場合、レジストリの変更が必要です。収録している登録エントリmd4ram.reg 中に記述されている「"Start"=dword:00000003」という箇所を「"Start"=dword:00000001」に書き換えて、md4ram.regを実行してください。この変更により次回Windows起動時からMD4Ramドライバは自動的に開始されます。
■ パート I:アレイディスクを作成する
●容量10MバイトのRAMディスクを作成する
Xドライブに10MバイトのRAMディスクを作成します。
次のように入力して最後に[Enter]キーを押してください。
ex.1.1/2-3
md4rctlはアルファベットの大文字と小文字は同じものとして区別しませんが、 サイズ指定のK(キロ)、M(メガ)、G(キガ)は大文字と小文字で意味が異なります。 |
「Continue (Y/N) ?」と尋ねてくるので、[Y]キーを押してください。
これでRAMディスクは作成されましたが、フォーマットされていないので、このままではファイルの読み書きはできません。
OSや環境によってはマイコンピュータやエクスプローラからフォーマットできないことがあります。その場合、コマンドプロンプトからWindows標準のFormatコマンドを使ってフォーマットしてください。
Formatコマンドを使う場合は、たとえば次のようにします。
NTFSを使いたい場合は「/fs:fat」のところを「/fs:ntfs」に変更してください。
ex.1.2/2-3
|
Xドライブのアレイを削除する場合は、次のようにします。
ex.1.3/2-3
|
RAMディスクはアレイを削除すると、ディスク内容は消えてしまい後から読むことはできません。
●イメージファイルを使った仮想ドライブを作成する
MD4Ramではハードディスクなど任意のドライブ上にあるデータファイルを、ディスクドライブとして使うことができます。
新しいイメージファイルからXドライブにアレイを作成したい場合には次のようにします。
イメージファイルのパスはC:\disk.img、容量は100Mバイトとします。
ex.1.4/2-3
|
新しく作成したイメージファイルはRAMディスクと同じで、フォーマットされていません。
formatコマンドを使ってNTFSでフォーマットするには次のようにします。
ex.1.5/2-3
|
Xドライブのアレイを削除する場合は、次のようにします。
ex.1.6/2-3
|
RAMディスクと異なり、アレイを削除してもイメージファイル(この例ではC:\disk.img)はそのまま残っていますので、再度アレイを作成すると以前の状態のまま使うことができます。
もう一度、アレイを作成したいときは、次のようにします。
ex.1.7/2-3
|
既存のイメージファイルからアレイを作成する場合は、--createfileオプションや--capacityオプションは必要ありません。
また、以前にフォーマットしたアレイであれば、再度フォーマットを行なう必要はありません。
これまで説明したようにMD4Ramの操作の基本的な手順は、次のようになります。
■ パート II:複数のデバイスを組み合わせたアレイディスクを作成する
●RAMディスクとイメージファイルでミラーリング
MD4Ramは種類の異なるデバイスを組み合わせてアレイが作成できます。
ここではRAMディスクとイメージファイルでミラーリングする方法を紹介します。
通常、RAMディスクはアレイを削除したりWindowsを終了すると内容は消えてしまいますが、ハードディスク上のイメージファイルとミラーリングすることで、内容を保持することが可能となります。
書き込みはRAMディスクとイメージファイルの両方に書き込みするので遅くなりますが、読み込みについてはRAMディスクを優先的に使うことで高速化できます。
作成するアレイはXドライブ、容量10Mバイト、イメージファイルはC:\ramdisk.imgとして作成するものとします。
ex.2.1/2-3
|
少しパラメータが長いですが、イメージファイルc:\ramdisk.imgが既に作成済みなら、次のようにできます。
ex.2.2/2-3
|
--primaryオプションは、優先的に読み込みを行なうデバイスを指定するものです。
後は、パート Iでの説明と同じようにXドライブをFAT/NTFSでフォーマットしてから利用してください。
誤ってアレイを削除したりPCの電源を切ってしまったときに、イメージファイルC:\ramdisk.imgからデータを取り出したいときは次のようにします。
ex.2.3/2-3
|
パート Iでの説明とまったく同じですが、ramdisk.imgをYドライブに割り当てアレイを作成します。これでYドライブからデータが読み取れます。
|
●複数のイメージファイルを連結したディスクアレイを作成する
MD4RamではLINEAR/STRIPEモードを使うことで、複数デバイスをまとめて容量の大きい1つのドライブとして使うことができます。
ファイルシステムにFAT32を使っている場合、ファイルサイズは4Gバイトまでという制限がありますが、MD4Ramでは2Gバイトのイメージファイルを4つまとめて、8Gバイトのアレイ ディスクを作成できます。また、アレイ ディスクをNTFSでフォーマットすることで、4Gバイトを超えるファイルも作成できます。
最初からNTFSにしておけばそんな面倒なことをする必要はないのですが、これは応用例の紹介ですから気にしないように。
基本的には、パート Iでのアレイの作成方法と同じです。
2Gバイトのファイルを4つ用意してアレイを作成する場合、次のようにします。
ex.2.6/2-3
|
あとは、お決まりのフォーマットです。
パラメータが多くて大変ですが、次回からはイメージファイル(今回の例ではpart1.img 〜 part4.img)は作成済みなので、次のように指定できます。
ex.2.7/2-3
|
■ パート III:複数のDVD-RAMドライブを活用する
MD4Ramを開発するきっかけは、複数のDVD-RAMドライブのストライピンクして使用したいというものでした。
そういうわけで、ここが本命の機能ということになります。
ここでは2台のDVD-RAMドライブを活用する方法を紹介しますが、もっとドライブが増えても使い方は変わりません。DVD-RAMドライブが1台しかなくても、ファイルシステムにNTFSが使えるというメリットもあります。
また、DVD-RAMドライブ以外のリムーバブル ディスクでも同様に利用できます。
DVD-RAMを使うといっても、これまでに紹介した方法と基本的には同じなのですが、ひとつ注意点があります。
MD4Ramで使用するリムーバブル メディアは Windowsや標準ドライバからはファイルシステムとして使えないように論理フォーマット(FAT/UDF等)されていない状態のものを使ってください。
通常の(MD4Ramではない)使用方法でFATやUDFでフォーマットしたメディアについては、先頭から100Kバイト程度ゼロクリアしてしておけば十分ですが、方法が分からない場合は拙作のDVD4RAM(*1)を使って「ディスク消去」してください。
FATやUDFでフォーマットされたメディアをセットすると、Windowsがこのメディアを使おうとするためにMD4Ramと競合します。
*1 |
DVD4RAMについては「2-4 あると便利なソフトウェア」を参照してください。 |
|
●DVD-RAMドライブを2台でストライピングしたディスク アレイを作成する
ここではIドライブとJドライブがDVD-RAMドライブとし、2台でストライピング
したXドライブとしてアレイを作成します。
DVD-RAMドライブにDVD-RAMメディアをセットして、次のように入力します。
※ |
DVD-RAMのアクセスを高速化したい場合、パートIVで紹介しているディスク
キャッシュを使うことができます。PCのメモリに余裕がある場合、100Mバイト程
キャッシュに割り当てておくと効果があります。詳しくはパートVIの説明を
見ていただくとして、とりあえずパラメータの最後に --cache ram --capacity 100M と
追加しておけばキャッシュが有効になります。 |
ex.3.1/2-3
|
初めて使うときには、次のようなメッセージが表示されるはずです。
|
これは署名ブロックを書き込むかどうかの確認です。[N]キーを押して、署名
ブロックを書き込むように指定します。
実のところ操作はこれだけです。後はお決まりのパターンでフォーマットしてから
使ってください。
ただし、DVD-RAMに対するフォーマットはRAMディスクやハードディスク上の
イメージファイルと比較すると、かなり遅くて時間がかかるので、クイック
フォーマットを使うことをお薦めします。
formatコマンドでクイックフォーマットを行なう場合には/Qオプションを指定
して次のようにします。
ex.3.2/2-3
|
メディアを取り出したり交換したいときはアレイを削除する必要がありますが、これも今までと同じで次のようにしてください。
ex.3.3/2-3
|
|
署名ブロックのあるデバイスからアレイを作成した場合、次のようなメッセージが
表示されます。
|
普通は[U]キーを押して署名ブロックを更新・書換してください。[N]キーを押しても
署名ブロックを書き込みしますが、これは新しい署名ブロックを作成します。
正しいデバイスを選択してアレイが正常に動作している限り、[N]キーと[U]キーを
押したときの動作に違いはありません。
他のアレイで使っていたデバイスから、新しい別のアレイを作成しようとすると、
署名ブロックの内容が一致しないのでエラー/警告がでます。こういう場合は、
[N]キーを押して新しい署名ブロックを作成します。
|
●DVD-RAMドライブでミラーリング
DVD-RAMドライブ2台でミラーリングするのは簡単です。ex.3.1/2-3 で
ストライピングを指定しましたが、ここの--array stripe を --array mirror に
変更するだけです。
DVD-RAMでミラーリングしてもあまり意味はないと思いますが、同じ内容の複製を
作りたい場合には1回のファイルコピーで済みます。
MD4Ramでのミラーリングは、読み書きの速いハードディスク上のイメージファイル
を利用したほうがメリットがあります。この方法はノートパソコン等で1台のDVD-RAM
ドライブを活用するのに役立ちます。書き込みは速くなることはありませんが、
読み込みはハードディスクを使うので高速です(ただし、この手の
高速化が目的なら、パートIVで紹介するディスクキャッシュを使ったほうがいいで
しょう)。
IドライブのDVD-RAM 1台と、イメージファイルc:\dvdram.imgでミラーリングする
場合は次のようにします。
ex.3.4/2-3
|
|
既存のイメージファイルを利用する場合には次のように指定できます。、--createfileオプションや--blockNumberは省略できますが、--blockSize 2048の指定は常に必要です。
ex.3.5/2-3
|
|
厳密にはミラーリングしたアレイを作成した直後に全領域についてデータ内容を同期させる必要がありますが、一度もデータを書いたことのない領域については読み取りデータは不定という扱いで、とりあえずは論理フォーマットだけで動きます。
■ パート IV:CD/DVDアレイを活用する
MD4Ramはディスク アレイだけでなく、CD/DVDアレイを作成することができます。
いわゆる仮想CD/DVDドライブと呼ばれている機能で、データファイルをCD/DVD-ROMドライブのように使うことができます。
MD4Ramの仮想CD/DVDドライブとしての機能は貧弱なものでセクタサイズ2048バイトの一般的なデータCD/DVDしか扱うことはできませんが、ディスク アレイとまったく同じように複数のデバイスを組み合わせて使用できます。
仮想CD/DVDドライブ機能についてはMD4Ramを使わなくても、他のソフトを使ったほうが便利だと思いますが、MD4Ramでは複数のデバイスを組み合わせてJOBDやストライピング、ミラーリングできるのが特徴です。
たとえば、2台のDVD-RAMドライブでストライピングしたCD/DVDアレイを作成して、容量9GバイトのCD/DVD-ROMドライブとして使うことができます。
書き込みできないCD/DVDアレイではミラーリングは意味があるとは思えませんが、同じ内容のISOイメージファイルが2つあればストライピング同様に読み込みを高速化することが可能です。
●2層DVD-ROM用ISOイメージをDVD-RAMにストライピングして保存する
たとえば、容量が8Gバイト程度ある2層DVD-ROM用のISOイメージファイルdvdrom.isoがあったとします。このISOイメージは2層DVD±RメディアがなければDVDメディアには保存できませんが、2台のDVD-RAMドライブてストライピングしたアレイには保存できます。
まず、「パート III:複数のDVD-RAMドライブを活用する」で紹介したex.3.1/2-3の方法で、DVD-RAM2台でストライビングしたアレイをXドライブとして作成します。FAT32では4Gバイトを超えるファイルは格納できないので、フォーマットは必ずNTFSにしてください。
dvdrom.isoをXドライブにコピーします。
Xドライブにコピーしたdvdrom.isoをCD/DVDアレイ機能を使ってQドライブとして使うには次のようにします。
ex.4.1/2-3
|
--cdオプションによってCD/DVDアレイを作成します。
この方法ではMD4RamのCD/DVDアレイ機能は必須ではなく、Xドライブにdvdrom.isoをコピーした後は他の仮想CD/DVDドライブを使うことも可能です。
ストライピングで高速化しているとはいえ数GバイトあるISOイメージファイルをコピーするには時間がかかります。しかし、リッピングでは直接ストライピングしたアレイに保存する方法もあります(その場合、DVD-RAMドライフ2台に加えて、もう一台リッピング用DVDドライブが必要ですが)。
DVD-RAMドライブは他のDVD系メディアと比較すると読み取り速度が遅いのですが、2台でストライピングしていればシーケシンャルアクセスでほぼ2倍の速度が期待できます。2倍速DVD-RAMなら4倍速、3倍速DVD-RAMなら6倍速、5倍速DVD-RAMなら10倍速相当の速度が期待できます(実際にはオーバーヘッドがあるので、そんなに速くはならないと思いますが)。
●2層DVD-ROM用ISOイメージをDVD-RAMにストライピングして保存する(2)
DVD1枚には収まらないISOイメージファイルをDVD-RAMに格納するのは、先ほど紹介したようにNTFSでフォーマットしたディスク アレイに格納した上で、仮想CD/DVDドライブとして利用するのがもっとも現実的で簡単な方法です。
ここから先は実用性はなく趣味の領域ですが、こんなやり方もあるということで紹介しておきす。
先ほどと同じように、IドライブとJドライブがDVD-RAMドライブで、9GバイトのISOイメージファイルがあるとします。
まず、DVD-RAMドライブでストライビングしたディスク アレイを作成します。
ex.4.2/2-3
|
ここではFATやNTFSでフォーマットを行なう必要はありません。
このディスクアレイに、md4rctlのWriteコマンドを使ってISOイメージファイルを直接書き込みます。
ex.4.3/2-3
|
書き込みが終わったら「md4rctl stop x:」を実行してアレイをいったん削除してから、今度はQドライブにCD/DVDアレイとして作成します(実はディスク アレイ タイプのXドライブのままでWindowsは認識してしまうようですが、安全のためにCD/DVDアレイとして作成し直して下さい)。
ex.4.2/2-3に--cdオプションを追加してドイラブレターを変更しただけです。
ex.4.4/2-3
|
最初の方法だとXドライブとQドライブの2つを使用しますが、この方法だとQドライブだけで済みます。
●複数のメディアに保存できるようにイメージファイルを分割する
MD4Ramのアレイは、任意のサイズのイメージファイルに分割するすることができます。
これで何ができるかというとCD-RやDVD-R等にMD4Ramで使えるイメージファイルを分割した上で焼くことができ、分割した数だけCD/DVD-ROMドライブがあれば(ハードディスクに戻すことなく)CD/DVD-ROM上のイメージファイルからアレイが作成できます。
もちろん、CD/DVD-ROMドライブは書き込みできないので読み込み専用になりますが、バックアップからの復元や再生用にはそれで十分です。
8GバイトのDVD-ROM用ISOイメージファイルc:\dvdrom.isoがあったとして、これを4G+4Gバイトに2つに分割して、なおかつ2台のドライブでストライピングできるようにします、
まず、元になるISOイメージファイルの正確なファルサイズを調べます。
ここでは、dvdrom.isoのファイルサイズは8,258,011,136バイトとします。これをセクタサイズ2048で割ったブロック(セクタ)数を求めます。8258011136÷2048=401648ブロックとなります。
これを2つに分割しますが、ストライプサイズを考慮する必要があるため、単純に2で割っても格納できないことがあります。1ブロックでも不足するとダメですが、大きい分には分には問題ないので、正確に計算するのが面倒なときは半分に割ったブロックサイズにストライプサイズ16Kバイト分にあたる8ブロック(16×1024÷2048=8)を足しておくといいでしょう。401648÷2+8=2016124ブロックとなります。
このパラメータを使って、ストライピング用に分割したイメージファイルdvd1.img と dvd2.img をハードディスクに作成することにします(可能ならば各イメージファイルdvdrom.iso、dvd1.img、dvd2.imgは物理的に異なるドライブ上に格納・作成することをお勧めします。理由はやってみたらわかりますが、同一ドライブにあるイメージファイルでストライピングすると遅くなるだけです。ただ、目的は分割したイメージファイルを作成することなので、遅いだけで動作に問題はありません)。
まずは、dvd1.imgとdvd2.imgを使ったディスクアレイをXドライブとして作成します。
ex.4.5/2-3
|
Xドライブのアレイを作成したら(フォーマットの必要はありません)、DVD-ROM用ISOイメージdvdrom.isoをmd4rctlのWriteコマンドを使って書き込みます。
ex.4.6/2-3
|
この操作でdvdrom.isoの内容が、dvd1.imgとdvd2.imgの2つのイメージファイルに分割して保存されます。
書き込みが終わったら、「md4rctl stop x:」でいったんアレイを削除します。
念のためCD/DVDアレイをQドライブとして作成して内容を確認します。
ex.4.7/2-3
|
Qドライブとして使用できることを確認したら、「md4rctl stop q:」でアレイを削除します。
あとは、dvd1.igmとdvd2.imgを2枚のDVD-Rにでも焼いてください。dvd1.imgやdvd2.imgはISOイメージではなく、通常のファイルとして焼いてください。
後はわかると思いますがDVD-ROMドライブを2台用意して、dvd1.imgとdvd2.imgからCD/DVDアレイを作成して使うことができます。IドライブとJドライブがDVD-ROMドライブとして、i:\dvd1.imgとj:\dvd2.img があるとしたら次のようにします。
ex.4.8/2-3
|
実際にやってみると、DVD-ROMドライブのストライピングはあまり速くないというか、返って遅くなることもあります。同じ設定でDVD-RAMは高速化できるのですが、アクセスタイムの大きいDVD-ROMドライブではストライピングするとデータ転送が細切れになって、ドライブ間の同期も必要なこともあって遅くなることがあります。思ったほど速度が向上しない場合は、ストライプサイズをもっと大きくして見てください(標準設定のストライプサイズ64Kバイトです)。
ストライピングではなくLINEARモード(JBOD)を使うこともできるので、DVD-ROMドライブで分割イメージファイルを使うにはLINEARモードを使ったほうがいいかもしれません。
LINEARモードでは、ファイルサイズの異なるイメージファイルに分割できるのでストライピングより融通が利きますし、同一ハードディスク上に分割イメージファイルを作成する作業もストライピングよりも速いはずです。
|
■ パート V:暗号化したアレイを使う
MD4Ramではデータ内容を暗号化したアレイを作成できます。
たとえば、イメージファイルからアレイを作成した場合、イメージファイルの
中身を覗くことでデータ内容がわかってしまいます。文書などのテキストは
そのままの形で読めてしまいます。
MD4Ramの暗号化機能はアレイやデバイスにデータを暗号化した上で保存して、
中身を覗き見ても復元できないようにします。
暗号化したアレイは通常のアレイとまったく同じように読み書きできますが、
アレイ作成時にパスワードかキーファイルが必要となります。パスワードや
キーファイルが一致しないと、暗号化したアレイはデバイスは正しく使用
できません。
●パスワードで保護したディスクアレイを作成する
暗号化といってもいくつかオプションを追加するだけで、これまでの使い方と
まったく同じです。
パスワードXYZ9955Wで保護した10Mバイトのイメージファイルsecret.imgを作成して、
暗号化するには次のようにします。
ex.5.1/2-3
|
パスワードによる暗号化を行なう場合には--cryptoと--passwordオプションを使います。
パスワードに利用できる文字や、文字の長さには特に制限は設けていませんが、
常識的な範囲内で利用してください。
新しくイメージファイルを作成した場合はフォーマットしてから使ってください。
いったん作成したイメージファイルを使う場合には--createfileと--capacityオプションは
必要ないので、以後は次のように作成できます。
ex.5.2/2-3
|
--cryptoオプションを付けずに暗号化を指定しなかったり、パスワードを間違えても
エラーも警告もなしで動作します((*1))。ただし、
誤ったデータが復元されるために、暗号化したデータは正しく読み取ることはできません。
ex.5.1/2-3で作成したFATやNTFSでフォーマットしてアレイを、ex.5.2/2-3で
暗号化を指定しなかったりパスワードを間違えて再びアレイを作成すると、Windowsは
フォーマットされていない不明なディスクとして扱います。
その場合は、すぐにアレイを削除して、必要なら正しいパスワードを指定して
アレイを再作成してください。
パスワードが一致しない状態でアレイを作成し、データを書き込みしてしまうと、
以後正しいパスワードを指定しても完全なデータの復元は不可能になります。
*1 | 署名ブロックを利用している場合は、パスワードがアレイ作成時と一致しているか どうか確認できます。誤ったパスワードが指定された場合は警告が表示されます。 |
●キーファイルで保護したディスクアレイを作成する
パスワードの代わりにキーファイルを指定することで、暗号化することも
可能です。
新しくキーファイルmysecret.keyを作成し、10Mバイトのイメージファイル
secret2.imgを作成して、暗号化するには次のようにします。
ex.5.3/2-3
|
--passwordオプションの代わりに、--keyfileオプションでキーファイルを指定
します。
--createfileオプションを指定しておくと、キーファイルが存在しない場合は
自動的に作成します。キーファイルの自動作成は日時などからランダムに作成
するので、毎回違った内容になります。
新しくイメージファイルを作成した場合はフォーマットしてから使ってください。
いったん作成したイメージファイルを使う場合には--createfileと--capacityオプションは
必要ないので、以後は次のように作成できます。
ex.5.4/2-3
|
キーファイルやキーファイルの内容が一致しなくてもエラーも警告も表示されません
((*1))。その場合の注意点はパスワードを使った場合と
同じですので、それちらを見て
ください。
キーファイルを削除したり、内容を書き換えてしまうと復元は不可能になります。
また、暗号化していてもキーファイルが入手できれば誰でも復元できてしまいます。
重要なキーファイルならバックアップを取っておいたほうがいいでしょうが、
管理には十分注意してください。
*2 | 署名ブロックを利用している場合は、キーファイルの内容がアレイ作成時と 一致しているかどうか確認できます。誤ったキーファイルが指定された場合は警告が 表示されます。 |
■ パート VI:ディスクキャッシュを活用する
ディスクキャッシュは、ハードディスク等に格納されているデータを、より高速の
記憶装置(メモリ等)に一時的に格納することでディスクアクセスを高速化する技術や
手法のことです。
Windowsもディスクキャッシュを行なっていますが、更にMD4Ram独自のディスク
キャッシュ機能を使うことができます。
MD4Ramのディスクキャッシュは、ディスクドライブ、イメージファイル、RAM等
アレイに指定できるデバイスと同じものが使えます。基本的には、アレイよりも高速な
デバイスをディスクキャッシュに指定します。
たとえば、CD/DVDやDVD-RAMに対してはハードディスクやイメージファイルを、
ハードディスクやイメージファイルにはメモリ(RAM)をディスクキャッシュとして
利用します。
MD4Ramで作成できるどんなアレイにも、ディスクキャッシュは指定できます。CD/DVD
アレイにも指定できますし、ストライピングやミラーリングしていてもディスク
キャッシュは有効です。
ただし、MD4Ramのディスクキャッシュは万能ではなく、ファイル内容を何度も読み取る
ような使い方で効果を発揮します。
たとえば、デジカメ画像を保存して、内容を何度も確認しながら作業するような使い方です。
ランダムアクセスの遅いCD/DVDから小さなファイルを何度も読み取るような使い方にも有効です。
MD4Ramのディスクキャッシュが向かないのは、バックアップで書き込みだけで作業が
完了するとか、読み込みでも大きな動画を再生するとといった用途には向きません。
返って遅くなることもあります。
●メモリをディスクキャッシュに割り当てる
MD4Ramのディスクキャッシュはどんなアレイにも指定でき、md4rctlコマンドの
使い方でいえばこれまでのアレイ作成方法に--cacheオプションを追加するだけです。
たとえば、パートI ex.1.4/2-3 に紹介した100Mバイトのイメージファイルからの
アレイに10Mバイトのメモリ(RAM)によるキャッシュを割り当てるとしたら次のようにします。
ex.6.1/2-3
|
「--cache ram --capacity 10M」が加した部分です。これでディスクキャッシュが
機能します。
--createfileオプションはこれまでの使用例と同じようにイメージファイルが
作成済みの場合には不要です。
キャッシュの容量は、アレイやメモリ搭載量に応じて自由に決めてください。
ただし、搭載メモリの大半を使ってしまうような指定はしないでください。
実際にはたった100MバイトのドライブにMD4Ramのディスクキャッシュを使っても実用的な
意味はありません。CD/DVDのようなランダムアクセスの遅いドライブであればアレイ容量の
数割程度にあたるメモリ(RAM)をキャッシュに指定しておくと、それなりの効果はあるかと
思います。
●イメージファイルをまるごとDVD-RAMのキャッシュに
CD/DVDから構成されたアレイでは、ハードディスクに格納した同容量の
イメージファイルをキャッシュにすることで高速化できます。
ミラーリングで読み取り優先デバイスを指定するのと同じ効果ですが、
ミラーリングはデータ内容がまったく同じデバイスを常に用意しておく必要があります。
ディスクキャッシュであれば、利用したいときにいつでも利用できます。
ここでは、4.7GバイトDVD-RAMメディアを使用する際に、ハードディスク上の
イメージファイルをディスクキャッシュに割り当てる方法を紹介します。
パート III ex.3.4/2-3でDVD-RAMドライブでミラーリングする方法を紹介しましたが、
これとほとんど同じです。
4.7GバイトDVD-RAMメディアの容量は2048バイト×223607セクタですので、
このパラメータをキャッシュに指定します。
DVD-RAMはIドライブ、キャッシュとして割り当てるイメージファイルはc:\dvdram.csh
としてアレイをXドライブとして作成することにします。
ex.6.2/2-3
|
MD4Ramのキャッシュにはlistとtableという2種類の動作モードあります。
基本的には、アレイよりもディスクキャッシュの容量が小さい場合にはlistモード、
同じかキャッシュのほうが大きな場合にはtableモードを使います。
アレイ(この例では4.7GバイトDVD-RAM)と同容量の
イメージファイルをキャッシュとして利用場合には自動的にtableモードが選択
されるはずですが、念のために「--cacheMode table」でtableモードを明示的に
指定しています。
●CD/DVDドライブのアクセスをディスクキャッシュによって高速化
CD/DVDドライブのアクセスをMD4Ramのディスクキャッシュを使って高速化する
ことも可能です。
これまで紹介したようにMD4Ramのディスクキャッシュは万能ではありませんが、
繰り返しデータを読み込む場合に効果があります。
CD/DVD内容をイメージファイルにしてハードディスクに保存して仮想CD/DVD
ドライブとしてから使えば、高速なハードディスクを利用できますが、MD4Ramの
ディスクキャシュならイメージファイルを作成しなくてもその場ですぐに利用でき
ます。
CD/DVDドイラブがIドライブとして、キャッシュ付でアクセスできるCD/DVDアレイを
Xドライブとして作成します。
ex.6.3/2-3
|
MD4Ramは標準では署名ブロックを作成しようとしますが--signBlock noneにより
無効にした上で、開始アドレスのずれを--blockAddr 0でゼロ(なし)にします。
こうすると元々のIドライブの内容とまったく同じものがXドライブにも現れます。
書き込みできるドライブでこんなことやると確実にデータを壊しますが、読むだけの
ROMドライブなら問題ありません。
同じ内容のドライブが2つあっても普通は意味がありませんが、Xドライブ側は
ディスクキャッシュによって高速化されています。元々のIドライブにはディスク
キャッシュは効きません。
メモリ(RAM)ではなくハードディスク上のイメージファイルをキャッシュとして
割り当て高速化することも可能です。
1つ前で紹介したDVD-RAMにイメージファイルのキャッシュとして使用する方法と基本的には同じです。
IドライブのCD-ROMに、イメージファイルc:\cdrom.cshをキャッシャとして割り
当てるには次のようにします。
ex.6.4/2-3
|
イメージファイルの容量は--capacity 700Mとして700Mバイトとして指定していますが、
CD/DVD-ROMとぴったり同じか、大きなサイズで指定してください。正確なサイズがわかる
場合には--blockNumberオプションで指定するといいでしょう。
2-4 | あると便利なソフトウェア |
MD4Ramを使う際、以下のプログラム/ソフトウェアをそろえておくと便利かと思います。
DVD4RAMには、DVD-RAMメディアを消去・初期化する機能があります。ディスク消去はMD4RamでDVD-RAMを使うには、必須ともいえる機能です。
DevTestはコマンドプロンプト用のプログラムですが、ハードディスク、CD/DVDドライブ等の様々なドライブ情報を表示できます。
たとえば、「devtest disk」として実行すれば、MD4RCtlに指定できる物理ドライブ番号(disk0等)が表示されます。
ドライブの指定セクタのデータ内容をダンプ表示して確認することもできます。たとえば、「devtest C: --dump 0」とするとCドライブのMBR(マスターブートレコード)の内容が表示されます。
3-1 | MD4RCtlコマンド詳細 |
表記 | 説明 |
角かっこ [ ] | 省略可能な項目 |
中かっこ { } | 縦棒(|) で区切られた選択肢のうち、いずれか1つを選択できる。例:{start|stop} |
・・・ | 繰り返し指定できるパラメータ。 |
< > | 特定の書式をもつパラメータ。例:<数値>、<デバイス> |
■ アレイの作成・開始
MD4RCtl start <アレイ> [<ドライブレター>] [--array {LINEAR|STRIPE|MIRROR}] [--blockNumber <ブロック数>] [
--blockSize <サイズ>] [--capacity <サイズ>] [--cd] [--chunkSize <サイズ>] [--createfile] [-crypto [<暗号アルゴリズム>]] [--keyfile <ファイル名>] [--ignore-readSign] [--ignore-cryptoSn] [--password <パスワード>] [--readonly] [--removable] --dev <デバイス> [--blockAddr <アドレス>] [--blockNumber <ブロック数>] [--blockSize <サイズ>] [--capacity <サイズ>] [--createfile] [-crypto [<暗号アルゴリズム>]] [--keyfile <ファイル名>] [--ignore-readSign] [--primary] [--password <パスワード>] [--readonly] [--signBlock <ロケーション>] [ --dev <デバイス> [--blockAddr <アドレス>] [--blockNumber <ブロック数>] [--blockSize <サイズ>] [--capacity <サイズ>] [--createfile] [-crypto [<暗号アルゴリズム>]] [--keyfile <ファイル名>] [--ignore-readSign] [--primary] [--password <パスワード>] [--readonly] [--signBlock <ロケーション>] ]・・・ [ --cache <デバイス>] [--blockAddr <アドレス>] [--blockNumber <ブロック数>] [--blockSize <サイズ>] [--cacheMode {list|table}] [--capacity <サイズ>] [--createfile] ] |
<サイズ>にはk、m、g、K、M、G といった単位を指定できます。オプションやパラメータにはアルファベットの大小文字の区別はありませんが、サイズ指定は例外として小文字は103系(10^3=1000単位)、大文字は210系(2^10=1024単位)となります。
【解説】
アレイ/デバイス/キャッシュで同じ名前のオプションが存在しますが、これらのオプションは--dev, --cacheオプションよりも先に指定したものはアレイに対して有効で、--dev, --cacheオプションを指定した以後はデバイスやキャッシュに対して有効です。
--createfileと--igore-readSignオプションはアレイに対して指定(最初の--devオプションよりも先に指定)すると、以後のデバイス/キャシュすべてに作用し、個々のデバイスに指定する必要はありません。
アレイ/デバイスのアドレスとサイズに関する--blockAddr、--blockNumber、--capacityオプションをすべて省略した場合、各デバイスの最大容量からアレイ容量は自動的に決定します。オプションを省略して自動設定に任せる場合には、署名ブロックの位置を考慮したアドレスとサイズが自動的に設定されます。
安全のため、パーティション(区画)を持つ固定ディスクドライブはデバイスに指定できないようにしています。
ハードディスクのCドライブ等をデバイスに--dev c: などと指定してもエラーとなります(md4rctlで弾いているだけで、md4ramドライバ側は無理矢理パラメータを渡せば動きますが)。
どうしてもパーティションを持つドライブをデバイスとして指定する場合には、
物理ドライブ指定(--dev disk0 等)を使ってください。その場合、
md4rctlもmd4ramドライバもパーティション構造とは無関係に動作し、
標準設定の署名ブロックの書き込みを行なうと確実にMBR(マスターブートレコード)を
上書きして既存のパーティションやファイルシステムは認識できなくなります。
■ アレイの削除・停止
MD4RCtl stop <ドライブレター> |
【解説】
ドライブレターで指定したアレイを削除・停止します。
■ アレイの情報の表示
MD4RCtl show [<ドライブレター>] |
【解説】
使用中のアレイの情報を表示します。
■ アレイ内容を読み込み
MD4RCtl read <ドライブレター> --writefile <ファイル名> |
【解説】
ドライブレターで指定したアレイの内容を読み取って、イメージファイルとして保存します。
■ アレイ内容を書き込み
MD4RCtl write <ドライブレター> --readfile <ファイル名> |
【解説】
イメージファイルの内容をドライブレターで指定したアレイに書き込みます。
3-2 | 署名ブロックについて |
署名ブロックは、アレイを構成するデバイスの順番やパラメータを自動的に構成
するために使用する情報です。
署名ブロックを使用するデバイスは、特定の位置に署名情報が書き込まれます。
標準設定ではドライブレターや物理ドライブとして指定したデバイスには先頭
ブロック(セクタ)に自動的に署名ブロックを作成します。先頭のセクタはMBR
(マスターブートレコード)と呼ばれている、OSがハードディスクを認識する重要
な情報が存在しますが、署名ブロックを作成するとこれを上書きして壊すことに
なります。
これは非常に危険ですので、ハードディスク等のパーティションを持つ固定
ディスクはMD4RCtlでは制御できないように制限しています。
DVD-RAM等のリムーバブルディスクについては署名ブロックでMBRを壊すことで、
Windowsがファイルシステムを認識しないディスクを意図的に作っています。
DVD-RAMでも署名ブロックを無効にしたり最終ブロックに作成した上でFAT32/NTFS
でフォーマットすると、一見正しいMBRが存在するためにWindowsがこれを使おうと
します。そうするとMD4Ramと競合してしまってトラブルの元になります。
そういった理由があるため、署名ブロックはあえてMBRを壊す先頭セクタに作成
しています。
ただし、弊害としてWindwosが認識できないディスクがセットされていると、たまに
マイコンピュータやエクスプローラが確認しにいって動作が遅くなることがあります。
アレイを作成して開始してしまえばMD4Ramドライバに制御が移るので遅くなる
ことはありませんが、アレイを構成していないDVD-RAMは使い終わったらメディアを
抜いておくことをお勧めします。
標準設定では、RAMディスクとイメージファイルについては署名ブロックは作成
しません。
RAMディスクはアレイを削除すると署名の内容も消えてしまうので署名ブロック
を作成しても意味がありません。
イメージファイルについては--signBlockオプションを使うことで、署名ブロック
を使うことも可能です。
署名ブロックによる自動構成を行なうためには、アレイを構成するすべての
デバイスに署名ブロックが必要です。
RAMディスクタイプのデバイスには署名ブロックは作成できないので
(作成してもアレイを削除すると内容が消えてしまう)
RAMディスクを組み合わせているアレイでは、署名ブロックによる自動構成は
利用できません。
3-3 | ディスクキャッシュについて |
MD4Ramは独自のディスクキャッシュを備えています。
ディスクキャッシュはWindowsも行なっているので、MD4Ramのディスクキャッシュは
必要なさそうですが、使い方によっては効果があります。
まず、MD4Ramではあらゆるデバイスがキャッシュとして利用できます。
WindowsのキャッシュはPCの搭載メモリを使いますが、MD4Ramはメモリだけでなく
ディスクやイメージファイルをキャッシュに利用できます。メモリでは大容量のアレイ
全体をキャッシュすることはできませんが、ハードディスクやイメージファイルを
キャッシュとして利用すれば、CD/DVD程度の容量ならまるごとキャッシュできます。
MD4Ramのディスクキャッシュはライトスルー方式で、データの書き込みはアレイと
キャッシュの両方に同時に行ないます。
読み込みについては、キャッシュにデータがあればアレイにアクセスすることなく
転送しますが、キャッシュにないデータはアレイからの読み込みと同時にキャッシュに
書き込みます。
このため、動画の再生のように頭から一度だけデータを読み取るような使い方では
キャッシュの効果はありません。読み取りと同時にキャッシュに書き込む分だけ
遅くなります。
また、バックアップのように書き込みだけで作業が完了してしまうような使い方にも
向いていません(差分バックアップのように、ある程度読み込みも
ともなうなら効果はあるかもしれませんが)。
メモリのように十分に高速なデバイスをキャッシュに使えば、無駄なキャッシュへの
書き込みがあったとしても速度の低下はありませんが、非効率なことに代わりありません。
MD4Ramのディスクキャッシュは、繰り返しデータを読み込むような用途に効果があります。
MD4Ramのディスクキャッシュにはlistモードとtableモードという2種類の動作
モードがあります。
tableモードはミラーリングの応用で、アレイ全体を丸ごとキャッシュします。
したがって、アレイと同容量のキャッシュデバイスを用意する必要があります。
listモードは、アレイよりも容量の小さいデバイスをキャッシュとして割り当てる
場合に使います。
tableモードで使うキャッシュデバイスはアレイよりも高速で容量が十分なら
効果がありますが、listモードではメモリのようにランダムアクセスしても速度
低下のないデバイスを指定してください。
listモードでは限られた容量の中でデータのやりくりを行なうために、キャッシュ
デバイス上に連続してデータが並ぶとは限りません。このため、アレイ上では
シーケンシャル アクセスをしているつもりでも、キャッシュデバイス上では連続して
いないためにランダムアクセスを行なうことになります。
Windowsのディスクキャッシュはディスク専用というわけではなく、
OSやアプリケーションが利用していない空きメモリを活用しています。
空きメモリを活用するという点では効率はいいのですが、プログラムをロードしたり、
アプリケーションがメモリを必要とすると使用できるディスクキャッシュ容量が
減ってしまいます。
このため繰り返し利用しているデータであってもキャッシュから消えてしまい、
ヒットしないことがあります。
一方、MD4Ramではディスクキャッシュ専用にデバイスを割り当てますし、table
モードなら丸ごとキャッシュして、いったん確保したデータはアレイを停止するまで
開放することはありません。
listモードは容量が限られているので、すべてがキャッシュできるわけでは
ありませんが、内部でデータの利用頻度をカウントして、何度も読み込みを
行なっているデータをなるべくキャッシュに残すようにしています。
こういうことがあるためWindows標準のディスクキャッシュと併用しても、
それなりに効果があります。
3-4 | 暗号化について |
暗号化はアレイ全体を暗号化する方法と、個別のデバイスを暗号化する方法が
あり、それぞれ独立しています。したがって、アレイ暗号化とデバイス暗号化を同時に
指定すると2重に暗号化がかかることになります。
ただし、デバイス暗号化はRAMディスクタイプは暗号化を無視します。RAMディスクは
アレイを削除すると内容が保持できないので、暗号化してもあまり意味はありません。
どうしても、RAMディスクも暗号化したい場合はアレイ暗号化を指定してください。
通常はアレイ暗号化を使うと思いますが、デバイス暗号化を使うとミラーリングを
構成するデバイスのうち一方だけを暗号化するといったことが可能です。また、
デバイス毎に異なる暗号アルゴリズムを使うことも可能です。
暗号化アルゴリズムはBLOWFISHとAESをサポートしています。BLOWFISHでは448
ビット(56バイト)、AESでは256ビット(32バイト)のキーを使います。--keyfile
オプションでキーの保存されたキーファイルを指定するか、--passwordオプションで
キーを生成します。
--keyfileオプションで指定するキーファイルは先頭から必要な長さのデータを
キーとして使います。指定したキーファイルが存在しない場合--createfileオプション
を指定しておくとキーを自動生成します。
キーの自動生成は日時と乱数を組み合わせるので、毎回違った内容のキーを生成
します。
キーファイルの内容がもれたら暗号は解除されてしまうので、管理には十分注意
してください。また、キーファイルをなくしてしまったら復元は無理です。
--passwordオプションを指定する方法では、パスワードとして指定された文字列
からキーを生成します。同じパスワードを指定すると、毎回同じキーを生成します。
キーからパスワードには戻せません(キーがばれたら暗号は解け
てしまうのでパスワードに戻す意味はありませんが)。--password
オプションで生成されるこのキーはどこにも保存されません。
署名ブロックを利用している場合、アレイ作成時にパスワード/キーファイル
一致しているかどうか確認できます。もし、暗号方式が違ったりパスワード/キー
ファイルが一致していないと警告が表示されます。警告を無視してアレイを作成する
ことも可能ですが、その場合は正しい内容は読み取れません。
署名ブロックを利用していない場合、キーファイルやパスワードが一致しなくても
警告もエラーもありません。ただし、パスワード/キーファイルが一致しない状態では
正しい内容は読み取れません。Windowsは正しいファイルシステムとして認識
できないので、ファイルの読み書きもできません。
パスワード/キーファイルが一致しない状態でアレイに
書き込みを行なうと、以後正しいパスワード/キーファイルを使っても完全な復元は
不可能になるので注意してください。
署名ブロックには暗号方式とパスワード/キーファイルを確認するための確証
コードが格納されます。パスワードを指定した場合はパスワード文字列から、
キーファイルを指定した場合はキー内容から256ビット(32バイト)の確証用
コードを作成します(アルゴリズムはMD5とSHA256を組み合わせています)。
この確証コードを使ってパスワード/キーファイルが正しいか確認します。
確証コードはパスワード/キーファイルとシリアル値の2つを組み合わせて作成
していますが、実際の暗号化の解除にはシリアル値は使いません。
何らかのトラブルで署名ブロック内のシリアル値が壊れてしまったり、
誤って署名ブロックを更新してしまってシリアル値が書き変わってしまうと、
正しいパスワード/キーファイルを指定してもパスワード/ファイルが一致しない
という警告が表示されます。しかし、パスワード/キーファイルが正しければ、
この警告を無視してアレイを作成することで、暗号の解除が可能です。
アレイ作成時に--ignore-crtotoSnオプションを指定すると、シリアル値を
利用しない確証コードを作成します。通常、シリアル値を利用していれば、
パスワード/キーファイルを使っていても、アレイが異なれば確証コードは
違った内容になります。しかし、シリアル値を利用しない場合、同じパスワード/
キーファイルを使うと、アレイが違っても同じ確証コードになります。
いったん暗号化したアレイやデバイスを、パスワード/キーファイルを指定
しないでアレイを作成することも可能です。
もちろんこの状態では暗号化する以前の内容は読み取りませんが、md4rctlの
Readコマンドなどは暗号化したイメージのまま読み取りできます。つまり、パスワード
/キーファイルがわからなくてもイメージファイルの分割や統合、複製は自由にでき
ます。操作後に、正しいキーで開けば元の内容が読み取れます。
ただし、アレイとデバイスに多重に暗号化がかかっていると、ややこしいことに
なるので、お勧めはしません。
暗号化を行なう場合は、署名ブロックを作成しておくことをお勧めします。
署名ブロックがあれば、アレイ作成時と暗号化が一致しているか確認できます。
アレイの暗号化とMD4Ramのディスクキャッシュを併用した場合、キャッシュデバイスには
暗号化した状態でデータは格納されます。高速化のためのキャッシュなら、暗号化
をパスする方法もありましたが安全のためにこのようにしました。
MD4Ramのディスクキャッシュはアレイに対して行なわれるので、デバイスの
暗号化については何ら影響や効果はありません。アレイに暗号化を指定しなければ、
デバイスに暗号化を指定しても、キャッシュのデータは暗号化されません。
3-4 | 使用できるアレイ数を変更する |
標準設定ではディスク アレイを2個、CD/DVDアレイは1個だけ作成できますが、レジストリを編集することで、それぞれ16個まで増やすことができます。
レジストリキー KEY_LOCAL_MACHINE\SYSTEM\CurrentControleSet\Services\MD4Ram\Parameters にある、NumberOfDevices がディスクアレイ数、NumberOfCdroms がCD/DVDアレイ数ですので、これらの値を変更してください。
収録している登録エントリmd4ram.reg を編集してから、実行するという方法もあります。
4-1 | 注意・制限事項 |
4-2 | 参考 |
MD4Ramを開発するにあたって次の資料/書籍/ソフトウェアを参考にしました。
4-3 | 変更履歴 |