スナップショットの共有データを保存するためにbtrfsファイルシステムを別のメディアに複製する方法

スナップショットの共有データを保存するためにbtrfsファイルシステムを別のメディアに複製する方法

私はbtrfs raid機能を試してみることにしました。 btrfsを設定しました

sudo mkfs.btrfs -m raid10 -d raid10 /dev/sda9 /dev/sdb9 /dev/sdc9 /dev/sdd9

これで、既存のbtrfsパーティション(linux-raidの上)を複製したいと思います。cp -aスナップショットベースのバックアップが40を超え(保存したい)、複数回空にできるストレージスペースがすべて埋められるため、シンプルは使用できません。

これまでに2つのオプションを見ることができます。

partclone.btrfs -s /path/to/original/fs -o /dev/sda9 -b

まだ必要だと思います。btrfs balance start /dev/sda9

そして

すべきこと:cp -aできるだけ多くのコンテンツをストレージに増分コピーして使用します。bedupファイルの重複を削除して繰り返します。

好ましい(例:ベストプラクティス)アプローチは何ですか?私は最初のものを好む。時間がかかりません。あるいは、その過程で邪悪な「問題」が隠れている可能性があります(もちろん、btrfsが実験的であるという事実を除く)。


最初の問題は間違いありません。ツールがどれほど優れていても、明らかにpartclone.btrfsマルチデバイスファイルシステムをサポートしていません。 :-(

ベストアンサー1

私は尋ねたエマルジョン2年前。

しかし、私の場合は、1つのデバイスだけをraid0にコピーします。

結局は知りました。離れた。当時はraid0からraid10に変換できませんでしたが、今ではカーネル3.3から変換できます。したがって、このソリューションはついにあなたに役立ちます。

このアプローチの1つの問題は、fsuidをコピーすることです。これは、FSとそのコピーを同じコンピュータにインストールできないことを意味します。fsuid当時、FSのプロパティを変更するツールはありませんでしたが、今は変更されている可能性があります。

アイデアは、記録できるようにRAWデバイスに書き込み時にコピーレイヤーを追加することです。ただし、編集は他の場所で行われているため、後で削除できます。これは、追加のストレージスペース(外付けドライブなど)が必要であることを意味します。

次に、元のファイルシステムの代わりにCOWのFSをマウントし、FSコピーデバイスを追加してからCOWデバイスを削除します。

書き込み中のコピーには、デバイスマッパーを使用できます。

書き込み領域のワンタイムコピーの場合、ここではループデバイスを使用します。

/dev/sda次の場所に複製したいとします/dev/sd[bcde]

COWバックエンドストレージの作成:

truncate -s 100G /media/STORE/snap-store
losetup /dev/loop0 /media/STORE/snap-store

これで、元のFS(インストールされている場合)を削除し、modprobe -r btrfs邪魔にならないことを確認し、デバイスの検索を忘れてしまいます。

次に COW デバイスを作成します。

echo "echo 0 $(blockdev --getsize /dev/sda) snapshot /dev/sda /dev/loop0 N 8 | dmsetup create cowed

今は記録された内容を除いて、結局保存され、/dev/mapper/cowed影響を受けません。/dev/sda/dev/loop0/dev/sda

これでインストールできます。

mount /dev/mapper/cowed /mnt

追加デバイスを追加:

btrfs dev add /dev/sd[bcde] /mnt

古いものを削除します。

btrfs dev del /dev/mapper/cowed /mnt

これがすべて終わったら、それを終了してプラグを抜くか、/dev/sda他のデバイスと同じfsuidを持っていて、それでもbtrfs混乱する可能性があるので、読み取り専用にすることができます。

もし私が正しく理解したら、最近btrfs-progがあると仮定すれば、次のことができます。

btrfs balance start -d convert=raid10 /mnt

raid10に変換します。理論的には、すべてのデータブロックが少なくとも2つのディスクにコピーされることを保証する必要があります。

まず、ループデバイスの仮想btrfsでテストすることをお勧めします。これはすべてメモリからのものであるため、間違っている可能性があります(編集する前に元の回答を参照してください)。

カーネル3.6以降、btrfsはzfsと同様に送受信を実装します。これはあなたのためのオプションかもしれません。

おすすめ記事