Malé odbočení: tato laboratoř je syntetická.
Některé úkoly popsané zde lze provést mnohem jednodušeji, ale protože úkolem laboratoře je seznámit se
s funkcionalitou RAID a LVM, jsou některé operace uměle zkomplikovány.
Požadavky na nástroje pro provedení laboratoře:
- Nástroje virtualizace, například VirtualBox
- Instalační obraz Linuxu, například
- Připojení k internetu pro stažení několika balíčků
- Připojení přes SSH k nainstalované VM (volitelné)
POZOR
Tato laboratorní práce se týká tak citlivé záležitosti, jako je uchování dat — jedná se o oblast,
která může v důsledku nejmenší chyby — jedním nadbytečným písmenem nebo číslem — ztratit všechna vaše data.
Protože vykonáváte laboratorní práci, nehrozí vám žádné nebezpečí, ledaže byste ji museli začít znovu.
V reálném životě je vše mnohem závažnější, proto je třeba velmi pečlivě zadávat názvy disků, chápat
co právě vykonáváte aktuálním příkazem a s jakými disky pracujete.
Druhý důležitý moment — pojmenování disků a oddílů: v závislosti na situaci se čísla disků mohou lišit
od těch hodnot, které jsou uvedeny v příkazech v laboratorní práci.
Například, pokud odstraníte disk sda z pole a poté přidáte nový disk, nový disk se zobrazí
v systému pod názvem sda. Pokud však provedete restart před přidáním nového disku, nový
disk ponese název sdb, zatímco starý se bude jmenovat sda.
Laboratorní práce by měla být prováděna jako superuživatel (root), protože většina příkazů vyžaduje
zvýšená práva a nemá smysl neustále získávat oprávnění přes sudo.
Materiály pro studium
- RAID
- LVM
- Pojmenování disků v OS Linux
- Co je to oddíl
- Co je to tabulka oddílů a kde je uložena
- Co je to GRUB
Používané utility
1) prohlížení informací o discích
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
- fdisk -l
2) prohlížení informací a práce s LVM - pvs
- pvextend
- pvcreate
- pvresize
- vgs
- vgreduce
- lvs
- lvextend
3) prohlížení informací a práce s RAID - cat /proc/mdstat
- mdadm
4) body připojení - mount
- umount
- cat /etc/fstab
- cat /etc/mtab
5) přečtení disku - fdisk /dev/XXX
6) kopírování oddílů - dd if=/dev/xxx of=/dev/yyy
7) práce s tabulkou oddílů - partx
- sfdisk
- mkfs.ext4
8) práce se zaváděčem - grub-install /dev/XXX
- update-grub
9) různé - lsof
- apt
- rsync
Laboratorní práce se skládá ze 3 částí:
- nastavení funkčního systému pomocí lvm, raid
- emulace selhání jednoho z disků
- výměna disků za chodu, s přidáním nových disků a přesunem oddílů.
Úkol 1 (Instalace OS a nastavení LVM, RAID)
1) Vytvořte novou virtuální stroj a přiřaďte mu následující vlastnosti:
- 1 gb ram
- 1 cpu
- 2 hdd (pojmenujte je ssd1, ssd2 a přiřaďte stejnou velikost, zaškrtněte hot swap a ssd)
- SATA řadič nastaven na 4 porty

2) Začněte instalaci Linuxu a při výběru pevných disků proveďte následující:
Způsob partitioning: ruční, po čemž byste měli vidět následující obraz:

Nastavení samostatného oddílu pro /boot: Vyberte první disk a vytvořte na něm novou tabulku oddílů
- Velikost oddílu: 512M
- Bod připojení: /boot
- Opakujte nastavení pro druhý disk, ale protože není možné současně připojit 2x /boot, vyberte bod připojení: none a nakonec získáte následující (obrázek s chybou, oprava je lenost):

Nastavení RAID:
- Vyberte volné místo na prvním disku a nastavte jako typ oddílu fyzické volume pro RAID
- Vyberte „Hotovo s nastavením oddílu“
- Opakujte přesně stejnou konfiguraci pro druhý disk, v důsledku čehož získáte následující:

- Vyberte možnost „Konfigurovat softwarový RAID“
- Vytvořit MD zařízení
- Typ softwarového RAID zařízení: Vyberte zrcadlový svazek
- Aktivní zařízení pro RAID XXXX pole: Vyberte oba disky
- Náhradní zařízení: Nechat 0 jako výchozí
- Aktivní zařízení pro RAID XX pole: vyberte oddíly, které jste vytvořili pro raid
- Dokončit
- Nakonec byste měli získat takový obraz:

