btrfs対応のバックアップソリューション


14

btrfsが今月14日にOracle ELで本番稼働を開始しました(Linux 3.2からfsckとスクラブを実行することで)それを利用するために現在のバックアップソリューションを再設計することを考えていました。10TB未満の少量のデータに対してそれを行うことを考えていることに注意してください。これはかなり静的です(毎日1%未満の変更)。要するにSMB / SOHOバックアップソリューション。

バックアップがすべきこと:

  1. 本番サーバーでext [234] / XFS / JFSのLVMスナップショットを作成します
  2. rsync/変更されたデータをバックアップサーバー上のbtrfsに転送
  3. btrfsファイルシステムのスナップショット
  4. 空き領域が少なくなったときに古いスナップショットを削除する

長所:

  • すべてのファイルが簡単に利用でき、解凍やループマウントは不要
  • 過去のスナップショットも簡単に入手できます...
  • ...そのため、読み取り専用のSamba共有として共有できます(シャドウコピーのサポート付き)
  • コピーオンライトのおかげで、スナップショットのスペースは最小限に抑えられます(変更のないスナップショットは、ディスク上で文字通りほとんどKiBを消費しません)
  • 高いバックアップ一貫性:ファイルのチェックサム、すべてのデータのスクラブ、および組み込みの冗長性

質問:

  • コピーオンライトファイルシステムを認識している、または簡単に作成できるバックアップソリューション(Bacula、BackupPCなどの形式)はありますか?
  • または、ホームrsyncソリューションを使用する必要がありますか?
  • バックアップ専用のZFSボックスを持っている人は、Linuxマシンをバックアップするために何をしますか?

見えないcons!その1つは、Btrfsスナップショットは増分バックアップとのみ同等であるということです(ディスク上のファイルのバックアップごとに物理コピーはありません)。これは、ディスク表面の問題に直面したときに重要になる可能性があります。Btrfsに含まれるネイティブRAID1サポートを使用して、1回の複製を強制できることに注意してください。
vaab

1
@vaab:それはpro-チェックサムがあり、FSを積極的にスクラブしている場合、2つ以上のコピーは実際には必要ありません。おそらく3つはRAID6サポートが付属しています。私が言ったように、それは単一のコンピューター上のFS内の「バックアップ」コピーではなく、専用のバックアップシステムのセットアップです。それは「RAIDはバックアップではありません」と「スナップショットはバックアップではありません」です。cp -aそしてrsyncそのためには...
ヒューバートKario

btrfsへのバックアップも検討してrsync -a --delete /home/user /mnt/butterfs/backups/ && snapper createいますが、バックアップ後のスナップショットの作成とは別に、COW対応とはどういう意味ですか?
アンハンマー

1
@unhammer:使用rsyncせずに使用--inplaceすると、リモートファイルシステム内の同じデータの複数のコピーが取得されます。(rsyncは通常、データを一時的な隠しファイルにコピーしてから古いファイルに移動します。Copy-On-Writeファイルシステムでは、この方法で未変更データのコピーを2つ取得します)
Hubert Kario

回答:


5

私は先週、似たようなものを広範囲に検索しました。4つのステップすべてを実行する解決策は見つかりませんでした。「rsync to btrfs」タイプのバックアップを試みるホームユーザーからのブログが多数あり、主要なBtrfsウィキのすべてがBtrfsスナップショットの実行方法をカバーしています。

Btrfsスナップショット回転させるさまざまな方法を試みている人もかなりいます 。ただし、ディスクスペースに基づいてスナップショットをローテーションしたいのは、私が初めて見た人です。私は1時間ごと、1週間ごと、1か月ごとのスナップショットのセットを作成するbtrfs-snapを自分で遊んでいます。

Dirvishプロジェクトは、要件の多くを満たすように思われます。一部の開発者は、DirvishとBtrfsの統合を試みています。ただし、Dirvishプロジェクトは少し停止しているようです。

この時点で、あなたは曲線の先を行っています。


