Migrácia na nový server

V tomto článku som sa pochválil novými komponentami na domáci server (resp. home lab server) a dnes napíšem ako som migroval všetky VM a kontajnery v rámci Proxmox na nový stroj. Ak vieme čo robíme a máme aspoň aké také skúsenosti, tak prechod by mal prebehnúť celkom hladko bez nejakých väčších komplikácii. Toto bol už môj druhý prechod v rámci Proxmoxu, takže z prvého som sa už poučil.

Takto nejak vyzeral predošlý server po HW stránke. Myslím si, že to bol a stále to je, super stroj na domáce hranie sa s virtualizáciou. Avšak po prechode od VDSL2 internetu k GPON sa postupne navyšovala aj rýchlosť a dnešných 800/160 Mbps (KVM) to bohužiaľ nezvláda. Max čo som dosiahol pri meraní cez speedtest, bolo cca 600 Mbps. Odroid H2 má však Gigabit sieťovky, ale na holom kove som to neskúšal, pretože priorita je vizualizácia. Veľkou výhodou tejto dosky bola extrémne nízka spotreba (radovo v jednotkách wattov).

Na predošlom HW Odroid H2 som používal ako hypervisor, Proxmox VE ver. 7.1. Teraz keď na nový HW inštalujem nový Proxmox, tak posledná aktualizácia je z 22. Novembra 2022 a jedná sa o ver. Proxmox VE 7.3-1. Najprv si však v BIOSe nastavíme dôležité parametre. BIOS je v defaulte nastavený takmer správne, VT-d (čiže vizualizácia) je povolená, takže nám ostáva nastaviť AC back na Always On. Tento parameter zabezpečí, že server sa spustí aj po obnovení elektrickej energie po výpadku. Ak to chceme nastaviť, tak pri bootovaní PC ťukáme do klávesy Delete až sa nám zobrazí BIOS ponuka. V BIOSe prejdeme v menu na položku Power a AC Back nastavíme na Always On. Ešte skontrolujeme v menu položka Chipset či je VT-d povolená (viď následujúce obrázky).

AC BACK
VT-D

Ako je známe, tak ja na server nepoužívam nikdy žiadny case (PC skriňu). Základnú dosku umiestňujem na plexisklo vrátane ďalších komponentov (SSD, napájací zdroj atď.), možno bude na záver aj nejaká fotečka. Pozrime a na základnú dosku z hora.

Nás budú zaujímať konektory sieťových kariet a F-Panel (front panel). Vzhľadom k tomu, že nemám case, tak nemám žiadne ovládacie prvky ako napr. Power button, led signalizáciu atď. preto musím použiť priamo F-Panel. Ak si zväčšíme obrázok, tak v hornej časti vidíme označené LAN konektory. Ja to riešim vždy tak, že ľavá strana je u mňa LAN (enp1s0) a pravá strana je WAN (eno1). Na ľavej strane dosky som ešte označil F-Panel. V manuály základnej dosky je na strane 15 popis k F-Panelu. Pre nás je najdôležitejšie zapnutie (prip. reštart) PC a to spravíme tak, že premostíme jumperom kontakty označené na obrázku.

F-Panel

Na obrázku vidíme píny ako PW+ a PW-. Ak by sme chceli PC reštartovať, tak premostíme RES+ a RES-. Čo sa týka inštalácie Proxmoxu, tak o tom som už písal, resp. keď som prechádzal z Proxmox 6 na Proxmox 7. Takže verím, že už máme pripravený bootovaci kľúč s najnovším Proxmox VE. Ak nevieme ako pripraviť bootovací kľúč, tak odporúčam tento článok. Ďalej máme pripravený komplet PC, vrátane pripojeného eth káblu do portu LAN a min. 2x SSD (alebo HDD). Bootovaci USB kľúč zasunieme do USB portu. PC spustíme (viď vyššie prepojíme píny PW+ a PW-) a zároveň ťukáme do klávesy F12 až kým sa nezobrazí boot menu. Tam si vyberieme naše bootovacie médium a pokračujeme inštaláciou. Inštalácia je veľmi intuitívna, azda spomeniem len, že pri výbere filesystemu zvolíme možnosť ZFS RAID1, čo je mirror (obidva SSD budú zrkadlené).

