EMC RepliStor Tips ミラーリングと同期の違い
RepliStorでは、ミラーリングと同期という操作を使い分けて、データのレプリケーションを行っています。ですが同じような意味合いを持っているため、混同して使い方を間違えているユーザーが多いように思いました。
また、同期を毎日スケジュールで実行していたりと、誤ったオペレーションを行っているところもありました。
そこで今回のTipsでは、ミラーリング(リアルタイムミラーリング)と同期では何が違うのか仕組みを解説していきます。
ミラーリング
ミラーリングとは、下記フェーズによって、ソースとターゲット間でリアルタイムにデータを複製させることである。
ミラーリング:ソースシステムのデータに加えられた変更を収集する。
転送:データに加えられた変更をソースシステムからターゲットシステムに送信する。
更新:ターゲットシステムのファイルに変更を適用する。
図1:ミラーのデータフロー
以下のステップは、ミラーリングのデータフロープロセスを表し、ステップ番号は、図1に示される数字タグを表す。
① アプリケーションはディスク操作を実行すると、この操作は、OSカーネルで扱われてInput/outputマネージャ、全てのフィルタードライバーを通って最終的に物理ディスクに書込まれる。
上に向かう矢印は、それぞれのリターン要求を示す。
② リクエストがRepliStorドライバーまで戻るとき、下記条件でミラーするかを判断する。
・ファイルオペレーションはファイルを変更したか?
・ファイル・フォルダはスペシフィケーションに含まれているか?
・ファイル・フォルダはグローバル除外に指定されていないか?
・オペレーションは正しく行われたか?
③ 答えが全てYESであれば、オペレーションはカーネルキャッシュへキュー入れられる。
*カーネルキャッシュは、ソースからターゲットへ送るデータをキューに入れるために使用する一定量の共有メモリ
④ カーネルキャッシュは一定のサイズであるため、オーバーフローを起こすとファイルオペレーションはOC$nnnnn ファイルに記録される。
オーバーフローが解消されれば、OC$ファイルの書き込みが解除され、再びカーネルキャッシュが使用される。
⑤ カーネルがファイルオペレーションをキューに入れるとき、オペレーションを読み取るようRepliStorサービスに指示を行う。
⑥ カーネルキャッシュがフルの状態でOC$ファイルが書き出されれば、RepliStorサービスは先にOC$ファイルからファイルオペレーションを読み始めるようにする。
⑦ ファイルオペレーションは、ターゲットサーバーに送信される。
⑧ ターゲットサーバーのRepliStorサービスは、ファイルオペレーションを受け取る。
⑨ ファイルオペレーションは実行される。
⑩ 書込みが正常に終了したことをソースに送信する。これでファイルオペレーションの複製が完了したこととなる。
⑪ もしファイルオペレーションが書込みできない場合は、block.rdf ファイルが作成され、全てのファイルオペレーションが保存される。
*このファイルが作成される原因は、ディスクの空きが無いか、ファイルが使用中であるかである。
一旦ファイルがブロックされるならば、それ以降のファイルオペレーションはblock.rdf ファイルに保存される。
⑫ 定期的にRepliStorサービスはブロックファイルの再書込みを実行し、書込みが可能であれば、それ以降のファイルオペレーションの書込みを実行する。
.
同期
同期とは、ある時点でのソースとターゲットで同一のデータを存在させることである。
図2:同期のデータフロー
以下のステップは、同期のデータフロープロセスを表し、ステップ番号は、図2に示される数字タグを表す。
① 同期は、RepliStor のコンソール、コマンド、スケジュールでのみ実行することが可能。
② 同期が開始されるとまずスペシフィケーションで指定されたディレクトリの全てのファイル数をカウントさせ、RepliStorカーネルドライバーにそのファイルのフルパスを記録させる。
③ ファイルパスがグローバル除外に含まれていないかチェックして含まれていないのであればフルパスをカーネルキャッシュキューに入れる。
またカーネルキャッシュがフルになった場合はOC$ファイルに書き込む。
④ カーネルキャッシュにエントリーされると、RepliStorサービスは同期オプションに基づいて特定のファイルを同期させていく。
*同期の場合、エントリーはSYNC_COPYのみ。
⑤ ソースからターゲットへとデータは送信される。
⑥ ターゲットのファイルに適用される。
⑦ 書込みがブロックされるならば、データはblock.rdfファイルに保存される。
⑧ ブロックが解除されればblock.rdfのデータを適用する。
.
以上、データフローの違いについて解説しましたが、ミラーリングと同期の主な違いは、カーネルキャッシュに入れられる情報なのです。
ミラーリングの場合、ファイルオペレーションはあらゆるデータと共にカーネルキャッシュに入れられます。例えば、File Create, File Write, File Truncate, File Close, Attribute Changeなど。
同期の場合、SYNC_COPYコマンドだけがカーネルキャッシュに入れられます。
このSYNC_COPYコマンドとは実際のファイルデータを含んでおらず、ファイルのフルパス情報を含むだけです。
例えば1000個のファイルを同期させるとすると、カーネルキャッシュには1000のフルパス情報が入れられます。これは、1000個のファイルをカーネルキャッシュに入れるということではありません。
これらの仕組みについて詳しく知りたい方は、特許をご覧ください。

