MD4Ram - Multi Device Driver for R.A.M. (BETA) Version 0.99b edition #02 (BETA)
(C) Copyright 2005, taro

 本プログラムは開発途中のベータ版です。
 評価、実験には自由に利用してくださって構いませんが、転載・再配布は行なわないでください。

 このドキュメントもベータ版のようなもので推敲が不十分で内容が間違っている箇所があるかもしれませんが、ご容赦願います。

- 目次 -

1-1 概要
1-2 ファイ構成
1-3 実行環境
1-4 使用、転載、再配付について
1-5 説明・表記について
2-1 インストール/アンインストール
2-2 MD4Ramの使い方
2-3 あると便利なソフトウェア
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ドライバは必須です。

 MD4Ramは使い方を誤るとディスクに格納されているファイルやデータを完全に消してしまいます。
 作者はこのプログラムを使用したことによって生じた損害はまったく保証できません。
 プログラムの動作や内容を十分理解した上で、自己責任の上でご利用ください。


  1-2 ファイル構成

ファイル名 説明
md4ram.sys ドライバ プログラム
md4ram.reg ドライバ インストール用レジストリ登録エントリ
md4rctl.exe 制御コマンド プログラム
Debug\md4rctl.exe 制御コマンド プログラム(デハッグ用)
md4ram.htm 説明(本ファイル)

 ベータ版のためデバッグ用Debug\\md4rctl.exeを収録しています。基本的な動作はリリース版と同じですが、途中経過や動作状況などの情報を表示するようになっています。
 表示内容は開発者が見ないとわからないと思いますが、ブログラムが意図したとおりに動作しない場合はデバッグ版を使ってみてください。


  1-3 実行環境


  1-4 使用、転載、再配付について

 このプログラムの著作権は作者が保持しています。
 以下の条件に従って自由に使用してください。

  1.  著作権表示を変更しないこと。
  2.  このプログラムを使用したことによって生じた損害はまったく保証しない。
  3.  作者はこのプログラムに不備があっても、それを訂正する義務を負わない。
  4.  ベータ版につき転載・再配布は禁止します。
 感想・障害報告等、作者への連絡は、

e-mail taro.kobayashi@nifty.com

まで、願いします。
 電子メールでのお問い合わせは返事が遅れたり、あるいは返信のメールが行かないこともありますので、予めご了承ください。
 開発途中のベータ版につき転載・再配布は禁止します。


  1-5 説明・表記について

 本ドキュメントでは、RAIDドライブを構成するDVD-RAMドライブ/イメージファイル/RAMディスク等を物理デバイス、または単にデバイス(device)と表記します。
 これらの物理デバイスから構成された、RAIDドライブはディスク アレイまたは単にアレイ(array)と表記します。


  2-1 インストール/アンインストール

ドライバのインストール手順

  1. ドライバ プログラムmd4ram.sysをWindowsフォルダ配下のSystem32\Driversディレクトリにコピーする。
  2. 登録エントリmd4ram.regを実行して、ドライバプログラムをレジストリに登録する。
  3. Windowsを再起動してください。
 制御コマンドmd4rctl.exeはコマンド プロンプトから利用する、コマンド プログラムです。
 コマンドパスの通った適当なフォルダにコピーして格納してください。説明の意味がよくわからないという場合は、Windowsフォルダにコピーしてください。

ドライバのアンインストール(削除)手順

  1. Windowsフォルダ配下のSystem32\Driversディレクトリにコピーしたドライバ プログラムmd4ram.sysを削除する
  2. レジストリ エディタ(regedit.exe)等を使って、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControleSet\Services\MD4Ram を削除する
  3. Windowsを再起動してください。


  2-2 MD4Ramの使い方

 MD4Ramは制御コマンドMD4RCtlを使って操作・制御します。
 MD4RCtlはコマンドプロンプト用のプログラムです。まずはコマンドプロンプトを開いてください。通常、[スタート]メニューから[すべてのプログラム]→[アクセサリ]→[コマンドプロンプト]を選択すると開きます。

※ 準備

 ベータ版では安全のため、MD4Ramドライバは自動的には開始しないように設定してあります。
 MD4Ramドライバサービスを開始するには、コマンドプロンプトから


net start md4ram

と入力して[Enter]キーを押してください。


