Jak wykonać kopię zapasową i przywrócić serwer za pomocą obrazów dysku dd
dd tworzy obraz całego dysku sektor po sektorze. Za pomocą tego obrazu można przywrócić dysk do stanu, w jakim znajdował się w momencie wykonywania kopii zapasowej. Ten poradnik pokazuje, jak utworzyć obraz dysku za pomocą dd oraz jak go przywrócić. Ponieważ dd działa na poziomie dysku, uruchamiaj je ze środowiska live (Finnix), a nie z działającego systemu, który kopiujesz.
Używaj dd, gdy potrzebujesz kopii całego dysku na poziomie bloków. Do kopii zapasowych na poziomie plików (pojedyncze pliki i foldery) zazwyczaj lepiej sprawdzają się rsync lub tar.
Zanim zaczniesz
- ISO Finnix
- dostęp do IP-KVM serwera (KVM oparty na IP)
- miejsce do przechowywania z wystarczającą ilością wolnego miejsca na obraz (patrz uwaga w scenariuszach kopii zapasowej)
- dane uwierzytelniające SSH, jeśli wykonujesz kopię zapasową do zdalnego magazynu
- dostęp root
1. Krótka uwaga o dd
dd kopiuje dane blok po bloku. Istotne części polecenia:
- if= źródło (skąd odczytujemy)
- of= cel (gdzie zapisujemy)
- bs=8M ustawia rozmiar bloku i może poprawić wydajność kopiowania
- status=progress pokazuje, ile już skopiowano, przydatne przy dużych dyskach
Domyślnie poniższe polecenia kopiują sprawny dysk. Jeśli dysk źródłowy ma błędy odczytu, dodaj conv=noerror,sync: dd będzie wtedy kontynuować mimo błędów odczytu zamiast się zatrzymywać, a nieczytelne bloki wypełni zerami. Zachowuje to wyrównanie kolejnych bloków, ale wypełnione obszary tracą dane, przez co system plików w obrazie może zostać uszkodzony. W przypadku uszkodzonego dysku rozważ użycie ddrescue, zaprojektowanego do odzyskiwania danych z uszkodzonych dysków i prowadzącego mapę błędów odczytu.
dd całkowicie nadpisuje cel bez pytania o potwierdzenie. Błędny parametr of= niszczy dane. Zawsze sprawdzaj nazwy urządzeń przed uruchomieniem jakiegokolwiek polecenia.
2. Przygotowanie
Uruchom system z Finnix. Zamontuj ISO Finnix przez IP-KVM i uruchom z niego serwer. Dzięki temu możesz pracować z dyskami serwera bez uruchamiania zainstalowanego systemu operacyjnego z dysku, którego kopię zapasową wykonujesz. Unikaj tworzenia obrazu działającego systemu: jeśli dysk źródłowy ma zamontowane systemy plików, które są modyfikowane, obraz może być niespójny. Upewnij się, że dysk źródłowy nie jest używany przez działające środowisko.
Zidentyfikuj dyski. Wyświetl listę dysków wraz z ich rozmiarami i punktami montowania:
lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS
Alternatywnie:
fdisk -l
Znajdź dysk systemowy (na przykład /dev/sda) i zanotuj jego nazwę urządzenia. To najważniejszy krok: dd nie prosi o potwierdzenie, więc pomyłka tutaj skasuje niewłaściwy dysk. W poniższych poleceniach /dev/sda jest tylko przykładem. Zastąp go rzeczywistym dyskiem zidentyfikowanym za pomocą lsblk. Przed utworzeniem obrazu upewnij się, że dysk źródłowy nie ma żadnych punktów montowania w wynikach polecenia lsblk.

