it-swarm-ja.com

パーティションを(ファイルの束としてではなく)段階的にバックアップし、スナップショットをマウントできるようにするにはどうすればよいですか?

このユースケースを可能にするツールはありますか?

  1. LVM2パーティションがありますvg-vol;
  2. 定期的にスナップショットを作成して保存し(create_new_snapshot --directory=/media/external_storage/snapshots/ --input=/dev/mapper/vg-vol_snapshot --name=qwerty)、削除します。変更されたブロックのみがツールによって保存されることが期待されます。このツールはLVM固有であるとは想定されておらず、以前のそのような大きなファイルと多くのブロックを共有すると予想される単一の大きなファイルを受け入れるだけです。圧縮(ランダムアクセスが保持されている)がサポートされている場合は良いことです...
  3. 保存したスナップショットは、どこにも完全に解凍せずに(FuseまたはNBDなどを使用して)マウントできます。

    touch /root/mountpoint
    view_external_snapshot --mountpoint=/root/mountpoint --directory=/media/external_storage/snapshots/ --name=qwerty
    mount -o loop -t reiserfs /root/mountpoint /root/tmpmnt
    

最も近いのはrdiffrdiff-backupではない)ですが、最初に解凍(rdiff patch)せずにbase + deltaのコンテンツにアクセスできるかどうかはわかりません...

他の関連するものは cloop です。入力として大きなファイルを受け入れ、それを圧縮し、後でブロックデバイスとしてアクセスできるようにします。しかし、デルタを保存することはできず、完全なスナップショットのみを保存できます...

注:質問は、ファイルシステムレベルのバックアップ(重複、rdiff-backup、rsnapshotなど)に関するものではありません。

2
Vi.

bup を使用して実行することもできます。このユースケースをサポートしているようです。

1
Vi.

データを保護するための固溶体が必要な場合(そしておそらく必要な場合)は、重複排除、透過的圧縮、ブロックレベルのミラーリングを備えたZFSを試してください。 Linux用のカーネルモジュールとFuseオーバーレイの両方があります。

編集:チャットで説明したように、別の解決策は、squashfsを使用し、ベースとインクリメントに日付付きディレクトリを使用して追加モードを利用することです。イメージをループバックでマウントし、rdiffを使用して実際のデルタを見つけることができます。ただし、ZFSアプローチよりもはるかに遅いと思います。結局のところ、ZFSやBTRFSのような高度なファイルシステムは、これらのギャップを埋めるために生まれました。

1

私自身を転がしました: https://github.com/vi/forsnapshotfs

これにより、新しいファイルの順次書き込み(以前のバージョンのファイルのブロックを再利用)、圧縮の使用、およびそのようなファイルのマウント(単純なメモリ内コピーオンライトを使用)が可能になります。

$ fsfs-write . root_20130326          < /dev/mapper/inside-root_20130326
Completed. new: 9297920   reused: 0         hashcoll: 0     zero: 0  dblref: 0
$ fsfs-write . root_20130625 20130326 < /dev/mapper/inside-root_20130625
Completed. new: 1376582   reused: 7921338   hashcoll: 5380  zero: 0  dblref: 0

# mkdir m m2
# fsfs-mount . m
# mount -o loop,ro   m/root_20130326   m2
1
Vi.