Na aktívnom proxmoxe, ktorý v súčasnosti beží si vytvorime zálohy všetkých VM a LXC. Ja to robím vždy tak, že VM/LXC stopnem a spravím plnú zálohu. Na mojom servery nebeží nič kritické, takže si môžem dovoliť VM/LXC vypínať (inak by som musel robiť zrejme snapshoty). Jediná VM, ktorú by som nemal vypínať je VM, kde beží pfSense. Zálohy je možné v Proxmoxe nastaviť na určitý čas, takže ak VM zálohy nastavíme napr. na nočnú hodinu 02:30, tak sa počas procesu zálohovania VM odstaví asi na 2-3 minúty. Takže predpokladáme, že všetky zálohy už máme vytvorené. Zálohy sa defaultne ukladajú do

/var/lib/vz/dump

Teraz musíme zálohy preniesť zo starého Proxmoxu na nový Proxmox. Je jedno či sa pripojíme na starý, alebo na nový Proxmox, prenášať budeme pomocou protokolu scp. Dajme tomu, že sa prihlásime cez SSH na starý Proxmox. potom zálohy na nový Proxmox prenesieme takto

scp -r /var/lib/vz/dump/ root@192.168.1.5:/var/lib/vz/dump/

kde IP adresa nového Proxmoxu je 192.168.1.5. Ja som prenášal asi 30 GB dát GigaBitovou sieťou a trvalo to par desiatok sekúnd. Každá záloha obsahuje aj konfiguračný súbor a ak nemanipulujeme napr. zo sieťovými rozhraniami, alebo nejakými cestami na úložiskách, tak by po nasadení LXC/VM nemal byť problém. Ja používam na Proxmoxe viac sieťových rozhraní (linux bridge), takže dôležité je nastaviť si sieťový config ešte pred restoringom. Toto je konfigurácia siete na starom Proxmox. Konfiguračný súbor nájdeme v /etc/network/interfaces

auto lo
iface lo inet loopback
 
iface enp3s0 inet manual
 
iface enp2s0 inet manual
 
auto vmbr1
iface vmbr1 inet static
        address 192.168.1.3/24
        gateway 192.168.1.1
        bridge-ports enp3s0
        bridge-stp off
        bridge-fd 0
 
auto vmbr0
iface vmbr0 inet manual
        bridge-ports enp2s0
        bridge-stp off
        bridge-fd 0
 
auto vmbr2
iface vmbr2 inet manual
        bridge-ports enp3s0.20
        bridge-stp off
        bridge-fd 0
 
auto vmbr3
iface vmbr3 inet manual
        bridge-ports enp3s0.30
        bridge-stp off
        bridge-fd 0
 
auto vmbr4
iface vmbr4 inet manual
        bridge-ports enp3s0.40
        bridge-stp off
        bridge-fd 0
 
auto vmbr5
iface vmbr5 inet manual
        bridge-ports enp3s0.50
        bridge-stp off
        bridge-fd 0

Ako som uviedol vyššie, tak na novej doske linux identifikuje sieťovky pod názvami enp1s0 a eno1. Na predošlej doske Odroid H2 to bolo enp2s0 a enp3s0, viď riadok 4 a 6. Ďalej v konfigu vidíme 6 linuxových bridgov (vmbr0 až vmbr5). Toto musí ostať zachované, lebo inak by strašne veľa veci nefungovalo. To znamená, že náš nový config bude vyzerať následovne.

auto lo
iface lo inet loopback
 
iface enp1s0 inet manual
 
iface eno1 inet manual
 
auto vmbr1
iface vmbr1 inet static
        address 192.168.1.5/24
        gateway 192.168.1.1
        bridge-ports enp1s0
        bridge-stp off
        bridge-fd 0
 
auto vmbr0
iface vmbr0 inet manual
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0
 
auto vmbr2
iface vmbr2 inet manual
        bridge-ports enp1s0.20
        bridge-stp off
        bridge-fd 0
 
auto vmbr3
iface vmbr3 inet manual
        bridge-ports enp1s0.30
        bridge-stp off
        bridge-fd 0
 
auto vmbr4
iface vmbr4 inet manual
        bridge-ports enp1s0.40
        bridge-stp off
        bridge-fd 0
 
auto vmbr5
iface vmbr5 inet manual
        bridge-ports enp1s0.50
        bridge-stp off
        bridge-fd 0

