Wycofywanie podobjętości btrfs z podobjętościami podrzędnymi


9

Czy istnieje kanoniczny sposób przywracania do migawki podobjętości, która ma podrzędne objętości podrzędne. Na przykład jest to mój układ woluminów 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

Możesz więc zobaczyć, że home, opt i var są podobjętościami podrzędnymi __active. Jeśli wykonam migawkę __active w taki sposób, że to jest mój nowy układ:

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

Jeśli chcę przywrócić do stanu migawki __active, czy istnieje sposób na ponowne podłączenie do domu, wybranie opcji i var do nowego __active?

Odpowiedzi:


3

Jeśli masz na myśli ponowne podłączenie, btrfs subvolume listktóre pokażesz:

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

wtedy nie ma sposobu, aby to zrobić za pomocą btrfs-progs.

Pod-woluminy można usunąć tylko wtedy, gdy wszystkie podwoluminy potomne (utworzone za pomocą btrfs subvolume create ...) są puste, jednak nie jest to prawdą w przypadku migawek (które są tworzone za pomocą btrfs subvolume snapshot .... Migawek można zawsze usunąć, więc jeśli można je przenieść, istnieje problem z usunięciem migawki.

Chociaż zarówno podwoluminy potomne, jak i migawki pojawiają się w tej samej strukturze drzewa, a nawet korzystają z tego samego btrfs subvolume delete ..polecenia, nie zachowują się tak samo.


1

Przede wszystkim, podczas tworzenia __snapshot/__active, podwolumny (home, opt, var) nie są przyciągane. Zamiast tego tworzone są puste katalogi. W ten sposób __snapshot/__activemożna łatwo usunąć, a __activenie można.

Ale głównym punktem było przywrócenie __activez __snapshot/__active. O ile mi wiadomo, nie można tego zrobić atomowo. Ale możesz szczęśliwie mvrobić migawki i inne podwoluminy wokół (o ile są zapisywalne). Czyniąc np

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

przywraca __activez migawki, ale przenosi zmienne podrzędne do __snapshot/__active.old/{home,opt,var}. Aby je ponownie podłączyć, możesz teraz użyć

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

i dostaniesz

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

Jeśli twoja migawka jest tylko do odczytu, możesz to zrobić na przykład

mv __active __snapshot/__active.old
btrfs subvolume snapshot __snapshot/__active __active
mv __snapshot/__active.old/{home,opt,var} __active/
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.