Nastavení LVM: Vyberte Konfigurovat správce logických objemů
- Udržet aktuální rozložení oddílů a konfigurovat LVM: Ano
- Vytvořit skupinu objemů
- Název skupiny objemů: systém
- Zařízení pro novou skupinu objemů: Vyberte váš vytvořený RAID
- Vytvořit logický objem
- název logického objemu: root
- velikost logického objemu: 25 od velikosti vašeho disku
- Vytvořit logický objem
- název logického objemu: var
- velikost logického objemu: 25 od velikosti vašeho disku
- Vytvořit logický objem
- název logického objemu: log
- velikost logického objemu: 15 od velikosti vašeho disku
- Po výběru Zobrazit podrobnosti konfigurace byste měli získat následující obraz:

- Jakmile dokončíte nastavení LVM, měli byste vidět následující:

Rozdělení oddílů: po sobě jdoucím vyberte každý vytvořený objem v LVM a rozdělujte je, například pro root takto:
- Použít jako: ext4
- bod připojení: /
- výsledek rozložení kořenového oddílu by měl vypadat takto:

- opakujte rozdělovací operaci pro var a log, vyberte odpovídající body připojení (/var a /var/log ručně zadejte), získáte následující výsledek:

- Vyberte Dokončit rozdělování
- Bude vám položeno několik otázek o tom, že máte nesmontovaný oddíl a nenastavený swap. Měli byste odpovědět záporně na obě otázky.
Konečný výsledek by měl vypadat takto:

