LXD - Linux-konttijärjestelmien perusominaisuudet

LXD - Linux-konttijärjestelmien perusominaisuudet

LXD on seuraavan sukupolven järjestelmäkonttihallinta, niin se sanoo lähde. Se tarjoaa käyttöliittymän, joka muistuttaa virtuaalikoneita, mutta käyttää sen sijaan Linux-säiliöitä.

LXD ydin on etuoikeutettu demoni (root-oikeuksilla toimiva palvelu), joka tarjoaa REST API:n paikallisen unix-socketin kautta sekä verkon kautta, jos sopiva kokoonpano on asennettu. Asiakkaat, kuten LXD:n mukana toimitettu komentorivityökalu, tekevät pyyntöjä tämän REST API:n kautta. Tämä tarkoittaa, että käytätpä paikallista isäntä tai etäisäntä, kaikki toimii samalla tavalla.

Tässä artikkelissa emme käsittele yksityiskohtaisesti LXD:n käsitteitä, emme ota huomioon kaikkia dokumentaatiossa hahmoteltuja käytettävissä olevia ominaisuuksia, mukaan lukien äskettäin toteutettu QEMU-virtuaalikoneiden tuen LXD:n uusimmissa versioissa rinnakkain säiliöiden kanssa. Sen sijaan opimme vain säilönhallinnan perusteet – tallennusvarastojen määrittämistä, verkottumista, säilön käyttämistä, resurssirajoitusten soveltamista ja tilannekuvien käyttöä, jotta saat perusymmärrystä LXD:stä ja säiliöiden käyttämisestä Linuxissa.

Täydelliset tiedot löydät virallisesta lähteestä:

Suunnistus

Asennus LXD ^

LXD:n asentaminen Ubuntu-jakeluihin ^

Ubuntu 19.10 -jakelupaketissa lxd on lähetys päällä napsautuspaketti:

apt search lxd

lxd/eoan 1:0.7 all
  Transitional package - lxd -> snap (lxd)

Tämä tarkoittaa, että kaksi pakettia asennetaan kerralla, toinen järjestelmäpaketina ja toinen pikapakettina. Kahden paketin asentaminen järjestelmään voi aiheuttaa ongelmia, joissa järjestelmäpaketti voi jäädä orvoksi, jos snap-paketin hallinta poistaa snap-paketin.

Etsi paketti lxd snap-arkistossa voit käyttää seuraavaa komentoa:

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

Suorittamalla komennon list voit varmistaa, että paketti lxd ei vielä asennettu:

snap list

Name  Version    Rev   Tracking  Publisher   Notes
core  16-2.43.3  8689  stable    canonical✓  core

Huolimatta siitä, että LXD on snap-paketti, se on asennettava järjestelmäpaketin kautta lxd, joka luo järjestelmään vastaavan ryhmän, tarvittavat apuohjelmat sisään /usr/bin jne.

sudo apt update
sudo apt install lxd

Varmistetaan, että paketti on asennettu pikapakettina:

snap list

Name  Version    Rev    Tracking  Publisher   Notes
core  16-2.43.3  8689   stable    canonical✓  core
lxd   3.21       13474  stable/…  canonical✓  -

LXD:n asentaminen Arch Linux -jakeluihin ^

LXD-paketin asentamiseksi järjestelmään sinun on suoritettava seuraavat komennot, joista ensimmäinen päivittää arkistossa olevien järjestelmän pakettien luettelon, toinen asentaa paketin suoraan:

sudo pacman -Syyu && sudo pacman -S lxd

Paketin asennuksen jälkeen, jotta tavallinen käyttäjä voi hallita LXD:tä, se on lisättävä järjestelmäryhmään lxd:

sudo usermod -a -G lxd user1

Varmistetaan käyttäjä user1 lisätty ryhmään lxd:

id -Gn user1

user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd

Jos ryhmä lxd ei näy luettelossa, sinun on aktivoitava käyttäjäistunto uudelleen. Tätä varten sinun tulee kirjautua ulos ja kirjautua sisään saman käyttäjän alla.

Aktivoi sisään systemd LXD-palvelun lataaminen järjestelmän käynnistyksen yhteydessä:

sudo systemctl enable lxd

Aloitetaan palvelu:

sudo systemctl start lxd

Palvelun tilan tarkistaminen:

sudo systemctl status lxd

Storage LXD (Storage) ^

Ennen kuin alustus alkaa, meidän on ymmärrettävä, kuinka LXD:n tallennus on loogisesti järjestetty.

Tallennus (varastointi) koostuu yhdestä tai useammasta Varastointiallas joka käyttää jotakin tuetuista tiedostojärjestelmistä, kuten ZFS, BTRFS, LVM tai tavallisia hakemistoja. Joka Varastointiallas on jaettu tilavuuksiin (Tallennustilavuus), jotka sisältävät kuvia, säiliöitä tai tietoja muihin tarkoituksiin.

  • kuvakieli - Nämä ovat erityisesti koottuja jakeluita ilman Linux-ydintä ja saatavilla ulkoisista lähteistä
  • kontit - Nämä ovat käyttöön otettuja jakeluita kuvista, valmiita käyttöön
  • Tilannekuvat - Nämä ovat tilannekuvia säiliöiden tilasta, joihin voit palata

