未解決
1 Rookie
•
146 メッセージ
0
1040
Unityのレプリケーション先のスナップショットについて
2台のUnity間でNASサーバおよびファイルシステムのレプリケーションを実施しようとしており、
この時に、レプリケーション先のファイルシステムにはスナップショット(手動またはスケジュール)を
作成しようと考えております。
この構成において気になる点があります。
「Dell EMC Unity: Replication Technologies」のドキュメントを見ると、
「3.2.4 Asynchronous Replication Internal Snapshots」にレプリケーションの動作が記載されておりました(図あり)。
このレプリケーションの動作を見ると、ソース側から差分の同期を実施する時は、
ソース側のスナップショットの差分データを相手先ファイルシステムに直接書き込んでいるように見えます。
この差分データが書き込まれている最中に相手先ファイルシステムのスナップショットを取得した場合、
差分更新中の状態でスナップショットが取得されるのでしょうか?
そうすると、相手先ファイルシステムのスナップショットからリストアを実施しても
データが正常にアクセスできないのではないかと考えております。
ご確認を宜しくお願い致します。
ayas
Moderator
Moderator
•
6.5K メッセージ
0
2021年5月12日 18:00
okataさん
→差分更新中のスナップショットが取得されたとしてもファイルとして完全でないものについてはファイルシステム自体がファイルとしてみなさない、ので
アクセスできません。しかしそれによってエラーとなることもない、
スナップショットとして取られファイルとしてきちんと転送が終わっているものに対してはアクセスが可能となります。
tokata
1 Rookie
1 Rookie
•
146 メッセージ
0
2021年5月12日 22:00
ayasさん
ご確認ありがとうございます。
やはり、差分のデータは相手先ファイルシステムに直接書き込んでいるのですね。
更新中の状態で取得したスナップショットは、どのファイルも完全にアクセスできなくなるのでしょうか?
それとも一部だけがアクセスできないのでしょうか?
一部だけがアクセスできないのであれば、更新前と更新後の状態が混在していると思いますが・・・。
また、上記の差分更新中にスナップショットが取得されないようにするための対処策などがありますでしょうか?
例えば、レプリケーションの差分更新が完了した(もしくは実施していない)ことをコマンドで確認し、
その結果を元に手動(コマンド)でスナップショットを取得するようにスクリプトを作成するなど。
ご確認を宜しくお願い致します。
ayas
Moderator
Moderator
•
6.5K メッセージ
0
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について
tokata
1 Rookie
1 Rookie
•
146 メッセージ
0
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」の組み合わせで確認できると思います。
宜しくお願い致します。
ayas
Moderator
Moderator
•
6.5K メッセージ
0
2021年5月18日 01:00
tokataさん
お知らせをありがとうございます。
Windows とSSHとの違いかもしれないですね・・・・
なおWindows からであればおっしゃる通りの方法で確認できると思います。