Mała dygresja: ten LR jest syntetyczny.
Niektóre z opisanych tutaj zadań można wykonać znacznie prościej, ale przecież zadaniem l/r jest poznanie
z funkcjonalnością raid i lvm, niektóre operacje są sztucznie skomplikowane.
Wymagania dotyczące narzędzi do wykonywania LR:
Narzędzia do wirtualizacji, takie jak Virtualbox
Na przykład obraz instalacyjny systemu Linux Debiana9
Dostępność Internetu do pobrania kilku pakietów
Połącz się przez ssh z zainstalowaną maszyną wirtualną (opcjonalnie)
UWAGA
Ta praca laboratoryjna związana jest z tak subtelną materią jak bezpieczeństwo danych – jest to obszar, w którym
co pozwala stracić wszystkie dane w wyniku najmniejszego błędu - jednej dodatkowej litery lub cyfry.
Ponieważ wykonujesz pracę laboratoryjną, nie jesteś w niebezpieczeństwie, z wyjątkiem tego, że będziesz musiał zacząć to robić od nowa.
W prawdziwym życiu wszystko jest znacznie poważniejsze, dlatego należy bardzo ostrożnie wprowadzać nazwy dysków, rozumiejąc
co dokładnie robisz za pomocą bieżącego polecenia i z jakimi dyskami pracujesz.
Drugą ważną kwestią jest nazewnictwo dysków i partycji: w zależności od sytuacji numery dysków mogą się różnić
z tych wartości, które są prezentowane w poleceniach w pracy laboratoryjnej.
Czyli np. jeśli usuniesz dysk sda z macierzy i następnie dodasz nowy dysk, nowy dysk zostanie wyświetlony
w systemie o nazwie sda. Jeśli uruchomisz ponownie komputer przed dodaniem nowego dysku, plik new
dysk zostanie nazwany sdb, a stary będzie nosił nazwę sda
Laboratorium należy uruchomić jako superużytkownik (root), ponieważ wymaga tego większość poleceń
podwyższone uprawnienia i nie ma sensu ciągłego zwiększania uprawnień za pośrednictwem sudo
Materiały do nauki
RAID
LVM
Nazewnictwo dysków w systemie operacyjnym Linux
Co to jest sekcja
Co to jest tablica partycji i gdzie jest przechowywana?
Co to jest gruba
Używane narzędzia
1) wyświetl informacje o dysku
lsblk -o NAZWA, ROZMIAR, TYP FS, TYP, PUNKT MONTAŻU
fdisk -l
2) przeglądanie informacji i praca z LVM
pv
pvextend
utwórz
zmieńrozmiar
bdb
vgreduce
lv
przedłużyć
3) przeglądanie informacji i praca z RAID
kot /proc/mdstat
mtadm
4) punkty mocowania
uchwyt
umount
kot /etc/fstab
kot /etc/mtab
5) ponowna partycja dysku
fdysk /dev/XXX
6) kopiowanie partycji
dd if=/dev/xxx z=/dev/yyy
7) praca z tablicą partycji
część
sfdysk
mkfs.ext4
8) praca z bootloaderem
grub-install /dev/XXX
aktualizacja-grub
9) różne
lsof
trafny
rsync
Praca laboratoryjna składa się z 3 części:
konfiguracja działającego systemu przy użyciu lvm, raid
emulacja jednej z awarii dysku
wymiana dysków na bieżąco, dodawanie nowych dysków i przenoszenie partycji.
Zadanie 1 (instalacja systemu operacyjnego i konfiguracja LVM, RAID)
1) Utwórz nową maszynę wirtualną, nadając jej następujące cechy:
1 gb ram
1 cpu
2 dyski twarde (nazwij je ssd1, ssd2 i przypisz równe rozmiary, zaznacz pola hot swap i ssd)
Kontroler SATA skonfigurowany na 4 porty
2) Rozpocznij instalację Linuksa, a kiedy dojdziesz do wyboru dysków twardych, wykonaj następujące czynności:
Metoda partycjonowania: ręczna, po czym powinieneś zobaczyć ten obrazek:
Konfigurowanie osobnej partycji dla /boot: Wybierz pierwszy dysk i utwórz na nim nową tablicę partycji
Rozmiar partycji: 512M
Punkt montowania: /boot
Powtórz ustawienia dla drugiego dysku, ale ponieważ nie możesz zamontować /boot dwa razy w tym samym czasie, wybierz punkt montowania: brak, ostatecznie otrzymasz następujący komunikat (obrazek z ościeżnicą, zbyt leniwy, aby to powtórzyć):
Konfiguracja RAID:
Wybierz wolne miejsce na pierwszym dysku i skonfiguruj typ partycji jako wolumin fizyczny dla RAID
Wybierz „Zakończ konfigurowanie partycji”
Powtórz dokładnie te same ustawienia dla drugiego dysku, uzyskując następujące wyniki:
Wybierz „Konfiguruj programową macierz RAID”
Utwórz urządzenie MD
Typ programowego urządzenia RAID: Wybierz macierz lustrzaną
Aktywne urządzenia dla macierzy RAID XXXX: Wybierz oba dyski
Urządzenia zapasowe: pozostaw domyślnie 0
Aktywne urządzenia dla macierzy RAID XX: wybierz partycje utworzone w ramach RAID
Po zakończeniu konfigurowania LVM powinieneś zobaczyć następujące informacje:
Układ partycji: wybierz każdy wolumin utworzony w LVM jeden po drugim i ułóż je, na przykład dla roota, w ten sposób:
Użyj jako: ext4
punkt mocowania: /
Wynik oznaczenia partycji root powinien wyglądać następująco:
powtórz operację partycjonowania dla var i log, wybierając odpowiednie punkty podłączenia (wpisane ręcznie /var i /var/log), uzyskując następujący wynik:
Wybierz opcję Zakończ partycjonowanie
Zostaniesz zadany kilka pytań dotyczących faktu, że nadal masz niezamontowaną partycję, a zamiana nie jest skonfigurowana. Na oba pytania należy odpowiedzieć przecząco.
Ostateczny wynik powinien wyglądać następująco:
3) Zakończ instalację systemu operacyjnego, instalując Gruba na pierwszym urządzeniu (sda) i uruchom system.
4) Skopiuj zawartość partycji /boot z dysku sda (ssd1) na dysk sdb (ssd2)
Wypisz wszystkie dyski, które dało ci poprzednie polecenie i opisz, jaki to rodzaj dysku
Znajdź dysk, na którym nie został zainstalowany Grub, i wykonaj tę instalację: grub-install /dev/sdb
wyświetl informacje o bieżącym nalocie za pomocą komendy cat /proc/mdstat i zapisz, co zobaczysz.
spójrz na wynik poleceń: pvs, vgs, lvs, mount i zapisz, co dokładnie widziałeś
Opisz własnymi słowami, co zrobiłeś i jaki wynik uzyskałeś dzięki temu zadaniu.
Po wykonaniu tego zadania zaleca się zapisanie kopii zapasowej folderu lub pliku maszyny wirtualnej
pudełko włóczęgów: https://t.me/bykvaadm/191
Wynik: Maszyna wirtualna z dyskami ssd1, ssd2
Zadanie 2 (Emulacja awarii jednego z dysków)
1) Jeśli zaznaczyłeś pole wymiany podczas pracy, możesz usuwać dyski w locie
Usuń dysk ssd1 we właściwościach komputera
Znajdź katalog, w którym przechowywane są pliki maszyny wirtualnej i usuń plik ssd1.vmdk
2) Upewnij się, że maszyna wirtualna nadal działa
3) Uruchom ponownie maszynę wirtualną i upewnij się, że nadal działa
4) sprawdź stan macierzy RAID: cat /proc/mdstat
5) dodaj nowy dysk o tym samym rozmiarze w interfejsie VM i nazwij go ssd3
6) wykonać operacje:
sprawdź, czy nowy dysk przybył do systemu, używając fdisk -l
skopiuj tablicę partycji ze starego dysku na nowy: sfdisk -d /dev/XXXX | sfdisk /dev/RRRR
spójrz na wynik, używając fdisk -l
Dodaj nowy dysk do macierzy raid: mdadm —manage /dev/md0 —add /dev/YYY
Spójrz na wynik: cat /proc/mdstat. Powinieneś zobaczyć, że synchronizacja się rozpoczęła
7) Teraz musisz ręcznie zsynchronizować partycje, które nie są częścią RAID.
Aby to zrobić, użyjemy narzędzia dd, kopiując z dysku „na żywo” na nowy, który niedawno zainstalowałeś
dd if=/dev/XXX of=/dev/YYY
8) Po zakończeniu synchronizacji zainstaluj Gruba na nowym dysku
9) Uruchom ponownie maszynę wirtualną, aby upewnić się, że wszystko działa
Opisz własnymi słowami, co zrobiłeś i jaki wynik uzyskałeś dzięki temu zadaniu.
Wynik: Usunięto dysk ssd1, zapisano dysk ssd2, dodano dysk ssd3.
Zadanie 3 (Dodawanie nowych dysków i przenoszenie partycji)
Jest to najbardziej złożone i obszerne zadanie ze wszystkich przedstawionych.
Sprawdź bardzo dokładnie, co robisz i z jakimi dyskami i partycjami.
Zaleca się wykonanie kopii przed uruchomieniem.
Zadanie to jest niezależne od zadania nr 2, można je wykonać po zadaniu nr 1, dostosowanym do nazw dysków.
Druga część tego zadania laboratoryjnego powinna doprowadzić do dokładnie takiego samego stanu, jaki był po ukończeniu pierwszej części.
Aby ułatwić Ci pracę, radzę nie usuwać fizycznie dysków z komputera-hosta, a jedynie
odłącz je we właściwościach maszyny. Z punktu widzenia systemu operacyjnego w maszynie wirtualnej będzie to wyglądać dokładnie tak samo, ale można
jeśli coś się stanie, podłącz dysk z powrotem i kontynuuj pracę, cofając o kilka punktów, jeśli
masz problemy. Na przykład mogłeś zrobić to niepoprawnie lub zapomnieć o skopiowaniu partycji /boot na nowy dysk.
Mogę tylko doradzić, abyś kilkakrotnie lub nawet lepiej sprawdził, z którymi dyskami i partycjami pracujesz
Zapisz na kartce papieru zgodność między dyskami, partycjami i „fizycznym” numerem dysku. Piękne i czyste drzewo
remisy drużynowe lsblk, używaj go tak często, jak to możliwe, aby przeanalizować, co zrobiłeś i co należy zrobić.
Do historii...
Wyobraź sobie, że Twój serwer działa już dłuższy czas na 2 dyskach SSD, gdy nagle...
1) Zasymuluj awarię dysku ssd2, usuwając dysk z właściwości maszyny wirtualnej i uruchamiając ponownie
2) Wyświetl aktualny stan dysków i macierzy RAID:
5) Przede wszystkim należy zadbać o bezpieczeństwo danych znajdujących się na starym dysku.
Tym razem będziemy przesyłać dane za pomocą LVM:
Przede wszystkim musisz skopiować tabelę plików ze starego dysku na nowy:
sfdisk -d /dev/XXX | sfdisk /dev/YYY
Zastąp odpowiednie dyski x, y i dowiedz się, co robi to polecenie.
Uruchom lsblk -o NAZWA, ROZMIAR, FSTYPE, TYPE, MOUNTPOINT i porównaj wynik z poprzednim wywołaniem.
Co się zmieniło?
użyj polecenia dd, aby skopiować dane /boot na nowy dysk
dd if=/dev/XXX of=/dev/YYY
jeśli /boot pozostał zamontowany na starym dysku, należy go ponownie zamontować na aktywnym dysku:
mount | grep boot # смотрим куда смонтирован диск
lsblk # смотрим какие диски есть в системе и смотрим есть ли диск, полученный из предыдущего пункта
umount /boot # отмонтируем /boot
mount -a # выполним монтирование всех точек согласно /etc/fstab.
# Поскольку там указана точка монтирования /dev/sda, то будет выполнено корректное перемонтирование на живой диск
Zainstaluj program ładujący na nowym dysku SSD
grub-install /dev/YYY
Dlaczego wykonujemy tę operację?
utwórz nową macierz RAID zawierającą tylko jeden nowy dysk SSD:
Powyższe polecenie nie będzie działać bez określenia specjalnego klucza.
Przeczytaj pomoc i dodaj ten klucz do polecenia.
Użyj polecenia cat /proc/mdstat, aby sprawdzić wynik swojej operacji. Co się zmieniło?
Uruchom lsblk -o NAZWA, ROZMIAR, FSTYPE, TYPE, MOUNTPOINT i porównaj wynik z poprzednim wywołaniem.
Co się zmieniło?
6) Następnym krokiem jest konfiguracja LVM
uruchom komendę pvs, aby wyświetlić informacje o bieżących woluminach fizycznych
utwórz nowy wolumin fizyczny zawierający wcześniej utworzoną macierz RAID:
pvcreate /dev/md63
Uruchom lsblk -o NAZWA, ROZMIAR, FSTYPE, TYPE, MOUNTPOINT i porównaj wynik z poprzednim wywołaniem.
Co się zmieniło?
Uruchom ponownie polecenie pvs. Co się zmieniło?
Zwiększmy rozmiar systemu grupy woluminów za pomocą następującego polecenia:
vgextend system /dev/md63
Uruchom polecenia i zapisz, co widziałeś i co się zmieniło.
vgdisplay system -v
pvs
vgs
lvs -a -o+devices
Na jakim dysku fizycznym aktualnie znajduje się LV var,log,root?
Przenieś dane ze starego dysku na nowy, używając poprawnych nazw urządzeń.
Powtórz operację dla wszystkich woluminów logicznych
Uruchom polecenia i zapisz, co widziałeś i co się zmieniło.
vgdisplay system -v
pvs
vgs
lvs -a -o+devices
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Zmieńmy nasze VG usuwając z niego stary dysk raid. Zastąp poprawną nazwę rajdu.
vgreduce system /dev/md0
Uruchom polecenia i zapisz, co widziałeś i co się zmieniło.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
pvs
vgs
Aby obraz był piękniejszy, zamontuj /boot na drugim dysku SSD (ssd4) i uruchom lsblk. W rezultacie dysk ssd3 nie
nic nie powinno być montowane. Sprawdź dokładnie, czy partycja /boot nie jest pusta! ls /boot musisz pokazać
kilka plików i folderów. Przestudiuj, co jest przechowywane w tej sekcji i zapisz, który katalog plików jest za co odpowiedzialny.
7) usuń dysk ssd3 i dodaj ssd5, hdd1, hdd2 zgodnie ze specyfikacją techniczną opisaną powyżej, co spowoduje:
ssd4 - pierwszy nowy dysk ssd
ssd5 - drugi nowy dysk ssd
hdd1 - pierwszy nowy dysk twardy
hdd2 - drugi nowy dysk twardy
Należy pamiętać, że kiedy kopiowaliśmy tablicę partycji ze starego dysku, wydawało się, że ma nowy rozmiar
nie wykorzystuje całej pojemności dysku twardego.
Dlatego wkrótce będziemy musieli zmienić rozmiar tej partycji i rozszerzyć nalot.
Przekonaj się sam, uruchamiając polecenie:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
10) skopiuj partycję rozruchową /boot z ssd4 na ssd5
dd if=/dev/XXX of=/dev/YYY
11) Zainstaluj Gruba na nowym dysku (ssd5)
12) zmień rozmiar drugiej partycji dysku ssd5
uruchom narzędzie do partycjonowania dysku:
fdisk /dev/XXX
wprowadź klawisz d, aby usunąć istniejącą partycję (wybierz 2)
wprowadź klawisz n, aby utworzyć nową partycję
wprowadź klawisz p, aby wskazać typ partycji „podstawowy”
wprowadź klucz 2, aby nowa partycja miała drugi numer
Pierwszy sektor: naciśnij Enter, aby zaakceptować automatycznie obliczony rozmiar początku partycji
Ostatni sektor: naciśnij Enter, aby zaakceptować automatycznie obliczony rozmiar końca partycji
wprowadź klawisz l, aby zobaczyć listę wszystkich możliwych typów partycji i znaleźć w niej Linux Raid Auto
wprowadź klawisz t, aby zmienić typ utworzonej partycji (2) i wprowadź numer znaleziony w poprzednim kroku.
wprowadź klawisz w, aby zapisać zmianę na dysku.
12) Przeczytaj ponownie tablicę partycji i sprawdź wynik
dodaj nowy dysk do aktualnej macierzy raid (nie zapomnij zastąpić odpowiednich dysków)
mdadm --manage /dev/md63 --add /dev/sda2
Zwiększmy liczbę dysków w naszej macierzy do 2:
mdadm --grow /dev/md63 --raid-devices=2
Spójrz na wynik: mamy zaznaczone 2 tablice, ale obie sekcje zawarte w tej tablicy mają różne rozmiary
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
13) zwiększ rozmiar partycji na dysku ssd4
uruchom narzędzie do partycjonowania dysku:
fdisk /dev/XXX
wprowadź klawisz d, aby usunąć istniejącą partycję (wybierz 2)
wprowadź klawisz n, aby utworzyć nową partycję
wprowadź klawisz p, aby wskazać typ partycji „podstawowy”
wprowadź klucz 2, aby nowa partycja miała drugi numer
Pierwszy sektor: naciśnij Enter, aby zaakceptować automatycznie obliczony rozmiar początku partycji
Ostatni sektor: naciśnij Enter, aby zaakceptować automatycznie obliczony rozmiar końca partycji
Na końcu znacznika wybierz opcję Nie, aby pozostawić podpis przynależności partycji do tablicy.
wprowadź klawisz w, aby zapisać zmianę na dysku.
12) Przeczytaj ponownie tablicę partycji i sprawdź wynik
Utwórzmy wolumin logiczny o rozmiarze całego wolnego miejsca i nazwijmy go val_log
lvcreate -l 100%FREE -n var_log data # lvs # посмотрим результат
sformatuj utworzoną partycję w ext4
mkfs.ext4 /dev/mapper/data-var_log
zobaczmy wynik
lsblk
17) przenieść dane logu ze starej partycji na nową
tymczasowo zainstaluj nowy magazyn dzienników
mount /dev/mapper/data-var_log /mnt
zsynchronizujmy partycje
apt install rsync
rsync -avzr /var/log/ /mnt/
Dowiedzmy się, które procesy są aktualnie uruchomione w /var/log
apt install lsof
lsof | grep '/var/log'
zatrzymać te procesy
systemctl stop rsyslog.service syslog.socket
wykonać ostateczną synchronizację partycji (dane, które mogły ulec zmianie od ostatniej synchronizacji)
rsync -avzr /var/log/ /mnt/
zamień sekcje
umount /mnt
umount /var/log
mount /dev/mapper/data-var_log /var/log
sprawdźmy co się stało
lsblk
18) Edytuj plik /etc/fstab
fstab - plik rejestrujący zasady, według których partycje będą montowane podczas rozruchu
naszym zadaniem jest znaleźć linię, w której zamontowany jest /var/log i naprawić urządzenie system-log na data-var_log
19) Najważniejszą rzeczą na tym etapie jest, aby nie zapomnieć o zmianie tabeli radela (na przykład ext4). Ponieważ niezależnie od tego jak zmienimy dowolny nalot, lvm, dopóki FS na partycji nie zostanie powiadomiony, że rozmiar partycji się zmienił, nie będziemy mogli wykorzystać nowej przestrzeni. Użyj polecenia resize2fs zmienić FS.
20) Końcowy akord
Uruchommy ponownie. Jeśli wszystko zrobiłeś poprawnie, zostaniesz przeniesiony z powrotem do systemu operacyjnego (jest to konieczne, aby upewnić się, że wszystko działa. Ten krok nie ma innego znaczenia niż samotestowanie)
sprawdź, czy wszystko, co chcieliśmy zrobić, zostało rzeczywiście zrobione:
pvs
lvs
vgs
lsblk
cat /proc/mdstat
21) [OPCJONALNIE] Postępuj zgodnie z instrukcjami
uruchom ponownie komputer, naciskając klawisz F12, aby określić inne dyski podczas uruchamiania i upewnić się, że możesz uruchomić komputer
z dowolnego z dysków SSD, dzięki czemu nie obawiamy się awarii któregoś z nich
teraz masz niepotrzebne logowanie LV w systemie VG. Przydziel tę przestrzeń między rootem lub var, ale zamiast używać
projekty 100% ZA DARMO podaj rozmiar ręcznie za pomocą klawisza -L:
-L 500M
napraw problem polegający na tym, że /boot znajduje się na dwóch partycjach bez synchronizacji, nie ma potrzeby robienia tego poprawnie,
zostało to dodane tutaj jako przykład. Nie zapomnij najpierw skopiować gdzieś zawartości /boot.
utwórz nowy nalot i umieść w nim sda1, sda2
dodaj te partycje do istniejącego raidu i przywróć /boot do głównego raidu, ale bez jego montowania.