LXD - Linux-konttijärjestelmien perusominaisuudet

Voit hallita tallennustilaa LXD:ssä käyttämällä komentoa lxc storage varmenne, jonka voit hankkia määrittämällä avaimen - lxc storage --help

Seuraava komento näyttää luettelon kaikista Varastointiallas LXD-tallennustilassa:

lxc storage list

+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool |             | btrfs  | /dev/loop1                     | 2       |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool |             | btrfs  | /var/lib/lxd/disks/ssdpool.img | 4       |
+---------+-------------+--------+--------------------------------+---------+

Voit tarkastella luetteloa kaikista Tallennustilavuus valitussa Varastointiallas palvelee joukkuetta 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       |
+-----------+----------------------------------+-------------+---------+

Myös jos varten Varastointiallas Luodessasi valittiin BTRFS-tiedostojärjestelmä ja hanki luettelo Tallennustilavuus tai alatilavuuksia BTRFS-tulkinnassa voit käyttää tämän tiedostojärjestelmän työkalupakkia:

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

LXD:tä alustetaan ^

Ennen säilöjen luomista ja käyttöä sinun on suoritettava yleinen LXD-alustus, joka luo ja määrittää verkon ja tallennustilan. Tämä voidaan tehdä manuaalisesti käyttämällä tavallisia asiakaskomentoja, jotka ovat saatavilla luettelossa kutsumalla komentoa lxc --help tai käyttämällä ohjattua alustustoimintoa lxd init vastaamalla muutamaan kysymykseen.

Tiedostojärjestelmän valitseminen Storage Poolille ^

Alustuksen aikana LXD kysyy useita kysymyksiä, mukaan lukien oletustiedostojärjestelmän tyypin määrittäminen Varastointiallas. Oletuksena sille on valittu BTRFS-tiedostojärjestelmä. On mahdotonta vaihtaa toiseen FS:ään luomisen jälkeen. FS:n valitseminen on suositeltavaa ominaisuuksien vertailutaulukko:

Ominaisuus
hakemisto
Btrfs
LVM
ZFS
CEPH

Optimoitu kuvien tallennus
Nro
Joo
Joo
Joo
Joo

Optimoitu esiintymän luominen
Nro
Joo
Joo
Joo
Joo

Optimoitu tilannekuvan luonti
Nro
Joo
Joo
Joo
Joo

Optimoitu kuvansiirto
Nro
Joo
Nro
Joo
Joo

Optimoitu ilmentymän siirto
Nro
Joo
Nro
Joo
Joo

Kopioi ja kirjoita
Nro
Joo
Joo
Joo
Joo

Lohkopohjainen
Nro
Nro
Joo
Nro
Joo

Välitön kloonaus
Nro
Joo
Joo
Joo
Joo

Säilytysohjain, jota voidaan käyttää säiliön sisällä
Joo
Joo
Nro
Nro
Nro

Palauta vanhemmista tilannekuvista (ei uusimmista)
Joo
Joo
Joo
Nro
Joo

Varastointikiintiöt
Joo(*)
Joo
Joo
Joo
Nro

Verkon ja tallennusvaraston alustus ohjatun toiminnon avulla ^

Seuraava komento, jota tarkastelemme, ehdottaa LXD:n pääkomponenttien määrittämistä vastaamalla yksinkertaisiin kysymyksiin alustusvelhon avulla.

Suorita komento lxc init ja kirjoita vastaukset kysymyksiin kaksoispisteen jälkeen alla olevan esimerkin mukaisesti tai muuta niitä ehtojesi mukaan:

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]: 

Lisätallennuspoolin luominen ^

Edellisessä vaiheessa loimme Varastointiallas jolle annettiin nimi ssdpool ja jonka tiedosto sijaitsee järjestelmässäni osoitteessa /var/lib/lxd/disks/ssdpool.img. Tämä tiedostojärjestelmän osoite vastaa tietokoneeni fyysistä SSD-asemaa.

Seuraavat toimet laajentavat ymmärrystä roolista Varastointiallas arkistoon luomme toisen Varastointiallas joka sijaitsee fyysisesti erityyppisellä levyllä, kiintolevyllä. Ongelmana on, että LXD ei salli sinun luoda Varastointiallas osoitteen ulkopuolella /var/lib/lxd/disks/ eivätkä edes symboliset linkit toimi, katso kehittäjän vastaus. Voimme ohittaa tämän rajoituksen alustuksen/alustamisen aikana Varastointiallas määrittämällä arvon lohkolaitteena silmukkatiedoston polun sijaan määrittämällä tämä avaimessa source.

Siis ennen luomista Varastointiallas sinun on määritettävä silmukkatiedosto tai olemassa oleva tiedostojärjestelmäsi osio, jota se käyttää. Tätä varten luomme ja käytämme tiedostoa, jonka koko rajoitetaan 10 Gt:iin:

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

Yhdistetään silmukkatiedosto ilmaiseen takaisinkytkentälaitteeseen:

sudo losetup --find --show /mnt/work/lxd/hddpool.img

/dev/loop1

