Jak zrobić migawkę btrfs?

22

Partycja My / Home składa się z całego dysku fizycznego. Jest sformatowany jako btrfs. Chcę to zrobić migawkę. W szczególności mam wątpliwości co do nazewnictwa podobjętości.

Wiem, że są podobne pytania, ale każde podobne pytanie wydaje się zadawać coś innego niż to, o co pytam (i są one starsze, co prawdopodobnie oznacza nieaktualne, biorąc pod uwagę szybki rozwój btrfs). Na przykład odpowiedź na to pytanie najwyraźniej nie jest odpowiedzią na moje pytanie, ponieważ moja partycja / home jest osobnym woluminem, a strona podręcznika dla btrfs pokazuje teraz inne polecenie do tworzenia migawek.

kolejny podobny problem, brak solidnego rozwiązania .
ktoś tak zdezorientowany jak ja w kwestii nazewnictwa

Moje pytanie:

Rozpoczęcie proste: czy jest to poprawne polecenie do wykonania prostej migawki mojej partycji domowej?

btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421

Byłem naprawdę odważny i przetestowałem go i to nie działa. Błąd jest error accessing /home/@home. Jak pokazano poniżej, @home znajduje się na liście.

Oczywiście jestem zdezorientowany w nazwach podobjętości. Czy muszę ich używać do tworzenia migawek? Niektóre przykłady pokazują robienie migawek z domu za pomocą /homeparametru źródłowego, ale na podstawie przykładów woluminów głównych wydaje mi się, że muszę go użyć /home/@home.

Czy to polecenie zadziała? A jeśli nie, to dlaczego?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

Czy to @tylko konwencja nazewnictwa? Czy to w ogóle ma sens?

Oto niektóre dane wyjściowe, które mogą być istotne:

btrfs subvolume list /home
ID 256 top level 5 path @home

Nie jestem pewien, co to dokładnie znaczy. Kiedy próbuję btrfs device scan, pojawia się błąd (np. Nie można przeskanować urządzenia / dev / sda1). W moim systemie plików nie ma żadnych błędów. Wszystko w porządku.

Oto moje partycje. W odpowiedzi na jedną odpowiedź no / home nie jest moją jedyną partycją btrfs.

/dev/sda1: (boot partition) TYPE="ext2"  
/dev/sda2: (root partition) TYPE="btrfs"  
/dev/sdb1: (home partition) TYPE="btrfs"  
/dev/sdc1: (shared partition) TYPE="btrfs"  
/dev/sdc2: TYPE="swap"  
MountainX dla Moniki Cellio
źródło
społeczność zdecyduje o repo ...
One Zero

Odpowiedzi:

19

Jakie jest prawidłowe polecenie, aby utworzyć migawkę partycji domowej na Ubuntu 12.04?

Biorąc pod uwagę fakt, że home znajduje się na partycji btrfs i jest zamontowane jako / home, poprawne polecenie to:

sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>

Oto moje wyniki:

Przed uruchomieniem polecenia dzisiaj:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936

Komenda:

$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307  
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'

Po uruchomieniu polecenia dzisiaj:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936  
ID 258 top level 5 path @home/@snapshot_20120611_1307

Jedynym problemem związanym z tą metodą jest to, że migawki pojawiają się, gdy jesteś ls (list) / home.

Wiki społeczności Ubuntu zostało zaktualizowane o rozwiązanie tego problemu. Oto on:

Jak pracować z migawkami w układzie Ubuntu

Aby pracować z migawkami / lub / home w układzie Ubuntu, bardzo wygodnie jest zamontować system plików btrfs w osobnym miejscu i pracować z góry drzewa btrfs, a nie z zamontowanych podwoluminów. <- to jest rozwiązanie. Niestety nie jest to wygodne .

sudo mount /dev/sdX# /mnt

Aby utworzyć migawkę, użyj tej samej składni, której użyłem powyżej:

sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

Spowoduje to utworzenie migawki podobjętości @ o nazwie @_snapshot znajdującej się również w górnej części drzewa btrfs. Ponieważ znajduje się w górnej części drzewa, nie będzie się pojawiał podczas wyświetlania plików w zamontowanym woluminie.

Aby przywrócić migawkę, wystarczy zmienić jej nazwę na nazwę montowaną i uruchamianą ponownie przez Ubuntu. Oto jak zmienić nazwę:

sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@

Aby usunąć migawkę, użyj:

sudo btrfs subvolume delete /mnt/@_badroot

Migawki btrfs same w sobie są podobjętościami i same w sobie, usuwanie starego podobjętości @ w ten sposób jest w porządku, pod warunkiem, że mamy zamiennik.

UWAGA: Polecenie btrfs-tools set-defaultspowoduje uszkodzenie układu Ubuntu.

