web-dev-qa-db-ja.com

最小限のデータ重複で大きなバイナリファイルの複数のバージョンを保存する(できればLinux)

ローカルストレージを備えたLinuxサーバーに約150GBのバイナリファイル(qcow2)の複数のバージョンを保存する必要があり、必要に応じてマージできる差分を保持するだけのソリューションがあることを望んでいたので、別のファイルを作成する必要はありません4ギガのみが変更された場合の150GBファイルのコピー。これはストレージに関する質問であり、KVM/qcow2固有の機能に関する質問ではありません。私はすでにそれらのオプションのいくつかを調査しました。現在、EXT4でCentOS6.3を使用しています。ファイルは無期限に保存する必要があり、復元時に完全に無傷である必要があります。ソリューションに価値がある場合は、ファイルシステムなどを変更したいと思います。

5
user160910

Linux上のZFSこの場合、重複排除を使用することはあなたの友達かもしれません。 Red Hat RPM/repos インストールが可能です。

重複排除がなくても、これをZFSスナップショットワークフローに組み込むことができれば、ZFSでこれを試みることにはいくつかの重要な利点があります。

これらのファイルをどのように操作したいかについてもう少し説明していただけますか?ポイントインタイムスナップショットを探していますか、それとも同じ/類似ファイルの複数のリビジョンをデータストアにコピーしていますか?

2
ewwhite

解決策としてLVMスナップショットを検討します。詳細に立ち入ることなく、私はこれを行います:

  1. データを格納するのに十分な大きさのLVMボリュームを作成します。
  2. 大きなバイナリファイルの最初のコピーをこのボリュームにアップロードします。
  3. LVMスナップショットを作成します。
  4. Rsyncを使用して、既存のファイルの代わりに大きなファイルの別のバージョンをコピーします。

この時点で、LVMスナップショットをマウントすることで元のファイルにアクセスできます。また、大きなファイルの最新バージョンも利用できるようになります。この方法で複数のスナップショットを作成できます。

0
DmitriD

私はこの目的のために librsync を使用しています。これは、CentOSおよびその他のRHELクローンで EPELリポジトリ で使用できます。

使用するだけ:

rdiff signature new.qcow2 /tmp/new.qcow2.rdiffsig
rdiff delta /tmp/new.qcow2.rdiffsig old.qcow2 new.qcow2--old.qcow2.rdiff
rm /tmp/new.qcow2.rdiffsig
xz new.qcow2--old.qcow2.rdiff 

その後、old.qcow2を削除できます。あなたが再びそれを必要とするとき、あなたはするでしょう:

xz -d < new.qcow2--old.qcow2.rdiff.xz > /tmp/new.qcow2--old.qcow2.rdiff
rdiff patch new.qcow2 /tmp/new.qcow2--old.qcow2.rdiff old.qcow2
rm /tmp/new.qcow2--old.qcow2.rdiff

これは連鎖させることができます-old.qcow2からevenolder.qcow2などのrdiffを作成できます。これはかなり遅いですが、スペース効率が非常に高くなります。通常、これを使用して古いバックアップを削除する必要はありません。 rdiff-backup プログラムもあり、ディレクトリ全体に対して同様のスキームを自動化します。

0
Tometzky