Kiitos avaimelle --show komennon suorittaminen palauttaa näyttöön sen laitteen nimen, johon silmukkatiedostomme on yhdistetty. Voimme tarvittaessa näyttää luettelon kaikista tämän tyyppisistä varattuista laitteista varmistaaksemme, että toimintamme ovat oikein:

losetup -l

NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                      DIO LOG-SEC
/dev/loop1         0      0         0  0 /mnt/work/lxd/hddpool.img        0     512
/dev/loop0         0      0         1  0 /var/lib/lxd/disks/ssdpool.img   0     512

Luettelosta näet, että laitteessa on /dev/loop1 loopback-tiedosto mukana /mnt/work/lxd/hddpool.img, ja laitteessa /dev/loop0 loopback-tiedosto mukana /var/lib/lxd/disks/ssdpool.img joka vastaa oletusarvoa Varastointiallas.

Seuraava komento luo uuden Varastointiallas LXD:ssä juuri valmistelemamme loopback-tiedoston perusteella. LXD alustaa silmukkatiedoston /mnt/work/lxd/hddpool.img laitteessa /dev/loop1 BTRFS-tiedostojärjestelmälle:

lxc storage create hddpool btrfs size=10GB source=/dev/loop1

Näytämme luettelo kaikista Varastointiallas näytölle:

lxc storage list

+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool |             | btrfs  | /dev/loop1                     | 0       |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool |             | btrfs  | /var/lib/lxd/disks/ssdpool.img | 0       |
+---------+-------------+--------+--------------------------------+---------+

Säilytysaltaan koon kasvattaminen ^

Luomisen jälkeen Varastointiallas, sitä voidaan tarvittaessa laajentaa. varten Varastointiallas BTRFS-tiedostojärjestelmän perusteella suorita seuraavat komennot:

sudo truncate -s +5G /mnt/work/lxd/hddpool.img
sudo losetup -c /dev/loop1
sudo btrfs filesystem resize max /var/lib/lxd/storage-pools/hddpool

Loopback-tiedoston automaattinen lisääminen takaisinkytkentälaitteen paikkaan ^

Meillä on yksi pieni ongelma, kun isäntäjärjestelmää käynnistetään uudelleen, tiedosto /mnt/work/lxd/hddpool.img "lentää" ulos laitteesta /dev/loop1 ja LXD-palvelu kaatuu latauksen aikana, koska se ei näe sitä tässä laitteessa. Tämän ongelman ratkaisemiseksi sinun on luotava järjestelmäpalvelu, joka lisää tämän tiedoston laitteeseen /dev/loop1 kun isäntäjärjestelmä käynnistyy.

Luodaan yksikkö tiedostotyyppi palvelu в /etc/systemd/system/ SystemD-alustusjärjestelmälle:

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

Aktivoi palvelu:

sudo systemctl enable lxd-hddpool

Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.

Kun isäntäjärjestelmä on käynnistetty uudelleen, tarkistamme palvelun tilan:

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).

Tulosteesta voimme varmistaa, että palvelutila on aktiivinenhuolimatta siitä, että komentosarjamme suorittaminen yhdestä komennosta saatiin päätökseen, vaihtoehto antoi meille mahdollisuuden tehdä tämä RemainAfterExit=true.

Turvallisuus. Säilön oikeudet ^

Koska kaikki säilöprosessit toimivat erillään isäntäjärjestelmässä käyttämällä sen ydintä, suojatakseen edelleen säilöntäprosessien pääsyä isäntäjärjestelmään, LXD tarjoaa prosessioikeudet, joissa:

  • Etuoikeutetut kontit - nämä ovat säiliöitä, joissa prosessit UID:llä ja GID:llä vastaavat samaa omistajaa kuin isäntäjärjestelmässä. Esimerkiksi prosessilla, joka ajetaan säilössä, jonka UID on 0, on kaikki samat käyttöoikeudet kuin isäntäjärjestelmän prosessilla, jonka UID on 0. Toisin sanoen säilön pääkäyttäjällä on kaikki oikeudet paitsi säilössä, mutta myös isäntäjärjestelmässä, jos hän voi mennä säilön erillisen nimitilan ulkopuolelle.

  • Epäoikeutetut kontit - nämä ovat säiliöitä, joissa prosessit kuuluvat UID:n ja GID:n omistajalle numeroilla 0 - 65535, mutta isäntäjärjestelmässä omistaja on maskattu käyttämällä lisättyjä SubUID- ja SubGID-bittejä, vastaavasti. Esimerkiksi käyttäjä, jonka UID=0 säilössä, näkyy isäntäjärjestelmässä nimellä SubUID + UID. Tämä suojaa isäntäjärjestelmää, koska jos jokin säilössä oleva prosessi pystyy pakenemaan eristetystä nimiavaruudestaan, se voi kommunikoida isäntäjärjestelmän kanssa vain prosessina, jolla on tuntematon, erittäin korkea UID/GID.

Oletuksena äskettäin luoduilla säilöillä on etuoikeutettu tila, ja siksi meidän on määritettävä SubUID ja SubGID.

Luodaan kaksi asetustiedostoa, joissa asetamme maskin SubUID:lle ja SubGID:lle, vastaavasti:

