子サブボリュームを持つbtrfsサブボリュームのロールバック


9

子サブボリュームを持つサブボリュームスナップショットにロールバックする標準的な方法はありますか?したがって、たとえば、これは私のbtrfsボリュームレイアウトです。

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 257 path home
ID 260 gen 36538 top level 257 path opt
ID 261 gen 59802 top level 257 path var

したがって、home、opt、およびvarが__activeの子サブボリュームであることがわかります。これが私の新しいレイアウトになるように__activeをスナップショットすると:

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 257 path home
ID 260 gen 36538 top level 257 path opt
ID 261 gen 59802 top level 257 path var
ID 416 gen 59784 top level 258 path __snapshot/__active

__activeのスナップショットにロールバックしたい場合、home、opt、およびvarを新しい__activeに再接続する方法はありますか?

回答:


3

あなたbtrfs subvolume listがあなたが示すであろうことを再接続することを意味するならば:

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 416 path home
ID 260 gen 36538 top level 416 path opt
ID 261 gen 59802 top level 416 path var
ID 416 gen 59784 top level 258 path __snapshot/__active

その後、何も今でそれを行う方法はありませんbtrfs-progs

サブボリュームは、すべての子サブボリューム(で作成されたbtrfs subvolume create ...)が空の場合にのみ削除できますが、スナップショット(で作成されたもの)には当てはまりませんbtrfs subvolume snapshot ...。スナップショットは常に削除できるため、移動できる場合は、スナップショットの削除に関する問題。

子サブボリュームとスナップショットは同じツリー構造で表示され、btrfs subvolume delete ..コマンドも共有しますが、同じようには機能しません。


1

まず、を作成するとき__snapshot/__activeに、サブボリューム(home、opt、var)はスナップされません。代わりに、空のディレクトリが作成されます。したがって__snapshot/__active、簡単に削除できますが、削除__activeできません。

しかし、要点はで復元__activeすること__snapshot/__activeでした。私の知る限り、これは原子的に行うことはできません。しかし、mvスナップショットやその他のサブボリュームは(書き込み可能であれば)楽しくできます。たとえば

mv __active __snapshot/__active.old
mv __snapshot/__active __active

__activeスナップショットから復元しますが、サブボリュームをに移動し__snapshot/__active.old/{home,opt,var}ます。それらを再接続するには、今すぐ使用できます

mv __snapshot/__active.old/{home,opt,var} __active/

そしてあなたは得るでしょう

ID 257 gen 59804 top level 258 path __snapshot/__active.old
ID 258 gen 59786 top level 5 path __snapshot
ID 259 gen 59802 top level 416 path home
ID 260 gen 36538 top level 416 path opt
ID 261 gen 59802 top level 416 path var
ID 416 gen 59784 top level 5 path __active

スナップショットが読み取り専用になっている場合は、たとえば次のようにできます

mv __active __snapshot/__active.old
btrfs subvolume snapshot __snapshot/__active __active
mv __snapshot/__active.old/{home,opt,var} __active/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.