■ パート I:アレイディスクを作成する

●容量10MバイトのRAMディスクを作成する

 Xドライブに10MバイトのRAMディスクを作成します。
 次のように入力して最後に[Enter]キーを押してください。

ex.1.1/2-2


md4rctl start array0 x: --dev ram --capacity 10M

 --capacityオプションの「10M」のメガを意味する M は大文字で指定してください。
md4rctlはアルファベットの大文字と小文字は同じものとして区別しませんが、
サイズ指定のK(キロ)、M(メガ)、G(キガ)は大文字と小文字で意味が異なります。

 「Continue (Y/N) ?」と尋ねてくるので、[Y]キーを押してください。
 これでRAMディスクは作成されましたが、フォーマットされていないので、このままではファイルの読み書きはできません。
 OSや環境によってはマイコンピュータやエクスプローラからフォーマットできないことがあります。その場合、コマンドプロンプトからWindows標準のFormatコマンドを使ってフォーマットしてください。
 Formatコマンドを使う場合は、たとえば次のようにします。
 NTFSを使いたい場合は「/fs:fat」のところを「/fs:ntfs」に変更してください。

ex.1.2/2-2


format x: /fs:fat

 Xドライブのアレイを削除する場合は、次のようにします。

ex.1.3/2-2


md4rctl stop x:

 RAMディスクはアレイを削除すると、ディスク内容は消えてしまい後から読むことはできません。

●イメージファイルを使った仮想ドライブを作成する

 MD4Ramではハードディスクなど任意のドライブ上にあるデータファイルを、ディスクドライブとして使うことができます。
 新しいイメージファイルからXドライブにアレイを作成したい場合には次のようにします。
 イメージファイルのパスはC:\disk.img、容量は100Mバイトとします。

ex.1.4/2-2


md4rctl start array0 x: --createfile --dev c:\disk.img --capacity 100M

 新しく作成したイメージファイルはRAMディスクと同じで、フォーマットされていません。
 formatコマンドを使ってNTFSでフォーマットするには次のようにします。

ex.1.5/2-2


format x: /fs:ntfs

 Xドライブのアレイを削除する場合は、次のようにします。

ex.1.6/2-2


md4rctl stop x:

 RAMディスクと異なり、アレイを削除してもイメージファイル(この例ではC:\disk.img)はそのまま残っていますので、再度アレイを作成すると以前の状態のまま使うことができます。
 もう一度、アレイを作成したいときは、次のようにします。

ex.1.7/2-2


md4rctl start array0 x: --dev c:\disk.img

 既存のイメージファイルからアレイを作成する場合は、--createfileオプションや--capacityオプションは必要ありません。
 また、以前にフォーマットしたアレイであれば、再度フォーマットを行なう必要はありません。

 これまで説明したようにMD4Ramの操作の基本的な手順は、次のようになります。

  1. md4rctl startでアレイを作成
  2. formatコマンドやマイコンピュータ/エクスプローラからFATやNTFSでフォーマット
  3. 不要になったアレイはmd4rctl stopで削除

■ パート II:複数のデバイスを組み合わせたアレイディスクを作成する

●RAMディスクとイメージファイルでミラーリング

 MD4Ramは種類の異なるデバイスを組み合わせてアレイが作成できます。
 ここではRAMディスクとイメージファイルでミラーリングする方法を紹介します。
 通常、RAMディスクはアレイを削除したりWindowsを終了すると内容は消えてしまいますが、ハードディスク上のイメージファイルとミラーリングすることで、内容を保持することが可能となります。
 書き込みはRAMディスクとイメージファイルの両方に書き込みするので遅くなりますが、読み込みについてはRAMディスクを優先的に使うことで高速化できます。
 作成するアレイはXドライブ、容量10Mバイト、イメージファイルはC:\ramdisk.imgとして作成するものとします。

ex.2.1/2-2


md4rctl start array0 x: --array mirror --dev ram --capacity 10M --primary --dev c:\ramdisk.img --createfile --capacity 10M

実際には1行で入力してください。

 少しパラメータが長いですが、イメージファイルc:\ramdisk.imgが既に作成済みなら、次のようにできます。

ex.2.2/2-2


md4rctl start array0 x: --array mirror --dev ram --capacity 10M --primary --dev c:\ramdisk.img