sudo touch /etc{/subuid,/subgid}
sudo usermod --add-subuids 1000000-1065535 root 
sudo usermod --add-subgids 1000000-1065535 root

Jotta muutokset voidaan ottaa käyttöön, LXD-palvelu on käynnistettävä uudelleen:

sudo systemctl restart lxd

Virtuaalisen verkkokytkimen luominen ^

Koska alustimme verkon aiemmin ohjatun alustustoiminnon avulla lxd init ja loi verkkolaitteen lxdbr0, niin tässä osiossa tutustumme yksinkertaisesti LXD:n verkkoon ja kuinka luodaan virtuaalinen kytkin (silta) asiakaskomennolla.

Seuraava kaavio osoittaa, kuinka kytkin (silta) yhdistää isännän ja säiliöt verkkoon:

LXD - Linux-konttijärjestelmien perusominaisuudet

Kontit voivat kommunikoida verkon kautta muiden säiliöiden tai isäntäkoneen kanssa, jossa näitä säiliöitä palvellaan. Tätä varten sinun on linkitettävä konttien virtuaaliset verkkokortit virtuaalikytkimellä. Luomme ensin kytkimen, ja säilön verkkoliitännät linkitetään seuraavissa luvuissa, kun itse säilö on luotu.

Seuraava komento luo kytkimen aliverkon kanssa 10.0.5.0/24 ja IPv4-osoite 10.0.5.1/24ja sisältää myös ipv4.nat jotta säiliöt voivat käyttää Internetiä isännän kautta NAT-palvelun avulla:

lxc network create lxdbr0 ipv4.address=10.0.5.1/24 ipv4.nat=true ipv6.address=none

LXD:ssä saatavilla olevien verkkolaitteiden luettelon tarkistaminen:

lxc network list

+--------+----------+---------+-------------+---------+
|  NAME  |   TYPE   | MANAGED | DESCRIPTION | USED BY |
+--------+----------+---------+-------------+---------+
| eno1   | physical | NO      |             | 0       |
+--------+----------+---------+-------------+---------+
| lxdbr0 | bridge   | YES     |             | 0       |
+--------+----------+---------+-------------+---------+

Voit myös varmistaa, että verkkolaite on luotu Linux-jakelun vakiotyökalulla - ip link tai ip addr:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:ee:7b:5a:6b:44 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet6 fe80::9571:11f3:6e0c:c07b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether c2:38:90:df:cb:59 brd ff:ff:ff:ff:ff:ff
    inet 10.0.5.1/24 scope global lxdbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::c038:90ff:fedf:cb59/64 scope link 
       valid_lft forever preferred_lft forever
5: veth3ddab174@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxdbr0 state UP group default qlen 1000
    link/ether ca:c3:5c:1d:22:26 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Määritysprofiili ^

Jokaisella LXD:n säiliöllä on oma kokoonpanonsa, ja sitä voidaan laajentaa maailmanlaajuisesti ilmoitetuilla määrityksillä, joita kutsutaan konfigurointiprofiilit. Konfigurointiprofiilien käyttämisessä säilössä on kaskadimalli, seuraava esimerkki osoittaa tämän:

LXD - Linux-konttijärjestelmien perusominaisuudet

Tässä esimerkissä LXD-järjestelmään on luotu kolme profiilia: default, hddpool и hostfs. Kaikki kolme profiilia käytetään säilössä, jolla on paikallinen konfiguraatio (harmaa alue). Profiili default on laite root jolla on parametri pool on yhtä suuri kuin ssdpool, mutta kaskadikonfigurointisovellusmallin ansiosta voimme käyttää profiilia säiliöön hddpool jolla on parametri pool ohittaa saman parametrin profiilista default ja säiliö vastaanottaa laitekokoonpanon root parametrin kanssa pool yhtäläinen hddpoolja profiili hostfs yksinkertaisesti lisää uuden laitteen säiliöön.

Näet luettelon käytettävissä olevista kokoonpanoprofiileista käyttämällä seuraavaa komentoa:

lxc profile list

+---------+---------+
|  NAME   | USED BY |
+---------+---------+
| default | 1       |
+---------+---------+
| hddroot | 0       |
+---------+---------+
| ssdroot | 1       |
+---------+---------+

Täydellinen luettelo käytettävissä olevista komennoista profiilin kanssa työskentelemiseen saadaan lisäämällä avaimen --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

Profiilisi muokkaaminen ^

Oletusmääritysprofiili default ei ole verkkokorttikonfiguraatiota säilölle ja kaikissa äskettäin luoduissa säilöissä ei ole verkkoa, niitä varten on tarpeen luoda paikallisia (omistettuja) verkkolaitteita erillisellä komennolla, mutta voimme luoda globaalin verkkolaitteen konfiguraatiossa profiili, joka jaetaan kaikkien tätä profiilia käyttävien säilöjen kesken. Tällä tavalla heti uuden säilön luomiskomennon jälkeen heillä on verkko, jolla on pääsy verkkoon. Samalla ei ole rajoituksia, voimme aina tarvittaessa luoda paikallisen verkkolaitteen myöhemmin.

