サブサブボリュームへの btrfs サブボリュームのロールバック

サブサブボリュームへの btrfs サブボリュームのロールバック

サブボリュームを持つサブボリュームスナップショットにロールバックする正式な方法はありますか?たとえば、これは私の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に再接続する方法はありますか?

答え1

再接続を意味すると、次のようになり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 ..同じようには機能しません。

答え2

まず、製造時に__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
rmdir __active/{home,opt,var}
mv __snapshot/__active.old/{home,opt,var} __active/

関連情報