さて、BackupPCと同じくらい痛みのないバックアップソリューションが必要です。ディスク領域が少ない場合、古いデータ(古いスナップショット)を削除するだけです。私は時代を先取りのだということを恐れていたが、それはZFSのようではありません...過去数年間のための私達とされていない
ヒューバートKario

3

Avi Miller(LinuxConf.AUでの講演)によると、btrfsの送受信が進行中です。ファイルの変更を見つけるためにディレクトリを走査する必要がないため、rsyncよりも高速になります。リリース予定日がまだあるかどうかはわかりません。

ただし、スナップショットなどで変更されたすべてのファイルをリストするユーティリティがbtrfs-progsに組み込まれています。btrfsサブボリュームfind-new


2
私はバックアップしたいのbtrfs、ないから ...
ヒューバートKario

2

BackupPCに似たOSバックアップシステムで作業しています。私はこれについて考えました。私が実際に実装するのを妨げてきたのは、サブボリューム間でハードリンクできないことです。サブボリュームのスナップショットのみを作成することもできます->バックアップクライアントごとに1つのサブボリューム。したがって、ファイルレベルの重複排除機能は、このアプローチと共存できません。そして、そのファイルレベルの重複排除は通常、多くのスペースを節約します。1つのサーバーのみをバックアップしますか?

btrfsにブロックレベルの重複排除がある場合は、この問題はおそらく回避できますが、通常はあまりにも遅いです...

そして、そのようなアプローチはもちろん、1つのファイルシステム(btrfs)との緊密な統合を必要とするため、これはオプションの機能である必要があります。

私はそのような牛の機能を追加することを考えているので私は尋ねていますが、上記の欠点のためにすべきかどうかわからない。

編集:UrBackupは、Linuxカーネル> = 3.6(クロスボリュームreflinkサポートあり)での質問で説明されているバックアップをサポートします。設定方法をご覧ください


1
クロスサブボリュームreflinkコピー(によるセミハードリンクcp --reflink)は既に実装されているか、近い将来実装される予定です。FSでのオンライン重複排除は遅い(lessfs)か、大量のRAM(ZFS)を必要とするため、これに依存することはバックアップソフトウェアの本当に悪い機能になります。いずれにせよ、btrfs指向のバックアップソフトウェアは大勢の視聴者を抱えるでしょう。結局、次のext3になるはずです。
ヒューバートカリオ

もう1つ:すべてのサーバーを1つのサブボリュームに保持することで、この問題を回避できます。スナップショット機能を維持しながら、それらの間のコピーをreflink(重複排除)できます。重複排除後にスナップショットを作成するだけで、単一のサーバーのみをバックアップした後でもスナップショットを作成できます!一度に1つずつバックアップを行うと、バックアップにそれ以上のスペースは必要ありません。または、すべてのサーバーをバックアップし、重複排除してからスナップショットを作成することもできます。これにより、同時に少数のサーバーをバックアップできます。
ヒューバートカリオ

あなたが正しい。それを考えなかった。便宜上、別のボリュームの適切なスナップショットにシンボリックリンクできます。ボリューム間のハードリンク(または--reflink)のパッチも確認しましたが、メインラインになったようには見えませんでした。本当に調べます!これで、おそらくsshでバックアップを行うことになります。私のプロジェクトはローカルネットワークに特化しています...(自動検出など)
-UrOni

はい、パッチは生きていて動作していますが、残念ながらメインラインではありません。その理由はわかりません。私はそれについてクリス・メイソンをバグにしようとしています。あなたのプロジェクトに関しては、気軽に私に連絡してください。私は喜んでそれをベータテストします(時間が許せば)。面白いですね。
ヒューバートカリオ

最後に、このパッチはメインラインLinuxカーネル3.6に登場しました。クロスデバイスのreflinkを使用すると、実際にはそれほどの作業ではありませんでした。私はそれについてここに書きました:urbackup.org/blog/?p=83コードはgitリポジトリの「次の」ブランチにあります。現在テスト中です。
UrOni

1

btrfs wikiページ「ユースケース」には、SnapBtr、Snapper、btrfs-time-machine、UrBackupなどのツールがリストされています。