Seuraava komento lisää laitteen määritysprofiiliin eth0 типа nic kytketty verkkoon lxdbr0:

lxc profile device add default eth0 nic network=lxdbr0 name=eth0

On tärkeää huomata, että koska lisäsimme laitteen konfigurointiprofiiliin, jos määritimme laitteelle staattisen IP-osoitteen, kaikki tätä profiilia käyttävät säiliöt jakavat saman IP-osoitteen. Jos on tarpeen luoda säilö, jolla on staattinen IP-osoite, joka on varattu säilölle, sinun tulee luoda verkkolaitteen konfiguraatio säilötasolla (paikallinen kokoonpano) IP-osoiteparametrilla, ei profiilitasolla.

Katsotaanpa profiilia:

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: []

Tässä profiilissa näemme, että kaikille äskettäin luoduille säilöille luodaan kaksi laitetta:

  • eth0 - Laitetyyppi nic kytketty kytkimeen (verkkosilta) lxdbr0
  • root - Laitetyyppi disk joka käyttää varasto-allasta ssdpool

Uusien profiilien luominen ^

Käyttääksesi aiemmin luotua Varastointiallas säilöjä, luo määritysprofiili ssdroot johon lisäämme laitteen, kuten disk kiinnityspisteen kanssa / (juuri) käyttämällä aiemmin luotua Varastointiallas - ssdpool:

lxc profile create ssdroot
lxc profile device add ssdroot root disk path=/ pool=ssdpool

Samalla tavalla luomme laitteen kaltaisen disk, mutta tässä tapauksessa käyttämällä Varastointiallas - hddpool:

lxc profile create hddroot
lxc profile device add hddroot root disk path=/ pool=hddpool

Konfigurointiprofiilien tarkistaminen:

lxc profile show ssdroot

config: {}
description: ""
devices:
  root:
    path: /
    pool: ssdpool
    type: disk
name: ssdroot
used_by: []

lxc profile show hddroot

config: {}
description: ""
devices:
  root:
    path: /
    pool: hddpool
    type: disk
name: hddroot
used_by: []

Kuvavarasto ^

Säilöt luodaan kuvista, jotka ovat erityisesti koottuja jakeluja, joissa ei ole Linux-ydintä. Siksi ennen säilön suorittamista se on otettava käyttöön tästä kuvasta. Kuvien lähde on paikallinen arkisto, johon kuvat ladataan ulkoisista arkistoista.

Etäkuvavarastot ^

Oletusarvoisesti LXD on määritetty vastaanottamaan kuvia kolmesta etälähteestä:

  • ubuntu: (vakaille Ubuntu-kuville)
  • ubuntu-daly: (päivittäisille Ubuntu-kuville)
  • kuvien: (joille muille distroille)

lxc remote list

+-----------------+------------------------------------------+--------+--------+
|      NAME       |                   URL                    | PUBLIC | STATIC |
+-----------------+------------------------------------------+--------+--------+
| images          | https://images.linuxcontainers.org       | YES    | NO     |
+-----------------+------------------------------------------+--------+--------+
| local (default) | unix://                                  | NO     | YES    |
+-----------------+------------------------------------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | YES    | YES    |
+-----------------+------------------------------------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | YES    | YES    |
+-----------------+------------------------------------------+--------+--------+

Esimerkiksi arkisto ubuntu: on seuraavat kuvat:

lxc image -c dasut list ubuntu: | head -n 11

+----------------------------------------------+--------------+----------+------------+
|                   DESCRIPTION                | ARCHITECTURE |   SIZE   |   TYPE     |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150728)  | x86_64       | 153.72MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150819)  | x86_64       | 152.91MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150906)  | x86_64       | 154.69MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150930)  | x86_64       | 153.86MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+

Käytimme vaihtoehtoa näyttääksesi rajoitetun määrän sarakkeita -c parametrien kanssa dasutja rajoitti myös luettelon pituutta komennolla head.

Suodatus on käytettävissä kuvien luettelon näyttämiseksi. Seuraava komento listaa kaikki saatavilla olevat jakeluarkkitehtuurit AlpineLinux:

lxc image -c ldast list images:alpine/3.11

+------------------------------+--------------------------------------+--------------+
|            ALIAS             |             DESCRIPTION              | ARCHITECTURE |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11 (3 more)         | Alpine 3.11 amd64 (20200220_13:00)   | x86_64       |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/arm64 (1 more)   | Alpine 3.11 arm64 (20200220_13:00)   | aarch64      |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/armhf (1 more)   | Alpine 3.11 armhf (20200220_13:00)   | armv7l       |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/i386 (1 more)    | Alpine 3.11 i386 (20200220_13:01)    | i686         |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/ppc64el (1 more) | Alpine 3.11 ppc64el (20200220_13:00) | ppc64le      |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/s390x (1 more)   | Alpine 3.11 s390x (20200220_13:00)   | s390x        |
+------------------------------+--------------------------------------+--------------+

Paikallinen kuvavarasto ^

Jotta voit aloittaa säilön käytön, sinun on lisättävä kuva globaalista arkistosta paikalliseen local:. Nyt paikallinen arkisto on tyhjä, komento varmistaa tämän lxc image list. Jos menetelmä list älä määritä arkistoa, niin paikallista arkistoa käytetään oletuksena - local:

lxc image list local:

+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+

Arkiston kuvia hallitaan seuraavilla tavoilla:

Joukkue
Kuvaus

lxc kuva alias
Hallitse kuvien aliaksia

lxc kuva kopio
Kopioi kuvat palvelimien välillä

lxc kuva poistaa
Poista kuvia

lxc kuva muokata
Muokkaa kuvan ominaisuuksia

lxc kuva vienti
Vie ja lataa kuvia

lxc kuva tuoda
Tuo kuvat kuvakauppaan

lxc kuva tiedot
Näytä hyödyllistä tietoa kuvista

lxc kuva lista
Listaa kuvia

lxc kuva virkistää
Päivitä kuvat

lxc kuva näyttää
Näytä kuvan ominaisuudet

Kopioi kuva paikalliseen arkistoon globaalista arkistosta images::

lxc image copy images:alpine/3.11/amd64 local: --alias=alpine3

Image copied successfully!

Näytetään luettelo kaikista paikallisessa arkistossa tällä hetkellä saatavilla olevista kuvista local::

lxc image -c lfdatsu list local:

+---------+--------------+------------------------------------+--------------+
|  ALIAS  | FINGERPRINT  |            DESCRIPTION             | ARCHITECTURE |
+---------+--------------+------------------------------------+--------------+
| alpine3 | 73a3093d4a5c | Alpine 3.11 amd64 (20200220_13:00) | x86_64       |
+---------+--------------+------------------------------------+--------------+

LXD-kokoonpano ^

Vuorovaikutteisen tilan lisäksi LXD tukee myös ei-interaktiivista asetusten asennustilaa, jolloin kokoonpano määritetään YAML-tiedoston muodossa, joka on erityinen muoto, jonka avulla voit asentaa koko kokoonpanon kerralla ohittaen suorituksen. monista interaktiivisista komennoista, joita käsiteltiin edellä tässä artikkelissa, mukaan lukien verkon asetukset, määritysprofiilien luominen jne. Emme käsittele tätä aluetta täällä, voit tarkistaa sen itse. dokumentaatiossa.

Seuraava interaktiivinen komento lxc config jonka avulla voit määrittää kokoonpanon. Esimerkiksi varmistaaksemme, että paikalliseen arkistoon ladattuja kuvia ei päivitetä automaattisesti yleisistä arkistoista, voimme ottaa tämän toiminnan käyttöön seuraavalla komennolla:

lxc config set images.auto_update_cached=false

Kontin luominen ja hallinta ^

Säilön luomiseksi käytä komentoa lxc init joille arvot välitetään репозиторий:образ ja sitten säilön haluttu tunnus. Arkisto voidaan määrittää paikalliseksi local: niin on mikä tahansa globaali. Jos arkistoa ei ole määritetty, kuvan etsimiseen käytetään oletusarvoisesti paikallista arkistoa. Jos kuva on määritetty yleisestä arkistosta, kuva ladataan ensin paikalliseen arkistoon ja sitä käytetään sitten säilön luomiseen.

Suoritetaan seuraava komento ensimmäisen säilön luomiseksi:

lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot

Katsotaanpa tässä käyttämiämme komentonäppäimiä järjestyksessä:

  • alpine3 — Aiemmin paikalliseen arkistoon ladatulle kuvalle on määritetty alias (alias). Jos aliasta ei ole luotu tälle kuvalle, voit aina viitata kuvaan sen perusteella Sormenjälki joka näkyy taulukossa.
  • alp — Asettaa säilön tunnisteen
  • --storage — Tämä näppäin osoittaa missä Varastointiallas kontti luodaan
  • --profile — Nämä näppäimet peräkkäin soveltavat säilöön aiemmin luoduista konfiguraatioprofiileista peräisin olevia määrityksiä

Käynnistämme kontin, joka alkaa käynnistää jakelun aloitusjärjestelmän:

lxc start alp

Voit myös käyttää komentoa lxc launch jonka avulla voit yhdistää joukkueita lxc init и lxc start yhdessä operaatiossa.

Säiliön tilan tarkistaminen:

lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME |  STATE  |       IPV4       | IPV6 |   TYPE    | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp  | RUNNING | 10.0.5.46 (eth0) |      | CONTAINER | hddpool      |
+------+---------+------------------+------+-----------+--------------+

Säiliön kokoonpanon tarkistaminen:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: vethb1fe71d8
  volatile.eth0.hwaddr: 00:16:3e:5f:73:3e
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  root:
    path: /
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

osiossa profiles voimme varmistaa, että tämä säilö käyttää kahta konfigurointiprofiilia − default и hddroot. Osassa devices voimme havaita vain yhden laitteen, koska verkkolaite luotiin profiilitasolla default. Jotta näet kaikki säilön käyttämät laitteet, sinun on lisättävä avain --expanded:

lxc config show alp --expanded

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: vethb1fe71d8
  volatile.eth0.hwaddr: 00:16:3e:5f:73:3e
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  eth0:
    name: eth0
    network: lxdbr0
    type: nic
  root:
    path: /
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Staattisen IP-osoitteen asettaminen ^