Treba dávať pozor aj na to, že vmbr0 (eno1) je v mojom prípade použitá pre WAN rozhranie a enp1s0 bridguje ďalších 5 rozhraní. Zmeny som spravil v riadkoch, ktoré som aj vyznačil. Zmeny sa týkajú len názvov sieťových rozhraní.

Poznámka: Pri vytváraní kontajnerov cez web GUI je vždy defaultne ponúknutá sieťovka vmbr0. Ak si to nevšimneme a nezmeníme to na vmbr1 – vmbr5, tak budeme mať problém s fungovaním kontajneru.

Ja zvyčajne používam na Proxmox v produkcii vždy IP adresu 192.168.1.3, takže v novom configu, som po odstavení starého Proxmoxu, upravil IP adresu z 192.168.1.5 na IP adresu 192.168.1.3.

Následne môžeme restorovať postupne VM a LXC (resp. VM a LXC môžeme restorovať ešte pred vypnutím starého Proxmoxu, ale v žiadnom prípade ich nespúšťame). Ako prvú VM nasadzujem pfSense s ID 100. Zdá sa, že všetko je v poriadku, internet funguje v rámci celej siete, ale zaznamenal som problém z internetom konkrétne na Proxmoxe (192.168.1.3). Internet vôbec nefungoval a keď som chcel spraviť update, alebo jednoduchý ping, tak všetko bolo unreachable. Nejaký čas som uvažoval, kde môže byť problém, ale nič ma nenapadalo. Až po nejakom čase som zistil, že vo firewalle pfSense mám IP adresy zviazané s MAC adresami a v tabuľke ostala k IP adrese 192.168.1.3, pôvodná MAC adresa zo starého Proxmoxu. Po tejto úprave už internet na Proxmoxe fungoval. Takže pozor aj na takéto záludnosti, ktoré sa hľadajú dosť ťažko.

Ďalšie VM a LXC išli nahrať bez problémov až na jediný LXC, na ktorom prevádzkujem Nextcloud Hub. Na výstup som dostal nejakú chybovú hlášku, prečo LXC nejde nahodiť, ale teraz konkrétne si nespomeniem, čo všetko bolo obsahom hlášky. SSD na ktorom sú uložené dáta pre Nextcloud som samozrejme mal do systému pripojený (vrátane druhého SSD ktorý mal byť súčasťou ZFS mirroru). Potom ma napadlo, že už som tento problém raz riešil a riešením bolo na Proxmoxe nastaviť resp. pridať do súborov

nano /etc/subuid
nano /etc/subgid

tieto riadky

root:33:1

Toto nastavenie je dôležité pri neprivilegovaných kontajneroch (viac info v tomto článku). Potom som restoring Nextcloud Hub kontajnera bez problémov vykonal, avšak kontajner som nedokázal spustiť (opäť to skončilo chybovou hláškou), pretože SSD na ktorom sú dáta je tiež ZFS. Najprv som skontroloval ZFS a videl som, že beží len rpool, čo je Proxmoxom vytvorený pool

pool: rpool
 state: ONLINE
config:
 
        NAME                                                   STATE     READ WRITE CKSUM
        rpool                                                  ONLINE       0     0     0
          mirror-0                                             ONLINE       0     0     0
            ata-Patriot_P200_256GB_AA000000000000000xxx-part3  ONLINE       0     0     0
            ata-Patriot_P200_256GB_AA000000000000000xxx-part3  ONLINE       0     0     0
 
errors: No known data errors

ZFS import našiel Ďalší pool datapool, čo je náše úložisko pre Nextcloud Hub

zpool import
   pool: datapool
     id: 5891050705304534901
  state: ONLINE
status: The pool was last accessed by another system.
 action: The pool can be imported using its name or numeric identifier and
        the '-f' flag.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
 config:
 
        datapool    ONLINE
          sdc       ONLINE

Ak chceme datapool do systému importovať, tak na to slúži jednoduchý príkaz

zpool import -f datapool

Teraz sa kontajner Nextcloud Hub bez problémov spustí a všetko funguje výborne. Avšak je to ZFS single a prioritou pre bezpečnosť dát je tento single ZFS prepracovať na ZFS mirror (preto bol do systému pridaný druhý 1TB SSD). Keď som datapool imprtoval, tak som nevedel, že import prebehne v režime /dev/sdx. To znamená, že zpool status nám ukáže niečo také

