Proxmox kisokos

Eleinte úgy indult, hogy elég lenne nekem egy notepad, amibe összegyűjtöm a számomra hasznos (és nálam felmerült) parancsokat, megoldásokat, stb. De akkor legyen itt minden egy helyen, hátha valaki másnak is jól jön még.

Kezdjük ott, hogy mi az a proxmox.

Egy Debian alatt futó virtualizációs eszköz, arra lett kitalálva, hogy van egy szervered (vagy egy annak szánt géped) és azon futtatsz különböző virtuális gépeket. Nagyon hasonló a VMWare ESXi-hez (vSphere), de jóval rugalmasabb.

Linux ismeretek szükségesek hozzá, de alapvetően elég egyszerű a telepítése és használata.

A Proxmox két fő virtualizációs technológiát támogat

1. Virtual Machines (VM): Teljes gépi virtualizáció.

2. Containers (CT): Könnyűsúlyú virtualizáció.

Mindkettőnek van saját ip címe, kaphatja DHCP-n a routeredtől, de fix ip címet is állíthatsz be neki.

Fő különbségek:

1. Create VM (Virtual Machine)

Technológia: KVM (Kernel-based Virtual Machine).

Rendszer: Egy teljes operációs rendszer futtatására alkalmas, saját kernelével és virtualizált hardverrel.

Izoláció: Teljesen elkülönített környezet, mintha külön fizikai gép lenne.

Erőforrás-kezelés: Rugalmas, de több erőforrást igényel (CPU, RAM, tárhely), mivel a vendég operációs rendszer saját kernelt használ.

Használati példa: Windows, macOS vagy más teljes értékű operációs rendszerek futtatása.

Boot: Saját boot folyamat, például BIOS vagy UEFI emulációval.

2. Create CT (Container)

Technológia: LXC (Linux Containers).

Rendszer: Nem futtat külön kernelt, hanem a host (Proxmox) Linux kernelét használja.

Izoláció: Könnyűsúlyú izoláció, a host rendszer erőforrásait osztja meg.

Erőforrás-kezelés: Hatékonyabb, kevesebb erőforrást igényel, mivel nincs külön kernel és virtualizált hardver.

Használati példa: Linux alapú alkalmazások vagy szolgáltatások futtatása (pl. webserver, adatbázis).

Boot: Azonnal indul, mivel nincs szükség külön kernel betöltésére.

Mikor melyiket válaszd?

VM: Ha teljesen izolált környezetre van szükség, vagy nem Linux-alapú rendszert szeretnél futtatni.

CT: Ha Linux-alapú környezetet szeretnél futtatni, és fontos a hatékonyság (pl. kisebb memória- és CPU-igény).

Ha például egy transmission szervert szeretnél futtatni akkor egyszerűbb a CT-t választanod, mivel:

1. Könnyűsúlyú: A Transmission nem igényel sok erőforrást, és egy LXC konténerben futtatva hatékonyabban használhatod a host rendszer erőforrásait.

2. Egyszerű telepítés: A legtöbb Linux disztribúció (pl. Debian, Ubuntu) könnyen elérhető LXC konténerként, és ezekre egyszerűen telepítheted a Transmission-t.

3. Gyors indulás/leállás: A konténer gyorsabban indul és áll le, mint egy teljes VM.

4. Könnyű menedzsment: Működés közben módosíthatod a memória méretét, a gép számára elérhető diskeket és azok méreteit is.

Érdemes tudni, hogy a proxmox nem csak saját maga által gyártott virtuális diskeket képes használni – adhatsz a virtuális gépeknek a proxmox host-on felcsatolt könyvtárakat is, partíciókat és teljes diskeket is. Erre majd később visszatérünk.

Telepítést követően belépve a proxmox webes felületére látsz középen egy dashboard-ot és baloldalt egy felsorolást, ahol látod a vason lévő gépeket, diskeket, hálózatot, stb.

Új konténer létrehozása

Jobb fenn kattints a Create CT feliratra

Első tab a General

  • Node – ez a saját vasad neve, ha több proxmox vasat kötnél össze itt lehetne többet is választani.
  • CT ID – a konténer id-ja. Minden konténernek van egy egyedi azonosítója, hagyd default beállításon
  • Hostname – írj be egy egyedi nevet a konténernek/virtuális gépednek
  • Unprivileged container – ez egy biztonsági beállítás, amely korlátozza a konténer jogosultságait
    • Előny: Növeli a biztonságot, mert a konténerben futó folyamatok nem férnek hozzá közvetlenül a host rendszerhez.
    • Hátrány: Egyes alkalmazások (pl. speciális kernelmodulokat igénylők) nem futnak unprivileged módban.
    • Ajánlott: Általános célra ezt használd, ha nincs speciális igény.
    • Nesting – engedélyezi, hogy a konténerben további konténereket vagy virtualizációt futtass
      • Használat: Csak akkor szükséges, ha például Docker-t vagy más konténerizációs technológiát szeretnél futtatni az LXC konténeren belül.
      • Hátrány: Csökkentheti a biztonságot.
  • Resource pool – ez egy opcionális csoportosítási lehetőség, amellyel több konténert és virtuális gépet egy adott “pool”-ba rendezhetsz. Könnyebb menedzsment és errőforrás kezelésben segít ha sok vm-ed van.
  • Password, confirm password – a guest vm/konténer root jelszava

Next, következő a template. Itt állítod be, hogy mely template-ből akarod létrehozni a konténered.

Alapesetben egy konténer sincs a gépedre telepítve, tehát előtte le kell töltened ezeket (aztán majd te is készíthetsz). Ha a local-on nem dob ki semmit, illetve először jársz itt akkor lépj ki ebből az ablakból és kattints oldalt a local-ra, majd a CT Templates-re, majd válaszd fenn a Templates gombot.

Kiválasztasz egy szimpatikusat, mondjuk debian-12-standard -ot és Download gomb lenn. Ha megvan akkor visszatérhetünk a CT létrehozásához. Később majd nézd át milyen TurnKey-es előkészített appok is vannak, amiket egyből letölthetsz.

Next, Disks

Ha van már több storage-ed akkor választhatsz melyikre legyen a géped telepítve.

CPU

CPU core-okat tudsz beállítani. Ha az advanced-et benyomod alul akkor limitálni is tudod a processzorhasználatát százalékosan is.

Memory

Beállíthatod a konténernek a saját elérhető memóriáját és a swap-jét. Vedd figyelembe, hogy egy CT-nek kicsit kisebb erőforrásigénye van, mint egy VM-nek.

Network

Hagyj mindent default, kattintsd be, hogy DHCP-n kapjon ip címet ha nem akarsz static ip-t beállítani.

DNS, Summary – egyértelmű, a summary felületen lenn nyomd be a checkboxot, hogy a gép elinduljon a létrehozást követően azonnal.

Tartsd észben, hogy a konténered a host újraindítását követően nem fog automatikusan elindulni. Ez a létrehozott konténerre kattintva baloldalt, majd Options -> Start at boot résznél tudod Yes-re állítani.


Merevlemez csatolása egy konténerhez

Mindegyiket parancssorból fogjuk intézni. Kattints baloldalt a Datacenter alatti elemre (nálam PVE) és jobb fenn „>_ Shell”. A felugró ablakban fogunk dolgozni.

Könyvtár

# hozd létre a könyvtárat a host-on
mkdir /mnt/mydisk

# csekkold le a disked UUID-ját
blkid /dev/sdb1

#próbából csatold fel
mount /dev/disk/by-uuid/<A blkid alatt megkapott UUID jön ide> /mnt/mydisk

# ha sikerült a felcsatolás vidd fel fstab-ba is
nano /etc/fstab

UUID=<partíció-uuid> /mnt/mydisk ext4 defaults 0 2

# mentés, kilépés, majd teszteld helyes-e az fstab fájl
mount -a
df -h


# aztán nyisd meg a konténer konfig fájlját, a <CTID> a konténer ID-ja
nano /etc/pve/lxc/<CTID>.conf

# adj hozzá egy sort, ha több sort adsz hozzá mindig növeld az mp... értékét
mp0: /mnt/mydisk,mp=/path/in/container

/mnt/mydisk: Ez a host rendszeren lévő könyvtár.
/path/in/container: Ez a konténerben elérhető útvonal (pl. /data).

Indítsd újra a konténert és csekkold felcsatolta-e a könyvtárat.

Fontos

  • Jogosultságok: Győződj meg arról, hogy a konténer felhasználójának megfelelő jogosultságai vannak a csatolt könyvtárra vagy fájlrendszerre.
  • Unprivileged konténer esetén: Ha unprivileged konténert használsz, a bind mountolás speciális beállításokat igényelhet (pl. uid és gid mappázás).
  • Adatvesztés elkerülése: Mindig készíts biztonsági mentést, mielőtt egy merevlemezt csatolsz vagy módosítasz.

Ha nincs még a lemezen partíciód akkor létrehozhatsz egy ext4 fájlrendszert is ha nem szeretnél lvm, vagy zfs-t kezelni.

# ha nincs parted akkor telepítsd
apt update && apt install parted -y

parted /dev/sda

mklabel gpt
mkpart primary ext4 0% 100%
quit

mkfs.ext4 /dev/sda1

Partíció

Állítsd le a VM-et, jegyezd meg az ID-ját, itt is szükségünk lesz rá

#Derítsd ki a partíció UUID-ját, ne /dev/sdvalami-ként add hozzá
blkid /dev/sdY


# add hozzá a disket a vm-hez
qm set <VMID> -virtioX /dev/disk/by-uuid/<UUID>

A <VMID> a virtuális gép ID-ja, az <> az X mindig a kövekező sorszámozása a disknek, az Y pedig a vason lévő disked betűjele.

Csekkold le a konfigurációt

cat /etc/pve/qemu-server/<VMID>.conf

Ilyesmit kellene benn látnod:

virtio2: /dev/disk/by-uuid/123e4567-e89b-12d3-a456-426614174000

Miután elindítottad a vm-et /dev/vdX-ként fog a partíció megjelenni, itt is az fstab-ban csatold fel. Ugyanaz az UUID benn a vm-ben, mint kint a host-on.

nano /etc/fstab
UUID=<partíció-uuid> /mnt/vmdisk ext4 defaults 0 2

ZFS disk

Feltűnhetett, hogy többféle disk támogatása is van a proxmoxnak, nézzük kicsit át

Proxmox alatt, amikor létrehozol egy virtuális gépet, a hozzá társított virtuális lemez (virtual disk) kezelésének módja a kiválasztott tároló típusától és a lemez formátumától függ. A tárolás lehet thin provisioning vagy thick provisioning alapú

1. Thin Provisioning (vékony kiosztás)

Jellemzők:

• Alapértelmezett beállítás a legtöbb tárolórendszerben, például ZFS vagy LVM-Thin használatakor.

• A lemez csak annyi helyet foglal el a fizikai tárolón, amennyire ténylegesen szüksége van az adatok tárolásához.

• A lemez mérete növekedhet, ahogy több adat kerül rá.

• Nem foglalja el azonnal a teljes méretet, amit a VM létrehozásakor megadtál.

Előnyök:

• Hatékony tárhely-kihasználás.

• Több VM-et is létrehozhatsz a rendelkezésre álló fizikai tárhelyhez képest, amíg a valós adatméret nem haladja meg a kapacitást.

Hátrányok:

• Teljesítménycsökkenés fordulhat elő, amikor a lemez mérete növekszik, mert a helyfoglalás dinamikusan történik.

• Ha a tároló megtelik, problémák léphetnek fel.

2. Thick Provisioning (vastag kiosztás)

Jellemzők:

• A teljes lemezméret előre lefoglalásra kerül a fizikai tárolón, függetlenül attól, hogy mennyi adatot tárolsz rajta.

• Ez a viselkedés jellemző a sima LVM (Logical Volume Manager) vagy más nem thin-provisioning alapú tárolók esetében.

Előnyök:

• Stabil teljesítmény, mivel a hely előre lefoglalásra kerül.

• Nem kell aggódni a tároló megtelése miatt, mivel a hely már kiosztásra került.

Hátrányok:

• Kevesebb rugalmasság, mert a tárhelyet azonnal lefoglalja.

• Több szabad helyre van szükség a tárolón, amikor a VM-et létrehozod.

Hogyan ellenőrizheted a tárolás típusát?

A tároló típusa határozza meg, hogy a diszk thin vagy thick provisioning alapon működik. Proxmoxban a tárolók beállításai alatt ellenőrizheted:

1. Lépj be a Datacenter > Storage menübe.

2. Válaszd ki a tárolót (pl. local, local-lvm, vagy zfs).

3. Nézd meg, milyen típusú a tároló:

LVM-Thin: Thin provisioning.

ZFS: Thin provisioning.

LVM (sima) vagy más fájlrendszer (pl. ext4): Thick provisioning.

Hogyan befolyásolhatod a viselkedést?

Thin provisioning használatához válassz olyan tárolót, ami támogatja (pl. ZFS, LVM-Thin).

Thick provisioning esetén választhatsz sima LVM-et vagy egy egyszerű fájlrendszert.

• Amikor VM-et hozol létre, a tároló kiválasztásánál figyelj arra, hogy a tároló típusa megfeleljen az igényeidnek.