Jos yritämme asettaa IP-osoitteen verkkolaitteelle eth0 joukkue lxc config device set alp tarkoitettu konttikokoonpanoon, niin saamme virheilmoituksen, joka ilmoittaa, että laitetta ei ole olemassa, koska laite eth0 jota kontti käyttää, kuuluu profiiliin default:

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: The device doesn't exist

Voimme tietysti asettaa staattisen IP-osoitteen eth0 laitteita profiilissa, mutta se on sama kaikille tätä profiilia käyttäville säilöille. Lisätään siis säiliöön omistettu laite:

lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

Sitten sinun on käynnistettävä säiliö uudelleen:

lxc restart alp

Jos tarkastelemme nyt säilön kokoonpanoa, meidän ei tarvitse käyttää vaihtoehtoa --expanded nähdäksesi verkkolaitteen eth0, koska loimme sen säiliötasolla ja se siirtyi saman laitteen yli profiilista default:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: veth2a1dc59d
  volatile.eth0.hwaddr: 00:16:3e:0e:e2:71
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  eth0:
    ipv4.address: 10.0.5.5
    name: eth0
    nictype: bridged
    parent: lxdbr0
    type: nic
  root:
    path: /
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Säiliön poistaminen ^

Voit poistaa säilön komennolla lxc delete, mutta ennen säiliön poistamista se on pysäytettävä komennolla lxc stop:

lxc stop alp

lxc list

+------+---------+-------------------+------+-----------+-----------+
| NAME |  STATE  |       IPV4        | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+-------------------+------+-----------+-----------+
| alp  | STOPPED | 10.0.5.10 (eth0)  |      | CONTAINER | 0         |
+------+---------+-------------------+------+-----------+-----------+

Kun olemme varmistaneet, että kontin tila on tullut PYSÄYTETTY, se voidaan poistaa Varastointiallas:

lxc delete alp

Kontin käyttöoikeus ^

Käytä komentoa suorittaaksesi komentoja säilössä suoraan verkkoyhteydet ohittaen lxc exec joka suorittaa komentoja säilössä käynnistämättä järjestelmän kuorta. Jos sinun on suoritettava komentotulkissa komentotulkkikuvioita, kuten muuttujia, tiedostojen uudelleenohjauksia (putki) jne., sinun on käynnistettävä komentotulkki ja välitettävä komento avaimena, esimerkiksi:

lxc exec alp -- /bin/sh -c "echo $HOME"

Komento käytti erityistä pakomerkkiä erikoishahmolle $ niin että muuttuja $HOME ei tulkittu isäntäkoneella, vaan se tulkittiin vain säilön sisällä.

On myös mahdollista käynnistää interaktiivinen komentotulkkitila ja sitten lopettaa istunto suorittamalla pikanäppäin CTRL+D:

lxc exec alp -- /bin/sh

Säilön resurssien hallinta ^

LXD:ssä voit hallita säilöresursseja käyttämällä erityistä määrityssarjaa. Täydellinen luettelo säilön kokoonpanoparametreista löytyy dokumentaatiossa.

RAM-resurssien rajoitus ^

Parametri limits.memory rajoittaa säilön käytettävissä olevan RAM-muistin määrää. Arvo on numero ja yksi käytettävissä olevat päätteet.

Asetetaan säilön RAM-rajoitukseksi 256 Mt:

lxc config set alp limits.memory 256MB

Muistin rajoittamiseen on myös muita parametreja:

  • limits.memory.enforce
  • limits.memory.hugepages
  • limits.memory.swap
  • limits.memory.swap.priority

Joukkue lxc config show voit näyttää koko säilön kokoonpanon, mukaan lukien määritetyn sovelletun resurssirajan:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200220_13:00)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200220_13:00"
  image.type: squashfs
  limits.memory: 256MB
  volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
  volatile.eth0.host_name: veth75b6df07
  volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
  volatile.idmap.base: "0"
  volatile.idmap.current: '[]'
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

CPU-resurssiraja ^

On olemassa useita tapoja rajoittaa suorittimen resursseja. tyyppisiä rajoituksia:

  • limit.cpu - sitoo kontin yhteen tai useampaan CPU-ytimeen
  • limits.cpu.allowance - hallitsee joko CFS-aikataulukiintiöitä, kun aikaraja on umpeutunut, tai yleistä suorittimen resurssien jakamismekanismia, kun prosenttiosuus on kulunut
  • limits.cpu.priority - Aikataulun prioriteetti, kun useille esiintymille, jotka jakavat joukon prosessoreita, määritetään sama prosenttiosuus prosessoreista

lxc config set alp limits.cpu.allowance 40%

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200220_13:00)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200220_13:00"
  image.type: squashfs
  limits.cpu.allowance: 40%
  limits.memory: 256MB
  volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
  volatile.eth0.host_name: veth75b6df07
  volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
  volatile.idmap.base: "0"
  volatile.idmap.current: '[]'
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

Levytilan rajoitus ^

Rajoitusten lisäksi mm limits.read, limits.write voimme myös rajoittaa kontin käyttämän levytilan määrää (toimii vain ZFS:n tai BTRFS:n kanssa):

