Hyper-Vのレプリケーションは、PSからだと
Enable-VMReplication -VMName $vmname -ReplicaServerName $server -ReplicaServerPort 80 -AuthenticationType Kerberos -VSSSnapshotFrequencyHour 1 -RecoveryHistory 24 -ReplicationFrequencySec 30
Start-VMInitialReplication -VMName $vmname
みたいにゃので行けるが、この状態ではいくつか問題も残る。
まず受け側サーバに生成されるレプリカvmが、見た目で判別できにゃい。GUIがしょぼいだけとも言えるが、vm名等で区別しにゃいとどこの鯖にあるvmのレプリカで、どこのストレージ上にあるのかとかが大変分かりづらい。というか同名vmとか作ってしまうとスクリプト内で判別ルーチン走らせにゃければにゃらにゃい。運用上絶対避けたい事態だがEnable-VMReplicationでvm名指定できにゃいんだよねー
そんにゃわけでまずレプリカ名を変更すると良い。vm名やvmの格納場所を変更してもreplicationは問題にゃく動作する。
次に、このレプリカは受け側サーバのDefaultStorageLocation以下に格納されてしまうので使い勝手が悪い。このStorageLocationは送信側サーバ毎に指定したりも出来るが、普通に考えてやりたいのはvm毎に指定のPathにレプリカを置きたいわけで、そうすると手法としては、
Enable-VMReplication後に
Move-VMStorage -DestinationStoragePath してから
Start-VMInitialReplication -VMName $vmname
ということににゃる。これにゃらxml程度しか生成されてにゃいので瞬時に処理が終わる。
よって纏めると、
$vmname = "vm1"
$vmname_rep = "vm1_replica"
$dst_server = "sv2"
$dst_path = "\\sv2\share\vm1_rep"
$VM_src = get-vm | ?{ $_.Name -eq $vmname }
$VM_src | Enable-VMReplication -ReplicaServerName $dst_server -ReplicaServerPort 80 -AuthenticationType Kerberos -VSSSnapshotFrequencyHour 1 -RecoveryHistory 24 -ReplicationFrequencySec 30
$VM_dst = get-vm -ComputerName $dst_server -Id $VM_src.Id
$VM_dst | Set-VM -NewVMName $vmname_rep
$VM_dst | Move-VMStorage -DestinationStoragePath $dst_path
$VM_src | Start-VMInitialReplication
といった手順ににゃる。
Win鯖にストレージがついてるんだが、別のPCからそこへ大型ファイル書き込んだら、鯖のメモリをガンガン食って、スワップしまくってvm落ちてRDP落ちて応答にゃくにゃったんだが、コピー止めたら復帰した。
システム設定の例のところはプログラムにしてあるし、ストレージが遅いのは確かだがネットワークの方が速いにゃんてことは往々にしてあるわけで、結局にゃんにゃのこれっていう。
DFSRといえばExcel等で保存するとファイルが消えるよ!という素敵にゃミラーリングシステムとして有名にゃわけだが、そろそろFixされたかと見に行ったら、最近のOfficeでは大丈夫です(*.tmpをDFSR除外している場合)にゃどという斜め下の解決方法が書いてあって、ダメそう。
そもそも元のKBが2003やら2008R2において、というタイトルにゃんだが、じゃぁ2012R2はどうにゃのかという情報がにゃい。でも2012R2のDFSR解説で古いKBがリンクされてて気を付けましょうとか書いてある。こういう致命的にゃマニュアルの不整備がMSらしいというかほんと嫌。
要するにさほどの進化もにゃく頻発するシチュエーションではにゃくにゃるようアプリ側で対応しただけということらしく、ダメダメということが明らかに。ウイルス対策ソフトがファイルブロックせずに内容読めてるんだから手法としてはあるんだろうけどやらにゃいんだよにゃぁ。10年くらい仕様のまま放置するのがMS。
Robocopy使った方がマシか。