web-dev-qa-db-ja.com

Linux上のZFSが貧弱な/悪いssh接続で再開を送信/受信する

LinuxでZFSを使用していて、リモート複製をセットアップしようとしています。しかし、私はssh接続に問題があり、sshを介したzfs send/receiveが再起動します。 ZoLに問題があることは知っていますが、いつ実装されるか、または新しい安定版リリースが来るかはわかりません。 mbufferについて聞きましたが、再起動できないようです。たぶん、zfs sendのようにそれを使用することが可能です| mbuffer |真である間; sshを実行...;完了しましたが、よくわかりません。

現在私はzfsをファイルに送信し、--append --partialを使用してrsyncを実行してリモートに復元します。しかし、それはスペースを消費し、手動の支援を必要とし、汚いソリューションです。すべてのスナップショットでプールのミラーを維持するために、sanoid/syncoidなどの自動化されたソリューションが必要です。たぶん同じことをするいくつかのbashスクリプトが、すべてのスナップショットをリモートに保持し、それらが正常にrsyncされたときにホスト上のファイルを削除します。

追伸重複する質問があることは知っていますが、解決策はありません。私の質問では、汚い解決策を使用していますが、それを交換または改善したいと思います

4
Ural

-s zfs receiveのオプション。転送が失敗した場合、受信側で再開可能なトークンを保存します。 netcat(nc)とSSHのどちらを使用しているかによって異なります。

recvマシン上(netcatのみ)

nc -l <port> | zfs receive -s -v tank/dataset

sendマシン:

通常はsendから始めます。

zfs send -v snapshot | nc <Host> <port>

zfs send -v snapshot | ssh ... zfs receive -s -v tank/dataset

転送が失敗した場合は、recvマシンで次のように入力します:

zfs get all tank/dataset

receive_resume_tokensendマシンに移動します:

zfs send -v -t <token> | nc <Host> <port>

zfs send -v -t <token> | ssh ... zfs receive -s -v tank/dataset

どうぞ :)

5
Phil M.