3. Scenariusz A: kopia zapasowa do magazynu w chmurze przez SSHFS (CloudBox)
Użyj tej metody, aby zapisać obraz w INTROSERV CloudBox lub dowolnym magazynie SSH. Dane uwierzytelniające SSH (użytkownik, host, ścieżka) znajdziesz w szczegółach zamówienia.
Utwórz punkt montowania:
mkdir -p /mnt/backup
Zamontuj magazyn w chmurze:
sshfs user@host:/path /mnt/backup
Utwórz obraz dysku:
dd if=/dev/sda of=/mnt/backup/sda.img bs=8M status=progress
Po zakończeniu dd zgłasza, ile danych skopiowano. Obraz sda.img znajduje się teraz w Twoim magazynie w chmurze.
Duża kopia przez SSHFS może być wolna. Jeśli połączenie SSH zostanie przerwane, kopiowanie może się nie powieść, a obraz może być niekompletny.
Rozmiar obrazu odpowiada w przybliżeniu rozmiarowi całego dysku źródłowego, a nie ilości wykorzystanych danych. Dysk 2 TB zawierający 100 GB danych i tak utworzy obraz o rozmiarze około 2 TB. Upewnij się, że magazyn ma wystarczająco dużo wolnego miejsca.
Opcjonalnie: aby zaoszczędzić miejsce i zmniejszyć transfer sieciowy, skompresuj obraz podczas jego tworzenia:
dd if=/dev/sda bs=8M status=progress | gzip -c > /mnt/backup/sda.img.gz
Przywróć skompresowany obraz za pomocą:
gunzip -c /mnt/backup/sda.img.gz | dd of=/dev/sda bs=8M status=progress
Rozmiar po kompresji zależy od tego, jak dobrze kompresowalna jest zawartość dysku. Poniższa weryfikacja sumy kontrolnej dotyczy nieskompresowanego pliku .img.
4. Scenariusz B: kopia zapasowa na inny dysk fizyczny w tym samym serwerze
Użyj tej metody, jeśli serwer ma drugi dysk (na przykład /dev/sdb) wystarczająco duży, aby pomieścić obraz. Dysk docelowy musi mieć wystarczającą ilość wolnego miejsca na obraz całego dysku źródłowego i nie może być dyskiem źródłowym.
Utwórz punkt montowania i zamontuj drugi dysk:
mkdir -p /mnt/backup mount /dev/sdb1 /mnt/backup
Utwórz obraz dysku:
dd if=/dev/sda of=/mnt/backup/sda.img bs=8M status=progress
5. Weryfikacja obrazu (opcjonalnie)
Aby zweryfikować obraz, oblicz sumę kontrolną SHA-256 dysku źródłowego i obrazu, a następnie je porównaj. Dysk źródłowy nie może się zmienić między utworzeniem obrazu a obliczeniem sumy kontrolnej. Operacja ta ponownie odczytuje cały dysk, więc na dużych dyskach zajmuje to trochę czasu:
sha256sum /dev/sda sha256sum /mnt/backup/sda.img
Obie wartości powinny się zgadzać.
6. Przywracanie
Przywracanie jest odwrotnością tworzenia kopii zapasowej: obraz staje się źródłem (if=), a dysk staje się celem (of=). Uruchom ponownie system z Finnix i zamontuj magazyn zawierający obraz, tak samo jak podczas tworzenia kopii zapasowej.
Przed przywróceniem upewnij się, że dysk docelowy nie jest mniejszy niż oryginalny. Obrazu całego dysku nie można przywrócić na mniejszy dysk, nawet jeśli na dysku źródłowym wykorzystano niewiele danych.
Z magazynu w chmurze:
dd if=/mnt/backup/sda.img of=/dev/sda bs=8M status=progress
Z drugiego dysku: najpierw go zamontuj, a następnie uruchom to samo polecenie. Tutaj również /dev/sda jest tylko przykładem. Zastąp go rzeczywistym dyskiem docelowym.
Przywracanie nadpisuje cały dysk docelowy. Upewnij się, że parametr of= wskazuje na dysk, który chcesz przywrócić. Po zakończeniu działania dd uruchom ponownie serwer i uruchom go z przywróconego dysku.
Jeśli dysk docelowy jest większy niż oryginalny, dodatkowa przestrzeń pozostaje nieużywana. W razie potrzeby możesz później rozszerzyć partycję i system plików; dokładne polecenia zależą od układu partycji i systemu plików. Jeśli przywracasz na inny sprzęt, może być wymagana dodatkowa konfiguracja rozruchu. Jeśli dysk źródłowy korzysta z LVM, LUKS, RAID lub innej warstwy magazynowania, po przywróceniu może być wymagana dodatkowa konfiguracja, zwłaszcza na innym sprzęcie.