3) Dokončete instalaci operačního systému tím, že nainstalujete grub na první zařízení (sda) a načtete systém.
4) Zkopírujte obsah oddílu /boot z disku sda (ssd1) na disk sdb (ssd2)dd if=/dev/sda1 of=/dev/sdb15) Nainstalujte grub na druhé zařízení:
zobrazit disky v systému:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTUveďte všechny disky, které vám dala předchozí příkaz, a popište, co je to za disk
Najděte disk, na který nebyl nainstalován grub, a proveďte tuto instalaci:
grub-install /dev/sdbzkontrolujte informace o aktuálním raidu příkazem cat /proc/mdstat a zapisujte, co jste viděli.
zkontrolujte výstupy příkazů: pvs, vgs, lvs, mount a zapište, co jste konkrétně viděli
Popište svými slovy, co jste udělali a jaký výsledek jste získali z provedeného úkolu
Po dokončení tohoto úkolu se doporučuje uložit zálohu složky s virtuálním strojem nebo udělat
vagrant box:
Výsledek: Virtuální stroj s disky ssd1, ssd2
Úkol 2 (Emulace selhání jednoho z disků)
1) Pokud jste zaškrtli hot swap, pak máte možnost odstranit disky za chodu
- Provádějte odstranění disku ssd1 v nastavení stroje
- Najděte adresář, kde jsou uloženy soubory vašeho virtuálního stroje, a odstraňte ssd1.vmdk
2) Ujistěte se, že váš virtuální stroj stále funguje
3) Restartujte virtuální stroj a ujistěte se, že stále funguje
4) Zkontrolujte stav RAID pole: cat /proc/mdstat
5) Přidejte v rozhraní VM nový disk stejné velikosti a pojmenujte ho ssd3
6) proveďte operace: - zkontrolujte, že nový disk je v systému pomocí příkazu fdisk -l
- zkopírujte tabulku oddílů ze starého disku na nový: sfdisk -d /dev/XXXX | sfdisk /dev/YYY
- zkontrolujte výsledek pomocí příkazu fdisk -l
- Přidejte do raidového pole nový disk: mdadm —manage /dev/md0 —add /dev/YYY
- Podívejte se na výsledek: cat /proc/mdstat. Měli byste vidět, že začala synchronizace
7) Nyní je třeba ručně provést synchronizaci oddílů, které nejsou součástí RAID.
K tomu použijeme utilitu dd, kterou zkopírujeme z „živého“ disku na nový, který jste nedávno připojilidd if=/dev/XXX of=/dev/YYY8) Po dokončení synchronizace nainstalujte grub na nový disk
9) Restartujte VМ, abyste se ujistili, že všechno funguje
Popište svými slovy, co jste udělali a jaký výsledek jste získali z provedeného úkolu
Výsledek: Disk ssd1 byl odstraněn, disk ssd2 byl zachován, disk ssd3 byl přidán.Úkol 3 (Přidání nových disků a přesun oddělení)
Tohle je nejtěžší a nejnáročnější úkol ze všech uvedených.
Velmi pečlivě kontrolujte, co děláte a s jakými disky a odděleními.
Doporučuje se udělat zálohu před jeho provedením.
Tento úkol je nezávislý na úkolu č. 2, lze ho provádět po úkolu č. 1 s ohledem na názvy disků.
Druhá část úkolu této laboratoře by měla vést k přesně takovému stavu, který byl po dokončení první části.Abych vám usnadnil práci, doporučuji fyzicky nemazat disky z hostitelské mašiny, ale pouze je
odpojit v nastavení stroje. Z pohledu OS nebude ve VM vypadat vůbec jinak, ale budete moci
v případě potřeby disk znovu připojit a pokračovat v práci, pokud jste narazili na nějaké problémy. Například jste mohli provést chybu nebo zapomenout zkopírovat oddělení /boot na nový disk.
Mohu jen doporučit několikrát zkontrolovat, s jakými disky a odděleními pracujete, a ještě lépe
si napsat na papír odpovídající disky, oddělení a „fyzické“ číslo disku. Krásné a přehledné stromové
zobrazení vykresluje příkaz
, používejte ho co nejčastěji k analýze toho, co jste udělali a co je třeba udělat.lsblkK historii…Představte si, že váš server dlouho běžel na dvou SSD discích, když najednou…
1) Emulujte selhání disku SSD2, odstraněním disku z nastavení VM a restartováním.
2) Podívejte se na aktuální stav disků a RAID:
cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT3) Měli jste štěstí – vedení povolilo zakoupit několik nových disků:2 SATA disky velké kapacity pro dlouho plánovanou úlohu vyčlenění oddělení s logy na samostatný disk
2 SSD jako náhradu za poškozený a také za ještě fungující disk.
Je třeba mít na paměti, že koš
podporuje instalaci pouze 4 disků současně, serveru takže nelze přidat všechny disky najednou.
Kapacitu HDD vyberte dvakrát větší než SSD.Kapacitu SSD vyberte 1,25krát větší než bývalé SSD.
4) Přidejte jeden nový SSD disk, pojmenujte ho ssd4, a po přidání zkontrolujte, co se stalo:5) Na prvním místě je třeba se postarat o bezpečnost dat starého disku.
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTTentokrát budeme přesouvat data pomocí LVM:
Tentokrát budeme přesouvat data pomocí LVM:- Nejprve je nutné zkopírovat souborovou tabulku ze starého disku na nový:
sfdisk -d /dev/XXX | sfdisk /dev/YYYNahraďte x, y správnými disky a objasněte, co tato příkaz dělá.
Proveďte příkaz lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT a porovnejte jeho výstup s předchozím voláním.
Co se změnilo?
Pomocí příkazu dd zkopírujte data /boot na nový diskdd if=/dev/XXX of=/dev/YYYPokud /boot zůstal přimontovaný na starém disku, měl by být přimontován na živý disk:
mount | grep boot # podíváme se, kam je disk přimontován lsblk # zjistíme, jaké disky jsou v systému a jestli je zde disk získaný z předchozího bodu umount /boot # odmontujeme /boot mount -a # provedeme montování všech bodů podle /etc/fstab. # Jelikož je tam uvedena montážní bod /dev/sda, dojde k správnému přimontování na živý disk.Nainstalujte zaváděč na nový SSD disk
grub-install /dev/YYYProč provádíme tuto operaci?
Vytvořte nové RAID pole s zahrnutím pouze jednoho nového SSD disku:
mdadm --create --verbose /dev/md63 --level=1 --raid-devices=1 /dev/YYYPříkaz uvedený výše nebude fungovat bez specifikace zvláštního klíče.
Přečtěte si dokumentaci a přidejte tento klíč k příkazu.Pomocí příkazu cat /proc/mdstat zkontrolujte výsledek vaší operace. Co se změnilo?
Proveďte příkaz lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT a porovnejte jeho výstup s předchozím voláním.
Co se změnilo?
6) Dalším krokem je nastavit LVM
Proveďte příkaz pvs pro zobrazení informací o aktuálních fyzických svazcích.
Vytvořte nový fyzický svazek zahrnutím dříve vytvořeného RAID pole:pvcreate /dev/md63Proveďte příkaz lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT a porovnejte jeho výstup s předchozím voláním.
Co se změnilo?
Znovu proveďte příkaz pvs. Co se změnilo?
Zvětšíme velikost Volume Group system pomocí následujícího příkazu:vgextend system /dev/md63Proveďte příkazy a zapište, co jste viděli a co se změnilo.
vgdisplay system -v pvs vgs lvs -a -o+devicesNa kterém fyzickém disku se nyní nacházejí LV var, log, root?
Proveďte přesun dat ze starého disku na nový, nahraďte správné názvy zařízení.
pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63Opakujte operaci pro všechny logické svazky
Proveďte příkazy a zapište, co jste viděli a co se změnilo.
vgdisplay system -v pvs vgs lvs -a -o+devices lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTUpravíme náš VG odstraněním disku starého RAIDu. Nahraďte správným názvem RAID.
vgreduce system /dev/md0Proveďte příkazy a zapište, co jste viděli a co se změnilo.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT pvs vgsPro hezký vzhled přimontujte /boot na druhý SSD disk (ssd4) a proveďte lsblk. Na disku ssd3 by nemělo být nic přimontováno.
Důkladně zkontrolujte, že oddíl /boot není prázdný!ls /bootby měl zobrazit
několik souborů a složek. Prozkoumejte, co se nachází v této sekci, a zapište, jaký souborový adresář za co odpovídá.
7) odstraňte disk ssd3 a přidejte ssd5, hdd1, hdd2 podle výše uvedených specifikací, čímž získáte:
ssd4 — první nový ssd
ssd5 — druhý nový ssd
hdd1 — první nový hdd
hdd2 — druhý nový hdd8) Zkontrolujte, co se stalo po přidání disků:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT9) Obnovíme funkčnost hlavního raid pole:
- proveďte kopírování tabulky oddílů a použijte správné disky:
sfdisk -d /dev/XXX | sfdisk /dev/YYY - Všimněte si, že když jsme zkopírovali tabulku oddílů ze starého disku, ukázalo se, že nový velikost
nevyužívá celý objem pevného disku.
Proto v blízké době budeme muset změnit velikost tohoto oddílu a rozšířit raid.
Ujistěte se o tom sami, zadejte příkaz:lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT10) zkopírujte zaváděcí oddíl /boot z disku ssd4 na ssd5
dd if=/dev/XXX of=/dev/YYY11) Nainstalujte grub na nový disk (ssd5)
12) změníme velikost druhého oddílu disku ssd5spusťte nástroj pro práci s rozdělením disků:
fdisk /dev/XXXzadejte klávesu d pro odstranění stávajícího oddílu (vyberte 2)
zadejte klávesu n pro vytvoření nového oddílu
zadejte klávesu p pro určení typu oddílu jako "primární"
zadejte klávesu 2, aby měl nový oddíl číslo dva
First sector: stiskněte enter pro souhlas s automaticky vypočítanou velikostí začátku oddílu
Last sector: stiskněte enter pro souhlas s automaticky vypočítanou velikostí konce oddílu
zadejte klávesu l pro zobrazení seznamu všech možných typů oddílů a najděte v něm Linux raid auto
zadejte klávesu t pro změnu typu vytvořeného oddílu (2) a zadejte nalezené číslo z předchozího kroku.
zadejte klávesu w pro uložení změn na disk.
12) přečtěte si tabulku oddílů znovu a zkontrolujte výsledekpartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTpřidáme nový disk k aktuálnímu raid poli (nezapomeňte použít správné disky)
mdadm --manage /dev/md63 --add /dev/sda2Zvýšíme počet disků v našem poli na 2 kusy:
mdadm --grow /dev/md63 --raid-devices=2Podívejte se na výsledek: máme rozděleny 2 pole, ale oba oddíly patřící do tohoto pole mají různé velikosti
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT13) zvětšíme velikost oddílu na disku ssd4
spusťte nástroj pro práci s rozdělením disků:
fdisk /dev/XXXzadejte klávesu d pro odstranění stávajícího oddílu (vyberte 2)
zadejte klávesu n pro vytvoření nového oddílu
zadejte klávesu p pro určení typu oddílu jako "primární"
zadejte klávesu 2, aby měl nový oddíl číslo dva
First sector: stiskněte enter pro souhlas s automaticky vypočítanou velikostí začátku oddílu
Last sector: stiskněte enter pro souhlas s automaticky vypočítanou velikostí konce oddílu
Na konci rozdělením je třeba vybrat Ne, aby zůstala podpis příslušnosti oddílu k poli.
zadejte klávesu w pro uložení změn na disk.
12) přečtěte si tabulku oddílů znovu a zkontrolujte výsledekpartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTvšimněte si, že nyní mají oddíly sda2, sdc2 velikost > než velikost raid zařízení.
13) V této fázi můžete nyní zvětšit velikost RAID.
mdadm --grow /dev/md63 --size=max lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # zkontrolujte výsledekPřezkoumejte lsblk a poznamenejte si, co se změnilo.
14) Nicméně, i když jsme změnili velikost RAIDu, velikosti vg root, var, log se nezměnily.- podívejte se, jaká je velikost PV:
pvs - rozšíříme velikost našeho PV:
pvresize /dev/md63 - podívejte se, jaká je velikost PV:
pvs15) Přidáme nově vzniklé místo do VG var, root.
lvs # podívejme se, kolik je nyní přiděleno lvextend -l +50%FREE /dev/system/root lvextend -l +100%FREE /dev/system/var lvs # zkontrolujte, co jste získaliV této fázi jste dokončili migraci primárního pole na nové disky. Práce se ssd1, ssd2 je ukončena.
16) Naším dalším úkolem je přesunout /var/log na nové disky, k tomu vytvoříme novou pole a LVM na HDD discích.
- podívejme se, jaká jména mají nové HDD disky.
fdisk -l - vytvoříme RAID pole.
mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd - vytvoříme nový PV na RAIDu z velkých disků.
pvcreate data /dev/md127 - vytvoříme v tomto PV skupinu s názvem data.
vgcreate data /dev/md127 - vytvoříme logický svazek o velikosti celého volného prostoru a pojmenujeme ho var_log.
lvcreate -l 100%FREE -n var_log data # lvs # podívejme se na výsledek - naformátujeme vytvořenou část v ext4.
mkfs.ext4 /dev/mapper/data-var_log - podívejme se na výsledek.
lsblk17) Přesuneme data logů ze staré části na novou.
dočasně přimountujeme nové úložiště logů.
mount /dev/mapper/data-var_log /mntprovedeme synchronizaci oddílů.
apt install rsync rsync -avzr /var/log/ /mnt/zjistíme, jaké procesy nyní pracují s /var/log.
apt install lsof lsof | grep '/var/log'zastavíme tyto procesy.
systemctl stop rsyslog.service syslog.socketprovedeme finální synchronizaci oddílů (těch dat, která se mohla změnit od poslední synchronizace).
rsync -avzr /var/log/ /mnt/prohodíme oddíly.
umount /mnt umount /var/log mount /dev/mapper/data-var_log /var/logzkontrolujeme, co se podařilo.
lsblk18) Opraveno /etc/fstab
fstab — soubor, v němž jsou zaznamenána pravidla, podle nichž budou při spuštění přimountovány oddíly.
naším úkolem je najít řádek, v němž je přimountováno /var/log a opravit zařízení.system-lognadata-var_log19) Nejdůležitější v této fázi — nezapomeňte změnit tabulku oddílů (ext4, například). Protože ať už jakýmkoli způsobem měníme různé RAID, LVM — dokud nebude FS na oddílu informováno, že se nyní velikost oddílu změnila, nebudeme moci použít nové místo. Použijte příkaz
resize2fspro změnu FS.20) Finální akord.
- provedeme restart. Pokud jste vše udělali správně, znovu se dostanete do vašeho operačního systému (tento krok slouží pouze k ověření, že vše funguje. Nemá žádný jiný smysl než sebedohled).
- proveďte kontroly, že vše, co jsme chtěli udělat, bylo skutečně uděláno:
pvs lvs vgs lsblk cat /proc/mdstat
21) [VOLITELNĚ] Proveďte akce
- restartujte se stiskem F12, abyste při spuštění vybrali různé disky, aby se potvrdilo, že můžete bootovat
z jakéhokoli z SSD disků, abychom se nebáli selhání jednoho z nich. - nyní máte nežádoucí LV log v VG system. Rozdělte toto místo mezi root nebo var, ale namísto použití
konstrukce 100%FREE určete velikost ručně pomocí klíče -L:-L 500M - vyřešte problém s tím, že /boot je na dvou oddílech bez synchronizace, správně by to tak dělat nemělo,
toto bylo přidáno jako příklad. Nezapomeňte si předtím obsah /boot někam zkopírovat.- vytvořte nový raid a zařaďte do něj sda1, sda2.
- zařaďte tyto oddíly do existujícího raidu a obnovte /boot v hlavním raidu, ale již jej nemontujte.
- podívejme se, jaká jména mají nové HDD disky.
- podívejte se, jaká je velikost PV:
- proveďte kopírování tabulky oddílů a použijte správné disky:
- Nejprve je nutné zkopírovat souborovou tabulku ze starého disku na nový:
Zdroj: habr.com