autosnapと呼ばれる組み込みツールの提案があります:

自動スナップ機能を使用すると、定期的またはイベントベースのスナップショットを作成し、さらにスナップショットを自動的に管理するようにbtrfsを構成できます。

自動スナップは、スナップショットを取得するだけでなく、作成されたスナップショットを管理することでもあります。現在、ファイルシステムの使用スペースに基づいて自動スナップを設定してスナップショットを削除できます。

ただし、2013年10月の時点で、wiki 「autosnap機能は現在、btrfsのアップストリームバージョンに含まれていません」と述べています。


1

似たような不満があったので、私はsnazzerと呼んでいるいくつかのスクリプトを作成することになりました。ともに、スナップショット、プルーニング、測定、およびsshを介した転送を提供します(ただし、今日の時点では、ローカルファイルシステムとの間でも送受信できます)。測定値は、スナップショットパスのsha512sumおよびPGP署名のレポートです。リリースの準備はまだできていませんが、この早い段階でレビューする時間がある人がいたらフィードバックをお聞かせください。

この時点でCLIのみが、私は多くのbtrfsのサブボリュームを備えたシステムで使用して簡単にそれを作るためにいくつかの時間を取った-通常、私はのために別々のサブボリュームを持っている/var/cache/homeなどのスナップショットから除外される必要がある以上/以下であってもよいです積極的なプルーニングスケジュール。

プルーニングアルゴリズムは、スナップショットのセットとその日付の存在を純粋に決定するのではないかと心配しています。ディスク使用制限が満たされるまでプルーニングを維持するものはありません。最初に削除するのはどれですか。最初に毎時の数を減らしますか、それとも日ごとの数を減らしますか?おそらく最も古いものを落としてください。毎年?展開ごとに優先順位が異なります。そして、これが唯一のバックアップ層(この場合、法的/保険の義務の場合、最も古いバックアップを削除するべきではない)か、単に中間のもの(その場合、おそらくそれらの年次データを安全な場所にアーカイブするかその他)。

ZFSサポートや相互運用性をいつか追加します。現時点では「ゼロ」依存性への強い欲求のため、ほとんどがPOSIX風のシェルとperlで書かれています。


FSが非常に大きく頻繁に変更されない限り、1か月前のスナップショットを保持することと、先月から1日に1回だけを保持することと、1か月全体を1日に1回保持することとの違いはほとんどありません-btrfsは、とにかく現在の状態と1か月前の状態-デイリーのみを保持していますが、圧縮されて差分があるので、半年ほど簡単に保持できます-そして、少なくとも一部のスペースを解放するために最も古い保証を削除します
Hubert Kario

さて、追跡するVMの数は少なくありません-いくつかの大きな一時ファイル(つまり、一意のエクステントを持つスナップショット)には、あなたが提案したように、中間スナップショットのプルーニングから恩恵を受けることができます。だから、プルーニング中間体は最も古いものを落とすほどディスクを解放しないのは事実ですが、私が言えることは...スナップショットの最小数のみを維持し、btrfsのようなCOWファイルシステムでそうすることはそれと同じくらい効率的であるようです取得しますが、適切なソリューションを選択することはそれ以上であることを認識しています:)
csirac2

@ csirac2あなたはおしゃれな人を維持していますか?このタイプのソリューションを探しています。スナッツァーが積極的に維持されている場合、私は興味があります。GitHubは最近のアクティビティを表示していないようです...
MountainX-for-Monica

@MountainXスナッツァーに関する最初のフィードバックをあまり得られなかったとき、私は熱意を失いました。それを書き始めたとき、OpenSUSEのスナッパーとbtrfsを自動化するために浮かぶ少数のシェル/ Pythonスクリプトだけが本当にありました。私が世界と共有するまでに、他の多くのオプションが現れ、btrbkには大きな勢いがあるようだ(自動テストの欠如[おそらく今修正済み?]が懸念されていた)。もう一度やり直さなければならないとしたら、おそらくsanoidの作者と協力してbtrfsの互換性を追加したでしょう。あなたの考えを聞いてみたい。
csirac2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.