btrfsルートサブボリュームを受信したスナップショットに置き換える方法は?

btrfsルートサブボリュームを受信したスナップショットに置き換える方法は?

既存のフルディスクbtrfs(パーティション化されていない)ファイルシステムをbcacheに変換したいと思います。
これを行うには、データを移動してドライブを再フォーマットする必要がありました。
ほんの数ステップでこれを行うのに十分なハードドライブ容量があります。

私はbtrfsを使用しているので、これを簡単にするとbtrfs send思いました。btrfs receive

まず、変換したいファイルシステムの読み取り専用スナップショットを作成し、それを別のファイルシステムのサブボリュームに送信し始めました。

私にとって不明な点は、スーパーブロック変換が発生した後に対応する冗長サブボリュームを元のディスクに復元する方法です。

マンページにはbtrfs receive新しいサブボリュームのみを作成でき、プロセスが完了するとそのサブボリュームを読み取り専用にすることができます。

それでは、受信したスナップショットで書き込み可能な新しいルートサブボリュームを置き換える方法は?

ベストアンサー1

それでは、受信したスナップショットで書き込み可能な新しいルートサブボリュームを置き換える方法は?

あなたはできません。

あなたの場合、トップレベル(ルート)サブボリューム(ID 5)は/Linuxファイルシステムのボリュームであり、隣接するものはありません。ご存知のように、btrfs-receive読み取り専用サブボリュームを作成するため、読み取り専用サブボリュームから読み取り/書き込みスナップショットサブボリュームを作成する必要があります。これを行うには、外部からサブボリュームを作成できる必要があります/。置き換えることはできません。トップレベルのサブボリュームの理由です。

次のように言われました。

読み取り専用スナップショットを作成しました。FSまず変換して次に送りたいです。サブボリューム他のfsから。

しかし、あなたがすることは読み取り専用のスナップショットを作成することです。サブボリューム、全体のBTRFSファイルシステムではありません。トップレベルのスナップショットを作成する方法はわかりません。奇妙な。

partclone最善の方法は、ファイルシステム全体をバックアップしてから復元するなどのツールを使用することです。それ以外の場合は、サブボリュームを変更する必要があります。ボールでリストしたもの~から平らな、これがあなたが持っているものです入れ子になった。入れ子になったレイアウトを使用すると、次のような結果が得られます。

/ (top-level)
|
|__ /rootfs (subvolume)
|   |
|   _/home
|
|__ /rootfs-backup (read-only subvolume, which you can delete later)
|   |
|   _/home

ネストしたレイアウトを使用すると、ファイルシステムのすべてのサブボリュームのスナップショットを作成できます(とにかく実行する必要がない最上位レベルを除く)。その後、ファイルシステム全体ではなくrootfsサブボリュームのみをマウントします。/たとえば、mount -t btrfs /dev/sda1 -o defaults,subvol=/rootfs

おすすめ記事