新しい会話を開始

未解決

T

1 Rookie

 • 

146 メッセージ

1040

2021年5月11日 19:00

Unityのレプリケーション先のスナップショットについて

2台のUnity間でNASサーバおよびファイルシステムのレプリケーションを実施しようとしており、
この時に、レプリケーション先のファイルシステムにはスナップショット(手動またはスケジュール)を
作成しようと考えております。

この構成において気になる点があります。

「Dell EMC Unity: Replication Technologies」のドキュメントを見ると、
「3.2.4 Asynchronous Replication Internal Snapshots」にレプリケーションの動作が記載されておりました(図あり)。

このレプリケーションの動作を見ると、ソース側から差分の同期を実施する時は、
ソース側のスナップショットの差分データを相手先ファイルシステムに直接書き込んでいるように見えます。

この差分データが書き込まれている最中に相手先ファイルシステムのスナップショットを取得した場合、
差分更新中の状態でスナップショットが取得されるのでしょうか?

そうすると、相手先ファイルシステムのスナップショットからリストアを実施しても
データが正常にアクセスできないのではないかと考えております。

ご確認を宜しくお願い致します。

Moderator

 • 

6.5K メッセージ

2021年5月12日 18:00

okataさん

 

差分データが書き込まれている最中に相手先ファイルシステムのスナップショットを取得した場合、差分更新中の状態でスナップショットが取得されるのでしょうか?

差分更新中のスナップショットが取得されたとしてもファイルとして完全でないものについてはファイルシステム自体がファイルとしてみなさない、ので

アクセスできません。しかしそれによってエラーとなることもない、

スナップショットとして取られファイルとしてきちんと転送が終わっているものに対してはアクセスが可能となります。

1 Rookie

 • 

146 メッセージ

2021年5月12日 22:00

ayasさん


ご確認ありがとうございます。

やはり、差分のデータは相手先ファイルシステムに直接書き込んでいるのですね。

更新中の状態で取得したスナップショットは、どのファイルも完全にアクセスできなくなるのでしょうか?
それとも一部だけがアクセスできないのでしょうか?
一部だけがアクセスできないのであれば、更新前と更新後の状態が混在していると思いますが・・・。

また、上記の差分更新中にスナップショットが取得されないようにするための対処策などがありますでしょうか?
例えば、レプリケーションの差分更新が完了した(もしくは実施していない)ことをコマンドで確認し、
その結果を元に手動(コマンド)でスナップショットを取得するようにスクリプトを作成するなど。

ご確認を宜しくお願い致します。

 

Moderator

 • 

6.5K メッセージ

2021年5月13日 17:00

tokataさん
ご返信をありがとうございます。

 

更新中の状態で取得したスナップショットは、どのファイルも完全にアクセスできなくなるのでしょうか?
それとも一部だけがアクセスできないのでしょうか?
一部だけがアクセスできないのであれば、更新前と更新後の状態が混在していると思いますが・・・。


→ファイルレベルで完全に転送が終わっていないもの以外がアクセスできる(=一部だけがアクセスできない)ので更新前と更新後の状態が混在しているという認識で問題ありません。しかしUnity のSnapShotはDataそのものではなくRedirect on Writeという手法で取られており、それぞれのDataがどこにあるかというポインタ情報をSnapShotは持っています。したがってデータ更新中にSnapShotが取られたとしてもDataのポインタを含んでいる限り、元のDataはPool内にあるのでアクセスは可能です。
なお、Replicationでは更新前と更新後の処理の中で内部スナップショットが整合性が取れた形で取得されます。そのため追加で同じ情報を取得する必要性は低いと思います。

 

また、上記の差分更新中にスナップショットが取得されないようにするための対処策などがありますでしょうか?
例えば、レプリケーションの差分更新が完了した(もしくは実施していない)ことをコマンドで確認し、
その結果を元に手動(コマンド)でスナップショットを取得するようにスクリプトを作成するなど。

 

→先述したようにReplicationの処理中に自動で内部Snapshotが取得されているので追加で取る必要性はあまり高くないと思いますが、Replicationを開始すると、完了するまでプロンプトが戻ってこないという動きをするので、(後述参考スレッド参照)プロンプトが戻ってきたタイミングでターゲット側に対してスナップショットを取るようにしておけば、可能かと思います。

 

参考スレッド:UnityのManually-synchronize-replication-sessionsについて

1 Rookie

 • 

146 メッセージ

2021年5月17日 15:00

ayasさん

ご確認ありがとうございます。

検証機でレプリケーションの差分同期を手動(コマンド)で実施してみたのですが、直ぐにコマンドプロンプトに戻りました。

「/prot/rep/session show -detail」でレプリケーションのセッションを確認したところ、下記のように表示されていました。

Sync status = 77% Complete

また、上記が表示されている時の「Time of last sync」は、前回の差分同期の時刻が表示されていました。

このため、差分同期の完了を待たずにコマンドプロンプトに戻っていると思われます。

使用したUnityのバージョンは5.0.1で、コマンドはWindowsにツール(UEMCLI)をインストールして、Windowsのコマンドプロンプトから実行しています。
仕様が変わったのでしょうか?

なお、本来の目的である「差分同期が完了している状態の確認」は、上記の「Sync status」と「Time of last sync」の組み合わせで確認できると思います。

宜しくお願い致します。

 

Moderator

 • 

6.5K メッセージ

2021年5月18日 01:00

tokataさん

お知らせをありがとうございます。

Windows SSHとの違いかもしれないですね・・・・

 なおWindows からであればおっしゃる通りの方法で確認できると思います。

イベントは見つかりませんでした!

Top