Poznámka: ešte som mohol skúsiť pool importovať pomocou ID čísla, ale napadlo ma to až neskôr, keď bolo všetko importované pomocou by-id metódy

zpool status
  pool: datapool
 state: ONLINE
  scan: scrub repaired 0B in 00:05:23 with 0 errors on Sun Dec 11 00:29:24 2022
config:
 
        NAME        STATE     READ WRITE CKSUM
        datapool    ONLINE       0     0     0
          sdc       ONLINE       0     0     0
 
errors: No known data errors
 
  pool: rpool
 state: ONLINE
config:
 
        NAME                                                   STATE     READ WRITE CKSUM
        rpool                                                  ONLINE       0     0     0
          mirror-0                                             ONLINE       0     0     0
            ata-Patriot_P200_256GB_AA000000000000000xxx-part3  ONLINE       0     0     0
            ata-Patriot_P200_256GB_AA000000000000000xxx-part3  ONLINE       0     0     0
 
errors: No known data errors

Pre ZFS sa neodporúča používať metódu /dev/sdx, ale skôr metódu by-id. Preto som datapool exportoval a nasledne som ho importoval pomocou by-id

zpool export datapool
zpool import datapool -d /dev/disk/by-id

Pri importe by-id nebol použitý ata, ale wwn. To však nevadí, pretože aj wwn ma jednoznačnú identifikáciu úložného zariadenia. To znamená, že keď budeme vytvárať mirror, použijeme riadok s wwn.

Takže existujúci ZFS single nám funguje. Ako už bolo uvedené vyššie, tak v systéme máme ďalší 1TB SSD. Teraz sa pozrieme na zoznam zariadení by-id

ls -l /dev/disk/by-id

Dovolím si sem skopírovať len tie, ktoré nás budú zaujímať

lrwxrwxrwx 1 root root  9 Dec 20 07:21 wwn-0x5001b444a7d765f3 -> ../../sdd
lrwxrwxrwx 1 root root  9 Dec 20 07:21 wwn-0x5001b448bbf8f4ce -> ../../sdc
lrwxrwxrwx 1 root root 10 Dec 20 07:21 wwn-0x5001b448bbf8f4ce-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Dec 20 07:21 wwn-0x5001b448bbf8f4ce-part9 -> ../../sdc9

Z tohto výpisu vyplýva, že disk sdc, je existujúci ZFS single a sdd je nový čistý SSD. Samozrejme vo výpise je vidieť aj jedinečný wwn disku. Pred pridávaním zariadenia resp. vytváraním mirroru z už existujúcim ZFS single zariadením sa odporúča vytvoriť zálohu. Ja na ZFS single zariadení nemám veľa súborov, takže záloha dát netrvala dlho. Aby sme sa nepomýlili pri pridávaní disku do mirroru, tak si pozorne pozrieme, ktorý disk je existujúci a ktorý je nový

wwn-0x5001b448bbf8f4ce existujuci disk
wwn-0x5001b444a7d765f3 novy disk

A teraz nasleduje príkaz, ktorý vytvorí ZFS mirror. Na prvom mieste je existujúci disk a hneď za ním je nový disk

zpool attach datapool /dev/disk/by-id/wwn-0x5001b448bbf8f4ce /dev/disk/by-id/wwn-0x5001b444a7d765f3

Príkaz do terminálu nevypíše nič. Ak chceme zistiť, či je všetko v poriadku, tak si necháme znova do terminálu vytlačiť zpool status

zpool status
 
zpool status
  pool: datapool
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Tue Dec 20 10:30:13 2022
        134G scanned at 12.2G/s, 4.65G issued at 433M/s, 134G total
        4.65G resilvered, 3.47% done, 00:05:05 to go
config:
 
        NAME                        STATE     READ WRITE CKSUM
        datapool                    ONLINE       0     0     0
          mirror-0                  ONLINE       0     0     0
            wwn-0x5001b448bbf8f4ce  ONLINE       0     0     0
            wwn-0x5001b444a7d765f3  ONLINE       0     0     0  (resilvering)
 
errors: No known data errors
 
  pool: rpool
 state: ONLINE
