Czy można zrobić gorącą kopię systemu?

10

Chciałbym wykonać kopię zapasową mojego systemu bez wyłączania go. Klon systemu powinien także móc działać na innej maszynie.

Próbowałem „dd” całą partycję systemową na innym dysku, po czym mam pewność, że nie uruchomiono żadnych zadań administracyjnych. Myślę, że musiałem powiedzieć Grub'owi, żeby uruchomił się na tym dysku, więc wykonałem polecenie:

grub-install  /dev/sdc1 

ale dostałem ten błąd:

The file /boot/grub/stage1 not read correctly.

Wiem, że robię to nie jest bardzo czyste, więc czy masz dobre rozwiązanie, aby osiągnąć moje cele lub pomysł rozwiązania problemu z grub?

Gaël Barbin
źródło
Jeśli musisz to kontynuować, oznacza to, że faktycznie coś robi. W takim przypadku jest prawie pewne, że zawartość systemu zmieni się podczas tworzenia kopii zapasowej. To sprawia, że ​​wyniki są nieco nieprzewidywalne - przetestuj dużo przed użyciem w produkcji.
Joe,

Odpowiedzi:

8

Istnieje kilka opcji, z których każda ma kompromisy. Nie można użyć dddo sklonowania systemu plików, gdy jest on podłączony do odczytu / zapisu, w przeciwnym razie klon zostanie uszkodzony, ponieważ źródło jest zmieniane podczas kopiowania, więc miejsce docelowe będzie częściowo nieaktualne, a częściowo nie. Jeśli naprawdę chcesz mieć możliwość ddkopiowania partycji na gorąco, możesz to zrobić za pomocą migawek LVM . Wymaga to przede wszystkim zainstalowania systemu za pomocą LVM , ale następnie można utworzyć migawkę w dowolnym momencie, a ponieważ migawka jest zawieszona i nie jest zamontowana, można bezpiecznie wykonać ddmigawkę, a następnie usunąć migawkę. Druga strona korzystaniaddpolega na tym, że marnuje czas na kopiowanie całego nieużywanego miejsca w woluminie i wymaga, aby miejsce docelowe było co najmniej tak duże, nawet jeśli większość źródła nie jest używana.

Zamiast używać dd, możesz po prostu użyć tradycyjnych narzędzi do tworzenia kopii zapasowych, takich jak tarlub, dumpaby wykonać kopię zapasową migawki. Ma to tę zaletę, że nie marnuje czasu na kopiowanie wolnego miejsca i może zostać przywrócone na mniejszą partycję, o ile ma miejsce na pliki. Możesz także wyodrębnić tylko niektóre pliki, aby wykonać częściowe przywracanie. Nie musisz również używać LVM z tą metodą: dopóki masz pewność, że żadne pliki nie są modyfikowane podczas tworzenia kopii zapasowej, można to bezpiecznie zrobić na zamontowanym systemie plików. Najgorsze, co może się zdarzyć, to uszkodzenie pojedynczego pliku zmodyfikowanego podczas tworzenia kopii zapasowej, a nie uszkodzenie całej kopii zapasowej, jak to może się zdarzyć dd.

Jak się wydaje, po przywróceniu systemu plików nadal trzeba ponownie zainstalować grub, aby uruchomić system. Nie jestem pewien, dlaczego wystąpił ten błąd podczas próby, ale wygląda na to, że korzystałeś z grub-legacy, ponieważ grub2 nie ma stage1.

psusi
źródło
Nie korzystałem z LVM, ale mogłem, szukam trwałego rozwiązania. czy wystarczy skopiować całe drzewo systemowe (oprócz proc), a następnie zmodyfikować grub?
Gaël Barbin,
@Gael, wystarczy skopiować wszystkie pliki i ponownie zainstalować grub, tak. Konieczne może być także zaktualizowanie UUID w / etc / fstab. Zauważ, że jeśli używasz tar, chcesz wykluczyć nie tylko / proc, ale także / dev, / sys i / run, lub użyj --one-file-systemprzełącznika, aby zatrzymać zejście do innych systemów plików.
psusi
dziękuję, spróbuję ze smołą. To rozwiązanie może umożliwić pełną kontrolę kopii zapasowej.
Gaël Barbin,
3

Użycie czegoś takiego jak rsynclub tardo skopiowania partycji może być prostsze. Zamontowałbym partycję na drugim punkcie montowania, tak jak /mntprzed kopiowaniem. Te opcje umożliwiają także zmianę rozmiaru lub typu partycji. Możesz także mieć struktury na dodatkowych partycjach. Często mam osobne partycje dla /vari /usr. Te również będą musiały zostać wzięte pod uwagę.

Konieczne może być zagłębienie się w grubdokumentacji w celu ustalenia, w jaki sposób prawidłowo skierować dysk i partycję. install-grubmoże przyjmować błędne założenia, które nie robią tego, co chcesz.

Istnieją takie narzędzia, mondoktóre pozwalają utworzyć rozruchową płytę odzyskiwania po zainstalowaniu na niej systemu operacyjnego.

BillThor
źródło
Używałem dd, ponieważ powiedziałem mi, że inne narzędzia do kopiowania plików będą kopiować tylko pliki, a nie mbr i tablicę partycji. Rzuciłem okiem na mondo i mogło to być najprostsze rozwiązanie. Dziękuję
Gaël Barbin,
@Gael Jeśli klonujesz tylko SD1, nie dostaniesz MBR. Istnieje wiele narzędzi, które w razie potrzeby zaktualizują MBR. Zwykle ma już kod do wyszukania rekordu rozruchowego.
BillThor,
1

Myślę, że nie ma realnej opcji wykonania niezawodnej kopii zapasowej działającego systemu na poziomie urządzenia: Twój system plików zostałby zbyt uszkodzony, ponieważ nie można zatrzymać bieżącego stanu, a operacja tworzenia kopii zapasowej zajmuje dużo czasu.

Możesz jednak wypróbować następujące opcje:

  1. Uruchom system na maszynie wirtualnej. Możesz utworzyć migawkę systemu, a następnie wykonać kopię zapasową tej migawki. Po utworzeniu kopii zapasowej migawkę można łatwo usunąć. To rozwiązuje problemy wymienione powyżej.
  2. Wykonaj kopię zapasową na poziomie systemu plików, a nie na poziomie urządzenia. Mogę polecić do tego rsnapshot.
Vilmantas Baranauskas
źródło
Szukam rozwiązania, które pozwala wykonać kopię zapasową systemu bez jego wyłączania. Niezależnie od zastosowanej metody, system musi być uruchomiony. Jeśli wystarczy skopiować tylko system plików, aby skopiować system, rsync wykona zadanie, co przynosi rsnapshot?
Gaël Barbin,
rsnapshot zapewnia tyle przyrostowych kopii zapasowych, ile potrzebujesz (co godzinę, codziennie, co tydzień, co miesiąc), a kopie zapasowe są dostępne w zwykłej pełnej strukturze katalogów, mimo że są przyrostowe.
Vilmantas Baranauskas