lxc config device set alp root size=2GB

Asennuksen jälkeen parametrissa devices.root.size Voimme tarkistaa asetetun rajan:

lxc config show alp
...
devices:
  root:
    path: /
    pool: hddpool
    size: 2GB
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Nähdäksesi käytetyt levykiintiöt voimme saada komennosta 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

Huolimatta siitä, että olemme asettaneet kontin juurilaitteen rajaksi 2 Gt, järjestelmäapuohjelmat, kuten df ei näe tätä rajoitusta. Tätä varten teemme pienen testin ja selvitämme, miten se toimii.

Luodaan 2 uutta identtistä säilöä samaan Varastointiallas (hddpool):

lxc init alpine3 alp1 --storage=hddpool --profile=default --profile=hddroot
lxc init alpine3 alp2 --storage=hddpool --profile=default --profile=hddroot

lxc list
+------+---------+------------------+------+-----------+-----------+
| NAME |  STATE  |       IPV4       | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+------------------+------+-----------+-----------+
| alp1 | RUNNING | 10.0.5.46 (eth0) |      | CONTAINER | 0         |
+------+---------+------------------+------+-----------+-----------+
| alp2 | RUNNING | 10.0.5.30 (eth0) |      | CONTAINER | 0         |
+------+---------+------------------+------+-----------+-----------+

Luodaan 1 Gt:n tiedosto johonkin säilöistä:

lxc exec alp1 -- dd if=/dev/urandom of=file.img bs=1M count=1000

Varmistetaan, että tiedosto on luotu:

lxc exec alp1 -- ls -lh
total 1000M  
-rw-r--r--    1 root     root     1000.0M Mar 27 10:16 file.img

Jos katsomme toisesta säilöstä, tarkista, onko samassa paikassa tiedosto, niin tämä tiedosto ei ole siellä, mikä on odotettavissa, koska säilöt luodaan omissa paikoissaan. Tallennustilavuus samassa Varastointiallas:

lxc exec alp2 -- ls -lh
total 0

Mutta verrataanpa sen tuottamia arvoja df yhdessä ja toisessa säiliössä:

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% /
...

laite /dev/loop1 asennettu juuriosion mukaan Varastointiallas joita nämä säiliöt käyttävät, joten ne jakavat tilavuuden kahden kesken.

Resurssien kulutustilastot ^

Voit tarkastella säilön resurssien kulutustilastoja komennolla:

lxc info alp

Name: alp
Location: none
Remote: unix://
Architecture: x86_64
Created: 2020/04/08 18:05 UTC
Status: Running
Type: container
Profiles: default, hddroot
Pid: 19219
Ips:
  eth0: inet    10.0.5.5        veth2a1dc59d
  eth0: inet6   fe80::216:3eff:fe0e:e271        veth2a1dc59d
  lo:   inet    127.0.0.1
  lo:   inet6   ::1
Resources:
  Processes: 5
  Disk usage:
    root: 495.62kB
  CPU usage:
    CPU usage (in seconds): 1
  Memory usage:
    Memory (current): 4.79MB
  Network usage:
    eth0:
      Bytes received: 730B
      Bytes sent: 1.59kB
      Packets received: 3
      Packets sent: 14
    lo:
      Bytes received: 0B
      Bytes sent: 0B
      Packets received: 0
      Packets sent: 0

Työskentely tilannekuvien kanssa ^

LXD:llä on mahdollisuus luoda tilannekuvia ja palauttaa niistä säilön tila.

Luo tilannekuva suorittamalla seuraava komento:

lxc snapshot alp snapshot1

Joukkue lxc snapshot avainta ei ole saatavilla listsiksi, jotta voit tarkastella tilannekuvien luetteloa, sinun on käytettävä komentoa, joka näyttää yleiset tiedot säilöstä:

lxc info alp
...
...
Snapshots:
  snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)

Voit palauttaa säilön tilannekuvasta komennolla lxc restore määritetään säilö, jolle palautus suoritetaan, ja tilannekuvan alias:

lxc restore alp snapshot1

Seuraavaa komentoa käytetään tilannevedoksen poistamiseen. Huomaa, että komennon syntaksi ei ole samanlainen kuin kaikki muut; tässä sinun on määritettävä vinoviiva säilön nimen jälkeen. Jos vinoviiva jätetään pois, tilannevedoksen poistamiskomento tulkitaan komennon poistaa säilön!

lxc delete alp/snapshot1

Yllä olevassa esimerkissä tarkastelimme niin kutsuttuja tilattomia tilannekuvia. LXD:ssä on toisen tyyppisiä tilannekuvia - tilallisia, jotka tallentavat kaikkien säiliössä olevien prosessien nykyisen tilan. Tilallisiin tilannekuviin liittyy useita mielenkiintoisia ja hyödyllisiä ominaisuuksia.

Mitä muuta? ^

  • Python-kehittäjille on saatavilla moduuli PyLXD joka tarjoaa API:n LXD:lle

PÄIVITYS 10.04.2020 15:00: Navigointi lisätty

Lähde: will.com

Lisää kommentti