config:
 
        NAME                                                   STATE     READ WRITE CKSUM
        rpool                                                  ONLINE       0     0     0
          mirror-0                                             ONLINE       0     0     0
            ata-Patriot_P200_256GB_AA000000000000000xxx-part3  ONLINE       0     0     0
            ata-Patriot_P200_256GB_AA000000000000000xxx-part3  ONLINE       0     0     0
 
errors: No known data errors

Vo výpise vidíme, že datapool mirror bol úspešne vytvorený a prebieha resilvering, počas ktorého sa kopírujú dáta na nový disk (resp. vytvára sa zrkadlo disku). Resilvering bude trvať nejaký čas, pokiaľ sa všetky dáta neprenesú na nový disk. Časová doba závisí od rýchlosti diskov, systému a od veľkosti dát. U mňa trval resilvering 00:05:49 pri 134GB dát (viď následujúci výpis). A takto vlastne vyzerá aj zpool status, keď je všetko v poriadku.

 pool: datapool
 state: ONLINE
  scan: resilvered 134G in 00:05:49 with 0 errors on Tue Dec 20 10:36:02 2022
config:
 
        NAME                        STATE     READ WRITE CKSUM
        datapool                    ONLINE       0     0     0
          mirror-0                  ONLINE       0     0     0
            wwn-0x5001b448bbf8f4ce  ONLINE       0     0     0
            wwn-0x5001b444a7d765f3  ONLINE       0     0     0
 
errors: No known data errors
 
  pool: rpool
 state: ONLINE
config:
 
        NAME                                                   STATE     READ WRITE CKSUM
        rpool                                                  ONLINE       0     0     0
          mirror-0                                             ONLINE       0     0     0
            ata-Patriot_P200_256GB_AA000000000000000xxx-part3  ONLINE       0     0     0
            ata-Patriot_P200_256GB_AA000000000000000xxx-part3  ONLINE       0     0     0
 
errors: No known data errors

Nakoniec som sľúbil nejaké obrázky. Aj keď nie som nejaký špecialista cez fotenie, tak aspoň také amatérske zábery z HW časti.

Na obrázku 3 je vyfotený elektromer s aktuálnou spotrebou vrátane celého ústrojenstva (kde server je v idle stave). Spotreba sa pohybuje v idle 36 – 40W. Pri vyššom zaťažení CPU môže krátkodobo spotreba atakovať aj 70-80W. Do merania som zahrnul

  • Asrock GA-IMB410M (rev. 1.0), 32 GB RAM 4x SSD
  • TP-Link DGS 108 8 portový GigaBit switch
  • Huawei GPON modem EchoLife EG8145V5
  • APC Back-UP 600

Ešte sa možno poobzerám po nejakom PicoPSU v spojení s klasickým NTB adaptérom, kde účinnosť zdroja bude vyššia a tým pádom nižšia spotreba. Oproti starému serveru Odroid H2, ktorý mal spotrebu 16-17W vrátane celého ústrojenstva, tak terajších 40W je celkom hodne. Ak som meral dosku s osadeným CPU, RAM, 2x SSD nainštalovaným Proxmoxom (bez ústrojenstva), tak spotreba bola na úrovni 22W. Uvidíme ako sa v budúcnosti bude vyvíjať cena za kWh a ako som už uviedol možno sa poobzerám po PicoPSU.

Poznámka: Nejak sa mi to nepáči. Pretože ak som meral spotrebu na Odroid H2 + ústrojenstvo a nameral som 17W a pri novej Asrock doske s ústrojenstvom nameriam cca 40W (bez ústrojenstva 22W), tak samotné ústrojenstvo musí mať spotrebu 18W. Koľko wattov má potom samotný Odroid H2 keď ústrojenstvo má spotrebu 18W? Zápornú spotrebu som ešte nevidel 😀

Ešte pridávam printscreen dashboardu s Proxmox VE.

Proxmox Dashboard

Na Proxmoxe beží aktuálne 9 linuxových kontajnerov a 2 KVM stroje. CPU sa fláka na nejakých 1.5-2.5%. Proxmox vidí 12 logických jadier s frekvenciou 2.9 GHz a 32 GB RAM. Uptime zatiaľ 9 dni a zdá sa, že všetko funguje správne.

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *