Az LXD - Linux konténerrendszerek alapvető jellemzői
LXD a következő generációs rendszertároló-kezelő, így szól forrás. A virtuális gépekhez hasonló felhasználói felületet kínál, de helyette Linux-tárolókat használ.
LXD mag egy privilegizált démon (root jogokkal futó szolgáltatás), amely REST API-t biztosít egy helyi unix socketen keresztül, valamint a hálózaton keresztül, ha a megfelelő konfiguráció telepítve van. Az ügyfelek, például az LXD-vel biztosított parancssori eszköz kéréseket küldenek ezen a REST API-n keresztül. Ez azt jelenti, hogy akár helyi, akár távoli gazdagéphez fér hozzá, minden ugyanúgy működik.
Ebben a cikkben nem foglalkozunk részletesen az LXD fogalmaival, nem vesszük figyelembe a dokumentációban felvázolt összes rendelkezésre álló képességet, beleértve a QEMU virtuális gépek támogatásának legutóbbi megvalósítását az LXD legújabb verzióiban a konténerekkel párhuzamosan. Ehelyett csak a konténerkezelés alapjait tanuljuk meg – tárolókészletek beállítása, hálózatépítés, konténer futtatása, erőforrás-korlátozások alkalmazása, valamint a pillanatképek használatának módja, hogy alapvető ismereteket szerezzen az LXD-ről és a konténerek használatáról Linuxon.
A teljes körű információért kérjük, tekintse meg a hivatalos forrást:
Ez azt jelenti, hogy egyszerre két csomag kerül telepítésre, az egyik rendszercsomagként, a másik pedig snap csomagként. Két csomag telepítése egy rendszerre problémákat okozhat, amikor a rendszercsomag elárvulhat, ha a snap csomagkezelő eltávolítja a snap csomagot.
Csomag keresése lxd a snap tárolóban a következő parancsot használhatja:
snap find lxd
Name Version Summary
lxd 3.21 System container manager and API
lxd-demo-server 0+git.6d54658 Online software demo sessions using LXD
nova ocata OpenStack Compute Service (nova)
nova-hypervisor ocata OpenStack Compute Service - KVM Hypervisor (nova)
distrobuilder 1.0 Image builder for LXC and LXD
fabrica 0.1 Build snaps by simply pointing a web form to...
satellite 0.1.2 Advanced scalable Open source intelligence platform
A parancs futtatásával list megbizonyosodhat arról, hogy a csomag lxd még nincs telepítve:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
Annak ellenére, hogy az LXD egy snap csomag, a rendszercsomagon keresztül kell telepíteni lxd, amely létrehozza a megfelelő csoportot a rendszerben, a szükséges segédprogramokat /usr/bin stb
sudo apt update
sudo apt install lxd
Győződjön meg arról, hogy a csomag snap csomagként van telepítve:
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.43.3 8689 stable canonical✓ core
lxd 3.21 13474 stable/… canonical✓ -
Az LXD csomag rendszerre történő telepítéséhez a következő parancsokat kell futtatnia: az első frissíti a rendszeren a lerakatban elérhető csomagok listáját, a második pedig közvetlenül telepíti a csomagot:
sudo pacman -Syyu && sudo pacman -S lxd
A csomag telepítése után ahhoz, hogy egy normál felhasználó kezelhesse az LXD-t, hozzá kell adni a rendszercsoporthoz lxd:
sudo usermod -a -G lxd user1
Győződjön meg arról, hogy a felhasználó user1 hozzáadva a csoporthoz lxd:
id -Gn user1
user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
Ha a csoport lxd nem látható a listában, akkor újra aktiválnia kell a felhasználói munkamenetet. Ehhez ki kell jelentkezni és be kell jelentkezni ugyanazon felhasználó alatt.
Aktiváld be systemd az LXD szolgáltatás betöltése a rendszer indításakor:
Az inicializálás megkezdése előtt meg kell értenünk, hogy az LXD-ben a tároló logikai elrendezése hogyan történik.
Tárolás (Tárolás) áll egy vagy többtől Tároló medence amely a támogatott fájlrendszerek egyikét használja, például ZFS, BTRFS, LVM vagy normál könyvtárakat. Minden Tároló medence kötetekre van osztva (Tárolási mennyiség), amelyek képeket, tárolókat vagy más célú adatokat tartalmaznak.
ábrázolás - ezek speciálisan összeállított disztribúciók Linux kernel nélkül, és külső forrásból elérhetők
konténerek - ezek a lemezképekből telepített disztribúciók, használatra készek
Pillanatképek - ezek pillanatképek a tárolók állapotáról, amelyekhez visszatérhet
A tárhely kezeléséhez LXD-ben használja a parancsot lxc storage egy tanúsítvány, amelyhez a kulcs megadásával szerezhet be - lxc storage --help
A következő parancs megjeleníti az összes listát Tároló medence LXD tárolóban:
lxc storage list
+---------+-------------+--------+--------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool | | btrfs | /dev/loop1 | 2 |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool | | btrfs | /var/lib/lxd/disks/ssdpool.img | 4 |
+---------+-------------+--------+--------------------------------+---------+
Az összes lista megtekintéséhez Tárolási mennyiség a kiválasztottban Tároló medence szolgálja a csapatot lxc storage volume list:
lxc storage volume list hddpool
+-------+----------------------------------+-------------+---------+
| TYPE | NAME | DESCRIPTION | USED BY |
+-------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... | | 1 |
+-------+----------------------------------+-------------+---------+
lxc storage volume list ssdpool
+-----------+----------------------------------+-------------+---------+
| TYPE | NAME | DESCRIPTION | USED BY |
+-----------+----------------------------------+-------------+---------+
| container | alp3 | | 1 |
+-----------+----------------------------------+-------------+---------+
| container | jupyter | | 1 |
+-----------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... | | 1 |
+-----------+----------------------------------+-------------+---------+
Továbbá, ha azért Tároló medence Létrehozáskor a BTRFS fájlrendszer került kiválasztásra, majd kap egy listát Tárolási mennyiség vagy almennyiségek a BTRFS értelmezésben ennek a fájlrendszernek az eszközkészletét használhatja:
sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/hddpool
ID 257 gen 818 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/ssdpool
ID 257 gen 1820 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
ID 260 gen 1819 parent 5 top level 5 path containers/jupyter
ID 263 gen 1820 parent 5 top level 5 path containers/alp3
A tárolók létrehozása és használata előtt el kell végeznie egy általános LXD inicializálást, amely létrehozza és konfigurálja a hálózatot és a tárolót. Ezt manuálisan is megteheti szabványos ügyfélparancsokkal, amelyek a parancs meghívásával elérhetők a listában lxc --help vagy az inicializálási varázsló segítségével lxd init válaszolva néhány kérdésre.
Fájlrendszer kiválasztása a Storage Pool számára ^
Az inicializálás során az LXD számos kérdést tesz fel, beleértve az alapértelmezett fájlrendszer típusának meghatározását Tároló medence. Alapértelmezés szerint a BTRFS fájlrendszer van kiválasztva. A létrehozás után lehetetlen lesz másik FS-re váltani. FS kiválasztása javasolt jellemzők összehasonlító táblázata:
Funkció
Könyvtár
btrfs
LVM
ZFS
CEPH
Optimalizált képtárolás
nem
Igen
Igen
Igen
Igen
Optimalizált példány létrehozása
nem
Igen
Igen
Igen
Igen
Optimalizált pillanatkép készítés
nem
Igen
Igen
Igen
Igen
Optimalizált képátvitel
nem
Igen
nem
Igen
Igen
Optimalizált példányátvitel
nem
Igen
nem
Igen
Igen
Másolás írásra
nem
Igen
Igen
Igen
Igen
Blokk alapú
nem
nem
Igen
nem
Igen
Azonnali klónozás
nem
Igen
Igen
Igen
Igen
Tároló illesztőprogram, amely konténerben használható
Igen
Igen
nem
nem
nem
Visszaállítás régebbi pillanatképekből (nem legújabb)
Igen
Igen
Igen
nem
Igen
Tárolási kvóták
Igen(*)
Igen
Igen
Igen
nem
A hálózat és a tárolókészlet inicializálása a varázsló segítségével ^
A következő parancs, amelyet megvizsgálunk, az LXD fő összetevőinek beállítását javasolja egyszerű kérdések megválaszolásával az inicializálási varázsló segítségével.
Futtassa a parancsot lxc init és írja be a kérdésekre a válaszokat a kettőspont után az alábbi példában látható módon, vagy módosítsa azokat a feltételeknek megfelelően:
lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]: ssdpool
Name of the storage backend to use (lvm, btrfs, dir) [default=btrfs]:
Create a new BTRFS pool? (yes/no) [default=yes]:
Would you like to use an existing block device? (yes/no) [default=no]:
Size in GB of the new loop device (1GB minimum) [default=15GB]: 10GB
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 10.0.5.1/24
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] no
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
Az előző lépésben létrehoztuk Tároló medence ami a nevet kapta ssdpool és amelynek a fájlja a rendszeremen a címen található /var/lib/lxd/disks/ssdpool.img. Ez a fájlrendszer-cím a számítógépem fizikai SSD-meghajtójának felel meg.
A következő műveletek a szerepkör megértésének bővítése érdekében Tároló medence az adattárban létrehozunk egy másodikat Tároló medence amely fizikailag egy másik típusú lemezen, HDD-n lesz elhelyezve. A probléma az, hogy az LXD nem teszi lehetővé a létrehozást Tároló medence címen kívül /var/lib/lxd/disks/ és még a szimbolikus linkek sem működnek, lásd a fejlesztő válaszát. Ezt a korlátozást megkerülhetjük az inicializálás/formázás során Tároló medence úgy, hogy az értéket blokkeszközként adja meg a visszacsatolási fájl elérési útja helyett, ezt a kulcsban megadva source.
Tehát a létrehozás előtt Tároló medence meg kell határoznia egy hurokfájlt vagy egy meglévő partíciót a fájlrendszeren, amelyet használni fog. Ehhez létrehozunk és használunk egy fájlt, amelynek méretét 10 GB-ra korlátozzuk:
dd if=/dev/zero of=/mnt/work/lxd/hddpool.img bs=1MB count=10000
10000+0 records in
10000+0 records out
10000000000 bytes (10 GB, 9,3 GiB) copied, 38,4414 s, 260 MB/s
Csatlakoztassuk a loopback fájlt egy ingyenes loopback eszközhöz:
A kulcsnak köszönhetően --show A parancs végrehajtása visszaadja a képernyőre annak az eszköznek a nevét, amelyhez a visszacsatolási fájlunk kapcsolódik. Ha szükséges, megjeleníthetjük az összes ilyen típusú foglalt eszköz listáját, hogy megbizonyosodjunk a műveleteink helyességéről:
A listából kiderül, hogy az eszköz rendelkezik /dev/loop1 loopback fájl tartalmazza /mnt/work/lxd/hddpool.img, és a készülékben /dev/loop0 loopback fájl tartalmazza /var/lib/lxd/disks/ssdpool.img ami megfelel az alapértelmezettnek Tároló medence.
A következő parancs újat hoz létre Tároló medence LXD-ben az imént elkészített loopback fájl alapján. Az LXD formázza a loopback fájlt /mnt/work/lxd/hddpool.img a készülékben /dev/loop1 BTRFS fájlrendszerhez:
Visszahurkolt fájl automatikus beszúrása a visszahurkolt eszköz nyílásába ^
Van egy kis problémánk, a gazdarendszer újraindításakor, a fájl /mnt/work/lxd/hddpool.img "kirepül" a készülékből /dev/loop1 és az LXD szolgáltatás összeomlik betöltéskor, mert nem fogja látni ezen az eszközön. A probléma megoldásához létre kell hoznia egy rendszerszolgáltatást, amely beilleszti ezt a fájlt az eszközbe /dev/loop1 amikor a gazdagép rendszer elindul.
Alkossunk egység fájltípus szolgáltatás в /etc/systemd/system/ a SystemD inicializálási rendszerhez:
cat << EOF | sudo tee -a /etc/systemd/system/lxd-hddpool.service
[Unit]
Description=Losetup LXD Storage Pool (hddpool)
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img
RemainAfterExit=true
[Install]
WantedBy=local-fs.target
EOF
A szolgáltatás aktiválása:
sudo systemctl enable lxd-hddpool
Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.
A gazdagép rendszer újraindítása után ellenőrizzük a szolgáltatás állapotát:
systemctl status lxd-hddpool.service
● lxd-hddpool.service - Losetup LXD Storage Pool (hddpool)
Loaded: loaded (/etc/systemd/system/lxd-hddpool.service; enabled; vendor preset: disabled)
Active: active (exited) since Wed 2020-04-08 03:43:53 MSK; 1min 37s ago
Process: 711 ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img (code=exited, status=0/SUCCESS)
Main PID: 711 (code=exited, status=0/SUCCESS)
апр 08 03:43:52 manjaro systemd[1]: Starting Losetup LXD Storage Pool (hddpool)...
апр 08 03:43:53 manjaro systemd[1]: Finished Losetup LXD Storage Pool (hddpool).
A kimenetből ellenőrizhetjük, hogy a szolgáltatás állapota van-e aktív, annak ellenére, hogy a szkriptünk végrehajtása egy parancsból befejeződött, az opció lehetővé tette számunkra ezt RemainAfterExit=true.
Mivel az összes tárolófolyamat ténylegesen elszigetelten fut a gazdagépen a kernel használatával, a tárolófolyamatok gazdagéphez való hozzáférésének további védelme érdekében az LXD folyamatjogosultságot kínál, ahol:
Kiváltságos konténerek - ezek olyan konténerek, amelyekben az UID-vel és GID-vel rendelkező folyamatok ugyanannak a tulajdonosnak felelnek meg, mint a gazdagépen. Például egy 0 UID azonosítójú tárolóban futó folyamat ugyanazokkal a hozzáférési jogokkal rendelkezik, mint a 0 UID azonosítójú gazdagépen futó folyamat. Más szóval, a tároló root felhasználója nem csak a a tárolóban, hanem a gazdagépen is, ha ki tud lépni a tároló elszigetelt névterén.
Kiváltságtalan konténerek - ezek olyan konténerek, amelyekben a folyamatok az UID és a GID tulajdonosához tartoznak 0-tól 65535-ig terjedő számmal, de a gazdarendszernél a tulajdonost a hozzáadott SubUID és SubGID bitekkel maszkolja. Például egy tárolóban lévő UID=0 felhasználó a gazdagépen a következőként fog megjelenni SubUID + UID. Ez védi a gazdarendszert, mert ha a tárolóban lévő bármely folyamat képes kilépni az elszigetelt névteréből, akkor csak ismeretlen, nagyon magas UID/GID-vel rendelkező folyamatként tud kommunikálni a gazdarendszerrel.
Alapértelmezés szerint az újonnan létrehozott tárolók privilegizált állapotúak, ezért meg kell határoznunk egy SubUID-t és SubGID-t.
Hozzon létre két konfigurációs fájlt, amelyben beállítjuk a SubUID és a SubGID maszkját:
Mivel korábban az inicializálási varázsló segítségével inicializáltuk a hálózatot lxd init és létrehozott egy hálózati eszközt lxdbr0, akkor ebben a részben egyszerűen megismerkedünk az LXD-ben történő hálózatépítéssel, és a virtuális kapcsoló (híd) létrehozásával a kliens parancs segítségével.
A következő diagram bemutatja, hogyan köti össze egy kapcsoló (híd) a gazdagépet és a konténereket a hálózatba:
A tárolók hálózaton keresztül kommunikálhatnak más tárolókkal vagy azzal a gazdagéppel, amelyen ezeket a tárolókat kiszolgálják. Ehhez a konténerek virtuális hálózati kártyáit össze kell kapcsolni egy virtuális kapcsolóval. Először létrehozunk egy kapcsolót, és a tároló hálózati interfészei a következő fejezetekben lesznek összekapcsolva, miután maga a tároló létrejött.
A következő parancs kapcsolót hoz létre egy alhálózattal 10.0.5.0/24 és IPv4 címet 10.0.5.1/24, és magában foglalja ipv4.nat hogy a tárolók hozzáférhessenek az Internethez a gazdagépen keresztül a NAT szolgáltatás használatával:
Az LXD-ben minden konténer saját konfigurációval rendelkezik, és kiterjesztheti globálisan deklarált konfigurációkkal konfigurációs profilok. A konfigurációs profilok tárolóra történő alkalmazása kaszkádmodelltel rendelkezik, a következő példa ezt szemlélteti:
Ebben a példában három profilt hoztak létre az LXD rendszerben: default, hddpool и hostfs. Mindhárom profil egy helyi konfigurációval (szürke terület) rendelkező tárolóra kerül alkalmazásra. Profil default készüléke van root amelynek van egy paramétere pool egyenlő ssdpool, de a kaszkád konfigurációs alkalmazásmodellnek köszönhetően alkalmazhatunk profilt a tárolóra hddpool amelynek van egy paramétere pool felülírja ugyanazt a paramétert a profilból default és a tároló megkapja az eszközkonfigurációt root paraméterrel pool egyenlő hddpoolés a profilt hostfs egyszerűen hozzáad egy új eszközt a tárolóhoz.
Az elérhető konfigurációs profilok listájának megtekintéséhez használja a következő parancsot:
lxc profile list
+---------+---------+
| NAME | USED BY |
+---------+---------+
| default | 1 |
+---------+---------+
| hddroot | 0 |
+---------+---------+
| ssdroot | 1 |
+---------+---------+
A kulcs hozzáadásával elérhető a profillal való munkavégzéshez rendelkezésre álló parancsok teljes listája --help:
lxc profile --help
Description:
Manage profiles
Usage:
lxc profile [command]
Available Commands:
add Add profiles to instances
assign Assign sets of profiles to instances
copy Copy profiles
create Create profiles
delete Delete profiles
device Manage instance devices
edit Edit profile configurations as YAML
get Get values for profile configuration keys
list List profiles
remove Remove profiles from instances
rename Rename profiles
set Set profile configuration keys
show Show profile configurations
unset Unset profile configuration keys
Alapértelmezett konfigurációs profil default nem rendelkezik hálózati kártya konfigurációval a konténerhez és minden újonnan létrehozott konténernek nincs hálózata, ezekhez külön paranccsal helyi (dedikált) hálózati eszközöket kell létrehozni, de a konfigurációban létrehozhatunk egy globális hálózati eszközt profilt, amely meg lesz osztva a profilt használó összes tároló között. Így közvetlenül az új tároló létrehozásának parancsa után lesz egy hálózatuk hálózati hozzáféréssel. Ugyanakkor nincsenek korlátozások, szükség esetén később bármikor létrehozhatunk helyi hálózati eszközt.
A következő parancs hozzáadja az eszközt a konfigurációs profilhoz eth0 típus nic csatlakozik a hálózathoz lxdbr0:
lxc profile device add default eth0 nic network=lxdbr0 name=eth0
Fontos megjegyezni, hogy mivel az eszközt ténylegesen hozzáadtuk a konfigurációs profilhoz, ha statikus IP-címet adtunk meg az eszközben, akkor minden konténer, amely ezt a profilt fogja használni, ugyanazt az IP-címet fogja használni. Ha létre kell hozni egy tárolót statikus IP-címmel a tárolóhoz, akkor a hálózati eszköz konfigurációját a tároló szintjén (helyi konfiguráció) kell létrehoznia az IP-cím paraméterrel, nem pedig a profil szintjén.
Nézzük a profilt:
lxc profile show default
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: ssdpool
type: disk
name: default
used_by: []
Ebben a profilban láthatjuk, hogy minden újonnan létrehozott tárolóhoz két eszköz jön létre:
eth0 - Eszköztípus nic kapcsolóhoz csatlakoztatva (hálózati híd) lxdbr0
root - Eszköztípus disk amely tárolómedencét használ ssdpool
A korábban létrehozott Tároló medence tárolók, hozzon létre egy konfigurációs profilt ssdroot amelyben egy olyan eszközt adunk hozzá disk rögzítési ponttal / (root) a korábban létrehozott Tároló medence - ssdpool:
A tárolók olyan lemezképekből jönnek létre, amelyek speciálisan összeállított disztribúciók, amelyek nem rendelkeznek Linux kernellel. Ezért a tároló futtatása előtt ebből a képből kell üzembe helyezni. A képek forrása egy helyi adattár, amelybe külső tárhelyekről töltik le a képeket.
A tároló használatának megkezdéséhez hozzá kell adnia egy képet a globális tárolóból a helyi tárolóhoz local:. Most a helyi tároló üres, a parancs megbizonyosodik erről lxc image list. Ha a módszer list ne adjon meg lerakat, akkor alapértelmezés szerint a helyi tároló kerül felhasználásra - local:
lxc image list local:
+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+
Az adattárban lévő képek kezelése a következő módszerekkel történik:
Csapat
Leírás
lxc kép álnév
Képálnevek kezelése
lxc kép másolat
Képek másolása a szerverek között
lxc kép töröl
Képek törlése
lxc kép szerkesztés
Szerkessze a kép tulajdonságait
lxc kép export
Képek exportálása és letöltése
lxc kép importál
Importáljon képeket a képtárba
lxc kép info
Hasznos információk megjelenítése a képekről
lxc kép lista
Képek listázása
lxc kép Frissítés
Képek frissítése
lxc kép előadás
Képtulajdonságok megjelenítése
Másolja a képet a helyi tárba a globális tárolóból images::
Az interaktív mód mellett az LXD támogatja a nem interaktív konfigurációs telepítési módot is, amikor a konfiguráció YAML fájl formájában kerül megadásra, egy speciális formátum, amely lehetővé teszi a teljes konfiguráció egyben történő telepítését a végrehajtás megkerülésével. számos interaktív parancs közül, amelyeket ebben a cikkben fentebb tárgyaltunk, beleértve a hálózati konfigurációt, a konfigurációs profilok létrehozását stb. Erre a területre itt nem térünk ki, ezt saját kezűleg is megnézheti. a dokumentációban.
Következő interaktív parancs lxc config amelyet megnézünk, lehetővé teszi a konfiguráció beállítását. Például annak biztosítására, hogy a helyi tárolóba letöltött képek ne frissüljenek automatikusan a globális adattárakból, engedélyezhetjük ezt a viselkedést a következő paranccsal:
Tároló létrehozásához használja a parancsot lxc init amelyre értékeket adnak át репозиторий:образ majd a tároló kívánt azonosítóját. A tárhely helyiként is megadható local: így minden globális. Ha a tárhely nincs megadva, akkor alapértelmezés szerint a helyi tárolót használja a rendszer a kép megkeresésére. Ha a lemezkép a globális tárolóból van megadva, akkor a rendszer először letölti a lemezképet a helyi tárolóba, majd felhasználja a tároló létrehozásához.
Futtassuk a következő parancsot az első tároló létrehozásához:
lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot
Nézzük sorrendben az általunk használt parancsbillentyűket:
alpine3 — A helyi adattárba korábban feltöltött kép álneve (alias) van megadva. Ha az álnevet nem ehhez a képhez hozták létre, akkor mindig hivatkozhat a képre Ujjlenyomat amely megjelenik a táblázatban.
alp — Beállítja a tároló azonosítóját
--storage — Ez a gomb jelzi, hogy melyikben Tároló medence konténer jön létre
--profile — Ezek a kulcsok lépcsőzetesen alkalmazzák a konfigurációt a korábban létrehozott konfigurációs profilokból a tárolóra
Elindítjuk a tárolót, amely elindítja a disztribúció init rendszerét:
lxc start alp
Használhatja a parancsot is lxc launch amely lehetővé teszi a csapatok összevonását lxc init и lxc start egy műveletben.
A tartály állapotának ellenőrzése:
lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME | STATE | IPV4 | IPV6 | TYPE | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp | RUNNING | 10.0.5.46 (eth0) | | CONTAINER | hddpool |
+------+---------+------------------+------+-----------+--------------+
A szakaszban profiles megbizonyosodhatunk arról, hogy ez a tároló két konfigurációs profilt használ − default и hddroot. Szakaszban devices csak egy eszközt tudunk észlelni, mert a hálózati eszköz profilszinten jött létre default. A tároló által használt összes eszköz megtekintéséhez hozzá kell adni egy kulcsot --expanded:
Ha megpróbálunk IP-címet beállítani egy hálózati eszközhöz eth0 csapat lxc config device set alp konténerkonfigurációra szánt, akkor hibaüzenetet kapunk, amely azt jelenti, hogy az eszköz nem létezik, mert az eszköz eth0 amelyet a konténer használ, az a profilhoz tartozik default:
lxc config device set alp eth0 ipv4.address 10.0.5.5
Error: The device doesn't exist
Természetesen beállíthatunk statikus IP-címet eth0 eszközöket a profilban, de ez ugyanaz lesz az összes tárolóban, amely ezt a profilt fogja használni. Ezért adjunk hozzá egy, a tárolóhoz dedikált eszközt:
lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5
Ezután újra kell indítania a tárolót:
lxc restart alp
Ha most megnézzük a tároló konfigurációját, akkor nem kell használnunk az opciót --expanded a hálózati eszköz megtekintéséhez eth0, mivel a konténer szintjén hoztuk létre, és a profilból ugyanarra az eszközre kaszkádolt default:
Ha közvetlenül, a hálózati kapcsolatokat megkerülve, egy tárolóban szeretne parancsokat végrehajtani, használja a parancsot lxc exec amely parancsokat hajt végre a tárolóban a rendszerhéj elindítása nélkül. Ha parancsot kell végrehajtania egy shellben shell-mintákkal, például változókkal, fájlátirányításokkal (pipe) stb., akkor kifejezetten el kell indítania a shellt, és át kell adnia a parancsot kulcsként, például:
lxc exec alp -- /bin/sh -c "echo $HOME"
A parancs egy speciális escape karaktert használt különleges karakterhez $ hogy a változó $HOME nem a gazdagépen volt értelmezve, hanem csak a tárolón belül volt értelmezve.
Az interaktív shell mód elindítása, majd a munkamenet befejezése a gyorsbillentyűk végrehajtásával is lehetséges CTRL+D:
Az LXD-ben a tárolóerőforrásokat speciális konfigurációkészlettel kezelheti. A tároló konfigurációs paramétereinek teljes listája megtalálható a dokumentációban.
limit.cpu - egy tárolót egy vagy több CPU maghoz köt
limits.cpu.allowance - kezeli vagy a CFS ütemező kvótákat, amikor lejárt az időkorlát, vagy az univerzális CPU erőforrás-megosztási mechanizmust, amikor a százalék lejárt
limits.cpu.priority - ütemező prioritás, ha több, egy processzorkészletet megosztó példányhoz a processzorok azonos százaléka van hozzárendelve
A korlátozások mellett, mint pl limits.read, limits.write korlátozhatjuk a konténer által elfoglalt lemezterületet is (csak ZFS vagy BTRFS esetén működik):
lxc config device set alp root size=2GB
Telepítés után a paraméterben devices.root.size A beállított határértéket ellenőrizhetjük:
lxc config show alp
...
devices:
root:
path: /
pool: hddpool
size: 2GB
type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""
A felhasznált lemezkvóták megtekintéséhez a parancsból kaphatunk lxc info:
lxc info alp
...
Resources:
Processes: 5
Disk usage:
root: 1.05GB
CPU usage:
CPU usage (in seconds): 1
Memory usage:
Memory (current): 5.46MB
Network usage:
eth0:
Bytes received: 802B
Bytes sent: 1.59kB
Packets received: 4
Packets sent: 14
lo:
Bytes received: 0B
Bytes sent: 0B
Packets received: 0
Packets sent: 0
Annak ellenére, hogy a tároló gyökéreszközének korlátot állítottunk 2 GB-ra, a rendszer segédprogramjai, mint pl. df nem fogja látni ezt a korlátozást. Ehhez egy kis tesztet végzünk, és megtudjuk, hogyan működik.
Hozzunk létre 2 új azonos tárolót ugyanabban Tároló medence (hddpool):
lxc exec alp1 -- ls -lh
total 1000M
-rw-r--r-- 1 root root 1000.0M Mar 27 10:16 file.img
Ha a második tárolóban nézünk, ellenőrizzük, hogy van-e fájl ugyanazon a helyen, akkor ez a fájl nem lesz ott, ami várható, mivel a konténerek saját magukban jönnek létre. Tárolási mennyiség ugyanabban a Tároló medence:
lxc exec alp2 -- ls -lh
total 0
De hasonlítsuk össze az általa termelt értékeket df az egyik és a másik tartályon:
lxc exec alp1 -- df -hT
Filesystem Type Size Used Available Use% Mounted on
/dev/loop1 btrfs 9.3G 1016.4M 7.8G 11% /
...
lxc exec alp2 -- df -hT
Filesystem Type Size Used Available Use% Mounted on
/dev/loop1 btrfs 9.3G 1016.4M 7.8G 11% /
...
eszköz /dev/loop1 úgy van felszerelve, mint a gyökérpartíció Tároló medence amelyeket ezek a tárolók használnak, így a térfogatukat ketten osztják meg.
Az LXD képes pillanatképeket készíteni, és ezekből visszaállítani a tároló állapotát.
Pillanatkép létrehozásához futtassa a következő parancsot:
lxc snapshot alp snapshot1
A csapat lxc snapshot nincs elérhető kulcs list, ezért a pillanatképek listájának megtekintéséhez használja a parancsot, amely általános információkat jelenít meg a tárolóról:
lxc info alp
...
...
Snapshots:
snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)
A paranccsal visszaállíthat egy tárolót pillanatfelvételből lxc restore megadva a tárolót, amelyre a visszaállítást végrehajtják, és a pillanatkép álnevet:
lxc restore alp snapshot1
A következő parancs a pillanatkép törlésére szolgál. Kérjük, vegye figyelembe, hogy a parancs szintaxisa nem hasonlít az összes többihez; itt meg kell adnia egy perjelet a tároló neve után. Ha a perjel kimarad, akkor a pillanatkép törlésére vonatkozó parancs tároló törlésére szolgáló parancsként értelmeződik!
lxc delete alp/snapshot1
A fenti példában az úgynevezett állapot nélküli pillanatképeket néztük meg. Az LXD egy másik típusú pillanatképet is tartalmaz - állapottartó, amely elmenti a tárolóban lévő összes folyamat aktuális állapotát. Számos érdekes és hasznos funkció kapcsolódik az állapotalapú pillanatképekhez.