実際には1行で入力してください。

 --primaryオプションは、優先的に読み込みを行なうデバイスを指定するものです。

 後は、パート Iでの説明と同じようにXドライブをFAT/NTFSでフォーマットしてから利用してください。

 誤ってアレイを削除したりPCの電源を切ってしまったときに、イメージファイルC:\ramdisk.imgからデータを取り出したいときは次のようにします。

ex.2.3/2-2


md4rctl start array1 y: --dev c:\ramdisk.img

 パート Iでの説明とまったく同じですが、ramdisk.imgをYドライブに割り当てアレイを作成します。これでYドライブからデータが読み取れます。

 補足ですが、RAMディスクはなアレイ作成後は必ず初期化されているので、再びramdisk.imgとミラーリングしてもフォーマットしてからでないと利用できません。つまりアレイを構成するデバイスにRAMディスクを加えるとフォーマットしてからでないと利用できないことになります。
 これでは不便ですが、再びRAMディスクにデータを戻す方法もあります。
 一番、安全で確実なのは、もうひとつアレイを作成してファイルとしてコピーする方法です。

 たとえば、ex.2-3/2.2 はデータ取り出し用にYドライブのアレイを作成しましたが、もう一度ex.2.1/2-2のようにXドライブを作成してYドライブからXドライブにファイルをすべてコピーすればいいわけです。
 ただし、同じイメージファイルc:\ramdisk.img を複数のアレイから使うことは危険なので、Xドライブには別個のイメージファイルramdisk2.imgを使います。
 たとえば、次のようにXドライブのアレイを作成します。
 Xドライブはarray0、Yドライブはarray1を指定している点に注意してください。

ex.2.4/2-2


md4rctl start array0 x: --array mirror --dev ram --capacity 10M --primary --dev c:\ramdisk2.img --createfile --capacity 10M

実際には1行で入力してください。

 これでXドライブが作成できるのでフォーマットした後に、先ほどのYドライブからXドライブにファイルをコピーしてください。

 md4rctlのWriteコマンドを使って、ダイレクトにイメージファイルの内容をアレイに書き戻す方法もあります。この方法ではYドライブのアレイは作成する必要はありません。
 ex.2.4/2-2でXドライブを作成した後に次のようにします(フォーマットの必要はありません)。

ex.2.5/2-2


md4rctl write x: --readfile c:\ramdisk.img

●複数のイメージファイルを連結したディスクアレイを作成する

 MD4RamではLINEAR/STRIPEモードを使うことで、複数デバイスをまとめて容量の大きい1つのドライブとして使うことができます。
 ファイルシステムにFAT32を使っている場合、ファイルサイズは4Gバイトまでという制限がありますが、MD4Ramでは2Gバイトのイメージファイルを4つまとめて、8Gバイトのアレイ ディスクを作成できます。また、アレイ ディスクをNTFSでフォーマットすることで、4Gバイトを超えるファイルも作成できます。
 最初からNTFSにしておけばそんな面倒なことをする必要はないのですが、これは応用例の紹介ですから気にしないように。

 基本的には、パート Iでのアレイの作成方法と同じです。
 2Gバイトのファイルを4つ用意してアレイを作成する場合、次のようにします。

ex.2.6/2-2


md4rctl start array0 x: --array linear --createfile --dev c:\part1.img --capacity 2G --dev c:\part2.img --capacity 2G --dev c:\part3.img --capacity 2G --dev c:\part4.img --capacity 2G

実際には1行で入力してください。

 あとは、お決まりのフォーマットです。
 パラメータが多くて大変ですが、次回からはイメージファイル(今回の例ではpart1.img 〜 part4.img)は作成済みなので、次のように指定できます。

ex.2.7/2-2


md4rctl start array0 x: --array linear --dev c:\part1.img --dev c:\part2.img --dev c:\part3.img --dev c:\part4.img

実際には1行で入力してください。


■ パート 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-3 あると便利なソフトウェア」を参照してください。

●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-2


md4rctl start array0 x: --array stripe --dev i: --dev j:

 初めて使うときには、次のようなメッセージが表示されるはずです。


