多くのいじくりと実験の結果、かなり大きなトレードオフがありましたが、解決策を見つけました。
まず、私が除外しなければならなかったオプション:
ミラーリングされたプールを備えた2番目のオフサイトZFSサーバーを用意することは、コストのために選択肢になりませんでした。それがオプションであった場合、これは断然最良のアプローチであり、スナップショットをリモートプールに送信するためにZFS送信/受信を利用します。
2つ目のオンサイトZFSミラープールがあり、ディスクを削除して持ち帰ることができます。これは最初のオプションよりも実行可能ですが、2番目のプールには常に2つのディスクをオンサイトにする(または1つのオンサイトディスクで2つのデータコピーを使用する)必要があります。現在、私には4つのディスクがあり、サーバーの5分の1のスペースはありません。これは公平なアプローチですが、それでも理想的ではありません。
ZFSアタッチおよびデタッチを使用して、バックアップディスクをミラーリングされたプールの内外にローテーションします。これはうまく機能しますが、ディスクが追加されるたびに完全な復元を実行する必要があります。これには受け入れられないほど長い時間がかかるため、これに頼ることはできませんでした。
私のソリューションはattach
andの使用に似てdetach
いますがonline
、andを使用していoffline
ます。これには、完全な再同期よりも差分再同期を実行するという利点がありますが、プールは常にDEGRADED
状態を報告するという欠点があります(プールには常に2つのディスクがあり、回転オフサイトディスクoffline
は、リモートストレージにあり、再同期してオンラインになるとマークされます。オンサイトの場合)。
だから、簡単な要約と私のセットアップの概要:
1つのZFSサーバーと4つの同一のディスクがあります。ZFSは、ミラーリングされたプールを使用するように設定されています。4つのディスクのうち2つは、このプールの永続的なメンバーです。他の2つのディスクは回転します。1つは常にオフサイトストレージにあり、もう1つはすぐに使えるバックアップとして機能するプールの一部です。
バックアップをローテーションするときがきたとき:
zfs scrub
バックアップディスクにエラーがないことを確認するために完了するのを待ちます
I zfs offline
リモート取られるディスク。オフラインになった後、hdparm -Y /dev/id
スピンダウンしました。1分後、ディスクスレッドを部分的に取り外し(電力の損失を確実にするのに十分なほど)、ドライブを完全に引き出す前にさらに1分待って、回転が停止したことを確認します。ディスクは固定バッグに入れられ、保護ケースに入れられてオフサイトに送られます。
他のオフサイトディスクを持ち込みます。ホットスワップトレイにインストールされ、起動します。私zfs online
はディスクをプールに復元し、部分的な再同期を開始してそれを並行させるために使用しています。
このシステムは、常に2つのONLINE
ミラーディスクと1つのOFFLINE
リモートディスク(スクラブ済み)があることを保証します。4番目のディスクは、回復中またはオンラインのいずれかです。これには、実行中のドライブに障害が発生した場合に、プールが2つのオンラインディスクの一貫性を保つという利点があります。
過去数週間はうまくいきましたが、私はこれをハックなアプローチだと考えています。大きな問題が発生した場合はフォローアップします。
更新:これを2か月間実行した後、実際の使用では、デタッチ/アタッチとオフライン/オンラインの両方で再同期に同じ時間がかかっていることがわかりました。私のテストでは、スクラブを実行していたとは思いません。私の直感は、ドライブがスクラブのためにオフラインの場合、完全な回復が必要であることです。