MountainX dla Moniki Cellio
źródło
Więc jesteś tam, prawda? Teraz powinieneś być w stanie zamontować swoje migawki.
turbo
Właściwie nie próbowałem ich jeszcze montować. Właśnie widziałem odpowiedź psusi na temat pakietu migawek apt-btrfs-snapshot. To wygląda interesująco, prawda?
MountainX dla Moniki Cellio,
Tak, wspomniałem o tym również w trzecim punkcie. Przepraszam, musiałem to podkreślić;)
turbo
Sugeruję więc, aby oznaczyć swoje rozwiązanie jako odpowiedź.
turbo
Istnieje rozwiązanie dla migawek wyświetlanych podczas ls / home. Teraz edytuję swoją odpowiedź z informacjami.
MountainX dla Moniki Cellio
11

Ok, na początek:

  • Nazwa podobjętości, na którą patrzysz, jest @homepokazana przez btrfs subvolume list /home. Jest zamontowany /home. @home jest nazwą podobjętości, ma także identyfikator 256, więc najprawdopodobniej tylko twój / home jest sformatowany jako btrfs.

  • Teraz, aby utworzyć migawkę @home, musisz wydać: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • Podobjętość może mieć dowolną nazwę. @ To konwencja Ubuntu w czasie instalacji. (Jeśli używasz apt-btrfs-snapshotpodwolumny root, należy ją nazwać @btw.) Wiki społeczności zdecydowanie zaleca utrzymywanie @jako root i @homehome, ponieważ jest montowana w ten sposób. Jest to szczególnie ważne, jeśli chcesz wycofać: NIE powinieneś używać subvolume btrfs set-default (nie składnia podkreślona celowo).

  • Bo btrfs device scanmusisz użyć sudo.

  • Aby usunąć podwolumnę, możesz użyć sudo btrfs subvolume delete @home_snapshot_20120421

Wszystkie polecenia btrfs mogą być skracane, o ile są jednoznaczne, więc na przykład sudo btrfs device scanmożna je skracać sudo btrfs d s,sudo btrfs dev sc lub coś pomiędzy.

Mam nadzieję, że odpowiedziałeś na twoje pytania. Istnieje kilka narzędzi do regularnego wykonywania kopii zapasowych, jednym z przykładów jest btrfs-snapshot-rotacja . Używaj ich ostrożnie, ponieważ żadne z nich nie jest naprawdę dojrzałe ani nie ma wystarczającej przyczepności, tzn. Mogą zawierać błędy.

turbo
źródło
Pojawia się błąd:$ sudo btrfs subvolume snapshot @home home/@snapshot_20120611_1257 ERROR: error accessing '@home'
MountainX dla Moniki Cellio
Poza tym nie odniosłem jeszcze sukcesu btrfs device scan. Każdy wariant, w tym użycie, sudodaje błąd „BŁĄD: nie można przeskanować urządzenia '/ dev / sdX'”, gdzie X jest dowolną prawidłową nazwą, taką jak a, a1, b itp.
MountainX dla Moniki Cellio
@OneZero: Nie znam jeszcze wszystkich odpowiedzi, ale wymyśliłem prawidłowe polecenie, aby utworzyć migawkę partycji domowej na Ubuntu 12.04 i podałem te informacje jako odpowiedź poniżej.
MountainX dla Moniki Cellio,
to jest naprawdę dziwne. Sprawdziłem partycję btrfs btrfs sub snap @ /mnt/randomi zadziałało to dla mnie. Potem znowu byłem w / mnt, gdzie zamontowano @. Przepraszamy za zamieszanie
turbo
@turbo: Twoja odpowiedź była bardzo pomocna. Nie musisz przepraszać za próbę pomocy. Nawet strony Ubuntu nie są jasne. W końcu wszystko to rozgryziemy.
MountainX dla Moniki Cellio,
10

Zainstalować apt-btrfs-snapshotpakiet i korzystać z jego poleceń list, snapshot, deleteiset-default .

To jest skrypt, który otacza polecenia niższego poziomu btrfs. Działa, najpierw instalując gdzieś główny system plików btrfs. Rozumiem przez to prawdziwy root, w przeciwieństwie do /@podobjętości, które normalnie montowane są jako /. Innymi słowy, trzeba uruchomić mount /dev/sda1 /mnt, dzięki czemu można zobaczyć wielkości podrzędnych, które zostaną wymienione jako /mnt/@, /mnt/@homeoraz wszelkie inne zostały utworzone. Stamtąd możesz btrfs subvolume snapshot /mnt/@home @snapshot-today, co utworzy migawkę /@homenazwanego /@snapshot-today. Porównaj to z działaniem btrfs subvolume snapshot /home /home/@snapshot_today, które zamiast tego tworzy migawkę jako dziecko /@home, stąd pojawia się, gdy ty ls /homei jego prawdziwe imię to/@home/@snapshot-today .

Cofanie migawkę jest tylko prosta operacja zmiany nazwy: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home. Następnym razem, gdy uruchamia się, gdy idzie do montażu /@homew/home , znajdzie migawkę.

Niełatwo jest otoczyć głowę, ponieważ musisz pamiętać o różnicy między tym, jak btrfs widzi rzeczy, a tym, jak jądro je widzi, na co wpływ mają opcje montowania (w szczególności argument subvol =).

psusi
źródło