[W: Write signature-block [I: Ignore error/warning [A: Abort : Push key ?

 これは署名ブロックを書き込むかどうかの確認です。[Y]キーを押して、署名 ブロックを書き込むように指定します。

 実のところ操作はこれだけです。後はお決まりのパターンでフォーマットしてから 使ってください。
 ただし、DVD-RAMに対するフォーマットはRAMディスクやハードディスク上の イメージファイルと比較すると、かなり遅くて時間がかかるので、クイック フォーマットを使うことをお薦めします。
 formatコマンドでクイックフォーマットを行なう場合には/Qオプションを指定 して次のようにします。

ex.3.2/2-2


format x: /fs:ntfs /q:

 メディアを取り出したり交換したいときはアレイを削除する必要がありますが、これも今までと同じで次のようにしてください。

ex.3.3/2-2


md4rctl stop x:

■ストライプサイズについて
 ストライプサイズは特に指定のない場合は64Kバイトとします。
 ストライプサイズを指定・変更したい場合は、--chunkSizeオプションを使ってください。
  例:md4rctl start0 x: --array stripe --chunkSize 32K ・・・・
※ サイズ指定の単位(K)は大文字で指定してください。
 ちなみに、ストライプサイズは小さいとシーケンシャルアクセス性能が向上し、ランダムアクセス性能は低下します。
 逆にストライプサイズが大きいとランダムアクセス性能が向上し、シーケンシャルアクセス性能は低下します。
 ただし、キャッシュの影響とか、小さすぎてもシーケンシャルアクセスが遅くなるとか、原則どおりにならないこともあります。
 ハードディスクでの例ですが、理由や仕組みは以下のWebページに書いています。
http://www.runser.jp/doc/sata-raid-stripe-1.html
 ストライピングでは一度削除したアレイをもう一度使う場合、デバイスの順番を 一致させる必要があります。
 イメージファイルでアレイを作成する場合には、ファイル名に番号を付けるなど して順番をつけることができますが、DVD-RAMのようなリムーバブルディスクでは ラベルやタイトルを付けて管理をやっておかないと、アレイを構築したメディアが わからなくなります。
 このときに役に立つのが署名ブロックです。
 メディアにラベルやタイトルを付けてしっかり管理する必要があるのは変わり ませんが、セットしたメディアを間違えたときには署名が一致しないといった警告 が表示されます。
 署名ブロックの内容がすべて一致した場合には、自動的にアレイを再構成して くれます。今回の例であれば、IドライブとJドライブのメディアを反対にセット しても、自動的に順番が合うように再構成されます。

■署名ブロックが一致しない場合
 署名ブロックが一致しなかったり、一度署名ブロックを書き込んだデバイスを別のアレイとして使おうとすると警告が表示され、次のような動作を選択できます。

[W: Write signature-block [I: Ignore error/warning [A: Abort : Push key ?

[I: Ignore error/warning [A: Abort : Push key ?

 署名ブロックが更新・書き込みできるデバイスが存在する場合には、[W]キーを押すと新しい署名ブロック書き込みます。
 [I]キーを押すとエラーや警告は無視して動作を続行します。
 [A]キーを押すと、中断してプログラムを終了します。

●DVD-RAMドライブでミラーリング

 DVD-RAMドライブ2台でミラーリングするのは簡単です。ex.3.1/2-2 で ストライピングを指定しましたが、ここの--array stripe を --array mirror に 変更するだけです。
 DVD-RAMでミラーリングしてもあまり意味はないと思いますが、同じ内容の複製を 作りたい場合には1回のファイルコピーで済みます。

 MD4Ramでのミラーリングは、読み書きの速いハードディスク上のイメージファイル を利用したほうがメリットがあります。この方法はノートパソコン等で1台のDVD-RAM ドライブを活用するのに役立ちます。書き込みは速くなることはありませんが、 読み込みはハードディスクを使うので高速です(ただし、この手の 高速化が目的なら、パートIVで紹介するディスクキャッシュを使ったほうがいいで しょう)

 IドライブのDVD-RAM 1台と、イメージファイルc:\dvdram.imgでミラーリングする 場合は次のようにします。

ex.3.4/2-2


md4rctl start array0 x: --createfile --array mirror --dev i: --dev c:\dvdram.img --primary --blockSize 2048 --blockNumber 2236704

■イメージファイルのサイズについて
 標準設定ではDVD-RAMには自動的に署名ブロックを作成しますが、イメージファイルには署名ブロックは作成されません。このため、1ブロック(セクタ)分だけイメージファイルは小さくできます(この例では、--blockNumber 2236703 とできる)。
 DVD-RAMとイメージファイル内容を完全一致させたい場合には、DVD-RAMの署名ブロックを作成しないように指定するか、逆にイメージファイルにも署名ブロックを作成する必要があります。もし行なうなら後者のイメージファイルにも署名ブロックを作成する方法をお勧めします。その場合、イメージファイルのデバイス指定に「--dev c:\dvdram.img --signBlock 0 ・・・」と--signBlockオプションを追加します。署名ブロック付のイメージファイルを使用するむ場合、--signBlockオプションは常に必要です。
 --primaryオプションによって、読み込みはイメージファイルを優先的に使います。
 4.7GタイプDVD-RAMの容量はセクタサイズ2048バイト、総セタク数2236704個ですので(2048×2236704=4,580,769,792バイト)、これを--blockSizeと--blockNumberオプションで指定して、DVD-RAMとぴったり同じサイズのイメージファイルを作成します。

 既存のイメージファイルを利用する場合には次のように指定できます。、--createfileオプションや--blockNumberは省略できますが、--blockSize 2048の指定は常に必要です。

ex.3.5/2-2


md4rctl start array0 x: --array mirror --dev i: --dev c:\dvdram.img --primary --blockSize 2048

■ミラーリングの注意点
 ミラーリングの問題は、内容の一致しないデバイス同士でアレイを構成した場合です。
 MD4Ramではバックグラウンドで同期するような機能は備わっていませんし、内容の検証は特に行なっていないので注意が必要です。
 今回のDVD-RAMとイメージファイルでのミラーリンクでの例だと、最初はミラーリングしていたDVD-RAMを、後でミラーリングしないで単独で使用したとします。そういう使用方法は可能でそれ自体は問題ありませんが、内容に変更を加えた後で、再びイメージファイルとミラーリングするのは危険です。
 優先読み込みデバイスを指定すれば、どちらか一方しか読み込みしないので一見問題なく動きますが、内容が同期していないのでミラーリングとしては正常には機能していません。
 初めて使うときはフォーマットするのを忘れないでください。

 厳密にはミラーリングしたアレイを作成した直後に全領域についてデータ内容を同期させる必要がありますが、一度もデータを書いたことのない領域については読み取りデータは不定という扱いで、とりあえずは論理フォーマットだけで動きます。


■ パート 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-2の方法で、DVD-RAM2台でストライビングしたアレイをXドライブとして作成します。FAT32では4Gバイトを超えるファイルは格納できないので、フォーマットは必ずNTFSにしてください。
 dvdrom.isoをXドライブにコピーします。
 Xドライブにコピーしたdvdrom.isoをCD/DVDアレイ機能を使ってQドライブとして使うには次のようにします。

ex.4.1/2-2


md4rctl start array0 q: --cd --dev x:\dvdrom.iso

 --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-2


md4rctl start array0 x: --array stripe --dev i: --dev j:

 ここではFATやNTFSでフォーマットを行なう必要はありません。
 このディスクアレイに、md4rctlのWriteコマンドを使ってISOイメージファイルを直接書き込みます。

ex.4.3/2-2


md4rctl write x: --readfile c:\dvdrom.iso

 書き込みが終わったら「md4rctl stop x:」を実行してアレイをいったん削除してから、今度はQドライブにCD/DVDアレイとして作成します(実はディスク アレイ タイプのXドライブのままでWindowsは認識してしまうようですが、安全のためにCD/DVDアレイとして作成し直して下さい)
 ex.4.2/2-2に--cdオプションを追加してドイラブレターを変更しただけです。

ex.4.4/2-2


md4rctl start array0 q: --cd --array stripe --dev i: --dev j:

 最初の方法だと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-2


md4rctl start array0 x: --createfile --array stripe --dev c:\dvd1.img --blockSize 2048 --blockNumber 2016124 --dev c:\dvd2.img --blockSize 2048 --blockNumber 2016124

 Xドライブのアレイを作成したら(フォーマットの必要はありません)、DVD-ROM用ISOイメージdvdrom.isoをmd4rctlのWriteコマンドを使って書き込みます。

ex.4.6/2-2


md4rctl write x: --readfile c:\dvdrom.iso

 この操作でdvdrom.isoの内容が、dvd1.imgとdvd2.imgの2つのイメージファイルに分割して保存されます。
 書き込みが終わったら、「md4rctl stop x:」でいったんアレイを削除します。
 念のためCD/DVDアレイをQドライブとして作成して内容を確認します。

ex.4.7/2-2


md4rctl start array0 q: --cd --array stripe --dev c:\dvd1.img --dev c:\dvd2.img

 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-2


md4rctl start array0 q: --cd --array stripe --dev i:\dvd1.img --dev j:\dvd2.img

 実際にやってみると、DVD-ROMドライブのストライピングはあまり速くないというか、返って遅くなることもあります。同じ設定でDVD-RAMは高速化できるのですが、アクセスタイムの大きいDVD-ROMドライブではストライピングするとデータ転送が細切れになって、ドライブ間の同期も必要なこともあって遅くなることがあります。思ったほど速度が向上しない場合は、ストライプサイズをもっと大きくして見てください(標準設定のストライプサイズ64Kバイトです)
 ストライピングではなくLINEARモード(JBOD)を使うこともできるので、DVD-ROMドライブで分割イメージファイルを使うにはLINEARモードを使ったほうがいいかもしれません。
 LINEARモードでは、ファイルサイズの異なるイメージファイルに分割できるのでストライピングより融通が利きますし、同一ハードディスク上に分割イメージファイルを作成する作業もストライピングよりも速いはずです。

 分割したイメージファイルを1つのイメージファイルに結合することも可能です。ex.4.8/2.2でのQドライブから結合したイメージファイルc:\redvd.isoを作成する場合、md4rctlのReadコマンドを使います。

ex.4.9/2-2


md4rctl read q: --writefile c:\redvd.iso

 ストライプサイズの影響で元のISOイメージファイルより少し大きくなることがありますが、内容は問題ありません。

 標準ではイメージファイルは署名ブロックを作成しないので、デバイスの順番やアレイモード、ストライプサイズ等がわかるようなファイル名をつけることをお勧めします。今回の例ならば、dvd1of2-S64K.img やdvd2of2-S64K.imgといった具合です。

 イメージファイルにも署名ブロックを作成する方法もありますが、署名ブロックの構造は後々バージョンアップした際に互換性がなくなる可能性があります。標準設定のストライププサイズ64Kバイトも最適かどうかわからないので、後で変更する可能性もあります。
 署名ブロックの互換性がなくなっても、DVD-RAMのように書き換えできるメディアでは署名ブロックを更新・書き換えすることで対応できるようにする予定です。しかし、CD/DVDに焼いてしまったイメージファイルでは署名ブロックの更新ができないので、どうなるかわかりません。その場合でもまったく利用できないという自体にはならないと思いますが、警告が出るとかパラメータを手動で入力する必要があるとか、署名ブロックがあっても意味がないとか、そんな感じになると思います。


■ パート V:暗号化したアレイを使う

 MD4Ramではデータ内容を暗号化したアレイを作成できます。
 たとえば、イメージファイルからアレイを作成した場合、イメージファイルの 中身を覗くことでデータ内容がわかってしまいます。文書などのテキストは そのままの形で読めてしまいます。
 MD4Ramの暗号化機能はアレイやデバイスにデータを暗号化した上で保存して、 中身を覗き見ても復元できないようにします。
 暗号化したアレイは通常のアレイとまったく同じように読み書きできますが、 アレイ作成時にパスワードかキーファイルが必要となります。パスワードや キーファイルが一致しないと、暗号化したアレイはデバイスは正しく使用 できません。

●パスワードで保護したディスクアレイを作成する

 暗号化といってもいくつかオプションを追加するだけで、これまでの使い方と まったく同じです。
 パスワードXYZ9955Wで保護した10Mバイトのイメージファイルsecret.imgを作成して、 暗号化するには次のようにします。

ex.5.1/2-2


md4rctl start array0 x: --crypto --password XYZ9955W --createfile --dev c:\secret.img --capacity 10M

 パスワードによる暗号化を行なう場合には--cryptoと--passwordオプションを使います。
 パスワードに利用できる文字や、文字の長さには特に制限は設けていませんが、 常識的な範囲内で利用してください。

 新しくイメージファイルを作成した場合はフォーマットしてから使ってください。
 いったん作成したイメージファイルを使う場合には--createfileと--capacityオプションは 必要ないので、以後は次のように作成できます。

ex.5.2/2-2


md4rctl start array0 x: --crypto --password XYZ9955W --dev c:\secret.img

 --cryptoオプションを付けずに暗号化を指定しなかったり、パスワードを間違 えてもエラーも警告も出ません。何事もなく動作します。ただし、誤ったデータが 復元されるために、暗号化したデータは正しく読み取ることはできません。
 ex.5.1/2-2で作成したFATやNTFSでフォーマットしてアレイを、ex.5.2/2-2で 暗号化を指定しなかったりパスワードを間違えて再びアレイを作成すると、Windowsは フォーマットされていない不明なディスクとして扱います。
 その場合は、すぐにアレイを削除して、必要なら正しいパスワードを指定して アレイを再作成してください。
 パスワードが一致しない状態でアレイを作成し、データを書き込みしてしまうと、 以後正しいパスワードを指定しても完全なデータの復元は不可能になります。

●キーファイルで保護したディスクアレイを作成する

 パスワードの代わりにキーファイルを指定することで、暗号化することも 可能です。
 新しくキーファイルmysecret.keyを作成し、10Mバイトのイメージファイル secret2.imgを作成して、暗号化するには次のようにします。

ex.5.3/2-2


md4rctl start array0 x: --crypto --keyfile c:\mysecret.key --createfile --dev c:\secret2.img --capacity 10M

 --passwordオプションの代わりに、--keyfileオプションでキーファイルを指定 します。
 --createfileオプションを指定しておくと、キーファイルが存在しない場合は 自動的に作成します。キーファイルの自動作成は日時などからランダムに作成 するので、毎回違った内容になります。

 新しくイメージファイルを作成した場合はフォーマットしてから使ってください。
 いったん作成したイメージファイルを使う場合には--createfileと--capacityオプションは 必要ないので、以後は次のように作成できます。

ex.5.4/2-2


md4rctl start array0 x: --crypto --keyfile c:\mysecret.key --dev c:\secret2.img

 キーファイルやキーファイルの内容が一致しなくてもエラーも警告も表示 されません。
 その場合の注意点はパスワードを使った場合と同じですので、それちらを見て ください。

 キーファイルを削除したり、内容を書き換えてしまうと復元は不可能になります。 また、暗号化していてもキーファイルが入手できれば誰でも復元できてしまいます。
 重要なキーファイルならバックアップを取っておいたほうがいいでしょうが、 管理には十分注意してください。


■ パート 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-2 に紹介した100Mバイトのイメージファイルからの アレイに10Mバイトのメモリ(RAM)によるキャッシュを割り当てるとしたら次のようにします。

ex.6.1/2-2


md4rctl start array0 x: --createfile --dev c:\disk.img --capacity 100M --cache ram --capacity 10M

 「--cache ram --capacity 10M」が加した部分です。これでディスクキャッシュが 機能します。
 --createfileオプションはこれまでの使用例と同じようにイメージファイルが 作成済みの場合には不要です。

 キャッシュの容量は、アレイやメモリ搭載量に応じて自由に決めてください。
 ただし、搭載メモリの大半を使ってしまうような指定はしないでください。

 実際にはたった100MバイトのドライブにMD4Ramのディスクキャッシュを使っても実用的な 意味はありません。CD/DVDのようなランダムアクセスの遅いドライブであればアレイ容量の 数割程度にあたるメモリ(RAM)をキャッシュに指定しておくと、それなりの効果はあるかと 思います。

●イメージファイルをまるごとDVD-RAMのキャッシュに

 CD/DVDから構成されたアレイでは、ハードディスクに格納した同容量の イメージファイルをキャッシュにすることで高速化できます。
 ミラーリングで読み取り優先デバイスを指定するのと同じ効果ですが、 ミラーリングはデータ内容がまったく同じデバイスを常に用意しておく必要があります。
 ディスクキャッシュであれば、利用したいときにいつでも利用できます。

 ここでは、4.7GバイトDVD-RAMメディアを使用する際に、ハードディスク上の イメージファイルをディスクキャッシュに割り当てる方法を紹介します。
 パート III ex.3.4/2-2でDVD-RAMドライブでミラーリングする方法を紹介しましたが、 これとほとんど同じです。
 4.7GバイトDVD-RAMメディアの容量は2048バイト×223607セクタですので、 このパラメータをキャッシュに指定します。
 DVD-RAMはIドライブ、キャッシュとして割り当てるイメージファイルはc:\dvdram.csh としてアレイをXドライブとして作成することにします。

ex.6.2/2-2


md4rctl start array0 x: --createfile --dev i: --cache c:\dvdram.csh --cacheMode table --blockNumber 2236704

 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-2


md4rctl start array0 x: --cd --dev i: --signBlock none --blockAddr 0 --cache ram --capacity 10M

 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-2


md4rctl start array0 x: --createfile --dev i: --signBlock none --blockAddr 0 --cache c:\cdrom.csh --cacheMode table --capacity 700M

 イメージファイルの容量は--capacity 700Mとして700Mバイトとして指定していますが、 CD/DVD-ROMとぴったり同じか、大きなサイズで指定してください。正確なサイズがわかる 場合には--blockNumberオプションで指定するといいでしょう。


  2-3 あると便利なソフトウェア

 MD4Ramを使う際、以下のプログラム/ソフトウェアをそろえておくと便利かと思います。

 いずれも以下のWebページからダウンロードして入手できます。
http://www.runser.jp/softlib.html

 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] [--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(マスターブートレコード)を壊します。

 RAMディスクの最大容量は2Gバイト(2^31バイト)です。ただし、搭載メモリを圧迫するようなサイズは指定しないでください。

 アレイはディスクタイプ、CD/DVDタイプ(--cdオプション指定時)ぞれぞれ16個まで作成できますが、標準設定ではディスクタイプ2個、CD/DVDタイプ1個に制限しています。使用できるアレイ数を変更したい場合、レジストリを編集して再起動する必要があります。

 デバイスは1つのアレイに対して16個まで指定できます。
 デバイスし重複して使用・指定しないように注意してください(現バージョンでは重複チェックは行っていません)。

■ アレイの削除・停止

MD4RCtl stop <ドライブレター>

【解説】

 ドライブレターで指定したアレイを削除・停止します。

■ アレイの情報の表示

MD4RCtl show [<ドライブレター>]

【解説】

 使用中のアレイの情報を表示します。

■ アレイ内容を読み込み

MD4RCtl read <ドライブレター> --wrietfile <ファイル名>

【解説】

 ドライブレターで指定したアレイの内容を読み取って、イメージファイルとして保存します。

■ アレイ内容を書き込み

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オプションを使うことで、署名ブロック を使うことも可能です。


  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 448です。448ビット(56バイト)のキーを使い、 --keyfileオプションでキーの保存されたキーファイルを指定するか、--password オプションでキーを生成します。
 --keyfileオプションで指定するキーファイルは先頭から56バイトの内容をキー として利用します。指定したキーファイルが存在しない場合--createfileオプション を指定しておくとキーを自動生成します。
 キーの自動生成は日時と乱数を組み合わせるので、毎回違った内容のキーを生成 します。
 キーファイルの内容がもれたら暗号は解除されてしまうので、管理には十分注意 してください。また、キーファイルをなくしてしまったら復元は無理です。

 --passwordオプションを指定する方法では、パスワードとして指定された文字列 から448ビットのキーを生成します。同じパスワードを指定すると、毎回同じキーを 生成します。キーからパスワードには戻せません(キーがばれたら 暗号は解けてしまうからパスワードに戻す意味はありませんが)。--password オプションで生成されるこのキーはどこにも保存されません。

 MD4Ramの暗号化はキーファイルやパスワードが一致しなくてもエラーにはなり ません。ただし、キーが一致しない状態では正しい内容は読み取れません。 Windowsは正しいファイルシステムとして認識できないので、ファイルの読み書きも できません。
 キーが一致しない状態でディスクに書き込みを行なうと、以後正しいキーを 使っても完全な復元は不可能になるので注意してください。

 いったん暗号化したアレイやデバイスを、キーなしで開くことも可能です。
 もちろんこの状態では暗号化する以前の内容は読み取りませんが、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 変更履歴