btrfs:ボリュームを外部ファイルにイメージング


2

最近、btrfsルートパーティションを使用してシステムを構築しました。私の場合、にbtrfs比べて採用する最も説得力のある理由はext4、ほぼゼロの待機時間でのライブコピーオンライトスナップショットでした。に比べてext4、フルシステムバックアップでは、システムを停止し、ライブ配布からマウントし、partcloneリムーバブルメディアにイメージを構築する必要がありましたが、スナップショットの約束は、システムのライブ中にバックアップメディアにスナップショットをキャプチャできることです。

驚いたことに、外部メディア上の単一ファイルにスナップショット全体をキャプチャするツールは存在しません。そのため、システムがそのファイルから復元された場合、すべてのアプリケーションはクラッシュ前と同じファイルシステムのビューを持ちます。ただし、他のスナップショットまたはサブボリュームが欠落している場合を除きます)。

ドキュメントでは、rsyncなどのツールを使用してディレクトリツリーをミラーリングするか、btrfs-send/ btrfs-receiveを使用して別のシステムの増分変更をキャプチャすることを推奨しています。最初のケースでは、ファイルシステムをイメージングするのではなく、ファイルツリーをミラーリングするだけでファイルツリー内のすべてのメタデータを再作成することはほぼ不可能であり、復元が非常にスムーズになるという楽観的な見方はほとんどありません。許可、タイムスタンプ、隠しファイルなどのメタデータが適切にキャプチャされないことが常にあります。異なるタイプのファイルシステム間で転送が行われると、問題が悪化します。他の提案では、別のbtrfsファイルシステムが利用可能であると想定していますが、常にそうであるとは限りません。

ボリュームレベルのイメージを保存または復元するための提案はありますか?


ここでの問題は、サブボリュームが何であるかを識別することは、定義によりコピーしたくないメタデータに依存していることです(サブボリュームのみが必要です)。このメタデータを変更し、その間追跡します。
Dirkt

回答:


0

btrfs sendそしてbtrfs receive、あなたが必要な正確なツールです。

ファイルシステムをイメージングするのではなく、ファイルツリーをミラーリングするだけで、ファイルツリー内のすべてのメタデータを正確に再作成することはほぼ不可能であり、復元が非常にスムーズになるという楽観論はほとんどありません。許可、タイムスタンプ、隠しファイルなどのメタデータが適切にキャプチャされないことが常にあります。

ツールを試しましたか?私はそのような問題はありませんでしたbtrfsbtrfs sendそしてbtrfs receiveファイルでは動作しません、それらはすべてはBtrfsのメタデータへのアクセス権を持つ、全体のサブボリュームと連携ネイティブ

異なるタイプのファイルシステム間で転送が行われると、問題が悪化します。もう1つの提案は、別のBtrfsファイルシステムが利用可能であることを前提としていますが、常にそうとは限りません。

サブボリュームをそこに複製する場合にのみ、別のBtrfsファイルシステムが必要になります。これはしばしば望ましいので、マウントしてファイルにアクセスすることができます。また、サブボリュームを増分バックアップする場合、これは避けられません。次のスナップショットをインクリメンタルに送信するには、両方の場所に正確な前のスナップショットが必要です。

ただし、フルダンプを使用すると、スタンドアロンストリームを取得できます。これは、まさにイメージです(ただし、閲覧可能なバックアップではありませんbtrfs restore)。他のストリームと同様に作業します。

btrfs send /source/subvolume >/another/filesystem/subvolume-image   # just a file
# (or you can gzip it and/or send with nc on the fly, whatever)
# then later
</another/filesystem/subvolume-image btrfs receive /some/btrfs/directory

どこ/some/btrfs/directoryと同じBtrfsファイルシステムに属している可能性があります/source


明確にするために、私の要件は、1)単一のサブボリューム全体をキャプチャすること、2)単一のファイル(または小さなグループ)にキャプチャすること、3)任意のタイプの外部FSに通常のファイルとして保存できることです。目的は、ライブ、ブラウズ可能、複製されたインスタンスではなく、機器の障害(フルパーティションのパートクローンに類似)後のクラッシュリカバリです。このsendコマンドは、2つのライブbtrfsパーティション間での交換にのみ役立つことがわかっているため、試していません。あなたの例のようにコマンドを使用して、単一のサブボリュームのすべてのデータとメタデータの最小限であるが完全なダンプをキャプチャできると言っていますか?
epl

@epl Are you saying that I can use the command as in your example to capture a minimal but full dump of all data and metadata for a single subvolume?–私はそう信じています。はい。
カミル・マチオロウスキ

とてもいいです。チュートリアルでは、btrfsバックアップ用のソリューションやrsync推奨されるその他のツールがないことを示しています。代わりbtrfsに、優れたバックアップシステムがあることを示してほしい。バックアップを作成するには、まずスナップショットを作成し、次にを使用してスナップショットをファイルにダンプしますbtrfs send。このアプローチをオンラインでテストするには、スナップショットをファイルに非常に簡単にダンプし、そのファイルから空のサブボリュームに復元できると思いますか?
1

@epl btrfs sendは、単一のサブボリュームの完全なコピーに関しては問題ないように見えますが、それらの多くがデータブロックを共有し、増分バックアップの場合、状況は複雑になります。この回答をご覧ください。このような場合、バックアップをファイルとして保存すると問題が発生します。(1)復元は適切な順序で実行する必要があります。(2)増分バックアップでは、古いファイルを実際に削除することはできませんが、新しいファイルを保存する必要があります。(3)非増分バックアップは、一部のデータを再度転送します。//ファイルがマウントbtrfs restoreし、その場でBtrfsファイルシステムを保持していない限り。
カミル・マチオロウスキ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.