LXD - Linux edukiontzi sistemen oinarrizko ezaugarriak

LXD - Linux edukiontzi sistemen oinarrizko ezaugarriak

LXD hurrengo belaunaldiko sistemaren edukiontzien kudeatzailea da, hala dio iturri. Makina birtualen antzeko erabiltzailearen interfazea eskaintzen du, baina Linux edukiontziak erabiltzen ditu horren ordez.

LXD nukleoa deabru pribilegiatu bat da (root eskubideekin exekutatzen den zerbitzua) REST API bat unix socket lokal baten bidez eskaintzen duena, baita sarearen bidez ere, konfigurazio egokia instalatuta badago. Bezeroek, hala nola, LXD-rekin hornitutako komando-lerroko tresnak, eskaerak egiten dituzte REST API honen bidez. Horrek esan nahi du tokiko ostalari edo urruneko ostalari batera sartzen ari bazara, dena berdin funtzionatzen duela.

Artikulu honetan ez gara LXDren kontzeptuetan sakonduko, ez ditugu kontuan hartuko dokumentazioan azaltzen diren gaitasun erabilgarri guztiak, LXDren azken bertsioetan QEMU makina birtualen euskarria edukiontziekin paraleloan duela gutxi inplementatzea barne. Horren ordez, edukiontzien kudeaketaren oinarriak bakarrik ikasiko ditugu: biltegiratze-igerilekuak konfiguratzea, sareak konektatzea, edukiontzi bat martxan jartzea, baliabideen mugak aplikatzea eta argazkiak nola erabili, LXD-ren oinarrizko ulermena lortu eta Linux-en edukiontziak erabili ahal izateko.

Informazio osoa lortzeko, jo iturri ofizialera:

nabigazioa

Instalazioa LXD ^

LXD instalatzen Ubuntu banaketetan ^

Ubuntu 19.10 banaketa paketean lxd emankizun bat dauka snap paketea:

apt search lxd

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

Horrek esan nahi du bi pakete aldi berean instalatuko direla, bata sistema pakete gisa eta bestea snap pakete gisa. Sistema batean bi pakete instalatzeak arazoren bat sor dezake, non sistemaren paketea umezurtz geratu daitekeen, snap paketearen kudeatzaileak kentzen badu.

Aurkitu paketea lxd snap biltegian komando hau erabil dezakezu:

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

Komandoa exekutatuz list paketea dela ziurtatu dezakezu lxd oraindik instalatu gabe:

snap list

Name  Version    Rev   Tracking  Publisher   Notes
core  16-2.43.3  8689  stable    canonicalβœ“  core

LXD snap paketea izan arren, sistema paketearen bidez instalatu behar da lxd, sisteman dagokion taldea sortuko duena, beharrezko utilitateak barruan /usr/bin eta abar.

sudo apt update
sudo apt install lxd

Ziurtatu paketea snap pakete gisa instalatuta dagoela:

snap list

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

LXD instalatzen Arch Linux banaketan ^

LXD paketea sisteman instalatzeko, komando hauek exekutatu behar dituzu, lehenengoak biltegian eskuragarri dagoen sistemako paketeen zerrenda eguneratuko du, bigarrenak paketea zuzenean instalatuko du:

sudo pacman -Syyu && sudo pacman -S lxd

Paketea instalatu ondoren, ohiko erabiltzaile batek LXD kudeatzeko, sistema taldean gehitu behar da lxd:

sudo usermod -a -G lxd user1

Ziur dezagun erabiltzailea user1 taldean gehitu da lxd:

id -Gn user1

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

Taldea bada lxd ez dago zerrendan ikusgai, orduan erabiltzailearen saioa berriro aktibatu behar duzu. Horretarako, saioa amaitu eta erabiltzaile berarekin hasi behar duzu.

Aktibatu systemd LXD zerbitzua kargatzea sistema abiaraztean:

sudo systemctl enable lxd

Hasi gaitezen zerbitzua:

sudo systemctl start lxd

Zerbitzuaren egoera egiaztatzea:

sudo systemctl status lxd

Biltegiratze LXD (biltegiratzea) ^

Hasieratzea hasi baino lehen, LXD-n biltegiratzea logikoki nola antolatzen den ulertu behar dugu.

Biltegiratzea (Biltegiratzea) osatzen dute batetik edo gehiagotik Biltegiratze Igerilekua Onartutako fitxategi-sistemetako bat erabiltzen duena, hala nola ZFS, BTRFS, LVM edo direktorio arruntak. Bakoitzak Biltegiratze Igerilekua bolumenetan banatuta dago (Biltegiratze bolumena) beste helburu batzuetarako irudiak, edukiontziak edo datuak dituztenak.

  • irudiak - Linux nukleorik gabe bereziki muntatutako banaketak dira eta kanpoko iturrietatik eskuragarri daude
  • edukiontzi - Irudietatik banatutako banaketak dira, erabiltzeko prest
  • Argazkiak - itzul ditzakezun edukiontzien egoeraren argazkiak dira

LXD - Linux edukiontzi sistemen oinarrizko ezaugarriak

LXD-n biltegiratzea kudeatzeko, erabili komandoa lxc storage gakoa zehaztuz lor dezakezun ziurtagiria - lxc storage --help

Ondorengo komandoak guztien zerrenda bistaratzen du Biltegiratze Igerilekua LXD biltegian:

lxc storage list

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

Guztien zerrenda ikusteko Biltegiratze bolumena hautatutakoan Biltegiratze Igerilekua taldeari balio dio 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       |
+-----------+----------------------------------+-------------+---------+

Gainera, bada Biltegiratze Igerilekua Sortzean, BTRFS fitxategi-sistema hautatu zen, gero zerrenda bat lortu Biltegiratze bolumena edo azpibolumenak BTRFS interpretazioan, fitxategi-sistema honen tresna-kit erabil dezakezu:

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 hasieratzen ^

Edukiontziak sortu eta erabili aurretik, sarea eta biltegiratzea sortu eta konfiguratzen dituen LXD hasierako orokor bat egin behar duzu. Hori eskuz egin daiteke zerrendan eskuragarri dauden bezero-komando estandarrak erabiliz komandoari deituz lxc --help edo hasieratzeko morroia erabiliz lxd init galdera batzuei erantzunez.

Biltegiratze biltegirako fitxategi-sistema hautatzea ^

Hasieran, LXD-k hainbat galdera egiten ditu, besteak beste, lehenetsitako fitxategi-sistema mota zehaztea Biltegiratze Igerilekua. Lehenespenez, BTRFS fitxategi-sistema hautatzen da horretarako. Sortu ondoren ezinezkoa izango da beste FS batera aldatzea. FS bat hautatzeko gomendatzen da ezaugarrien alderaketa taula:

Feature
Directory
Btrfs
LVM
ZFS
CEPH

Irudien biltegiratze optimizatua
no
bai
bai
bai
bai

Instantziaren sorrera optimizatua
no
bai
bai
bai
bai

Argazkien sorkuntza optimizatua
no
bai
bai
bai
bai

Irudien transferentzia optimizatua
no
bai
no
bai
bai

Instantzia transferentzia optimizatua
no
bai
no
bai
bai

Kopiatu idaztean
no
bai
bai
bai
bai

Blokeetan oinarrituta
no
no
bai
no
bai

Berehalako klonazioa
no
bai
bai
bai
bai

Biltegiratze kontrolatzailea edukiontzi baten barruan erabil daiteke
bai
bai
no
no
no

Leheneratu argazki zaharretatik (ez azkena)
bai
bai
bai
no
bai

Biltegiratze-kuotak
bai (*)
bai
bai
bai
no

Sarea eta Biltegiratze Pool hasieratzea morroia erabiliz ^

Aztertuko dugun hurrengo komandoak LXDren osagai nagusiak konfiguratzea proposatzen du hasierako morroia erabiliz galdera errazak erantzunez.

Exekutatu komandoa lxc init eta idatzi bi puntuen ondoren galderen erantzunak beheko adibidean erakusten den moduan edo aldatu zure baldintzen arabera:

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

Biltegiratze igerileku gehigarri bat sortzea ^

Aurreko urratsean sortu genuen Biltegiratze Igerilekua izena jarri zioten ssdpool eta horren fitxategia nire sisteman dago helbidean /var/lib/lxd/disks/ssdpool.img. Fitxategi-sistemaren helbide hau nire ordenagailuko SSD unitate fisikoari dagokio.

Ondorengo ekintzak, jokatutako rolaren ulermena zabaltzeko Biltegiratze Igerilekua biltegian, bigarren bat sortuko dugu Biltegiratze Igerilekua fisikoki beste disko mota batean kokatuko dena, HDD. Arazoa da LXD-k ez dizula sortzen uzten Biltegiratze Igerilekua helbidetik kanpo /var/lib/lxd/disks/ eta esteka sinbolikoek ere ez dute funtzionatuko, ikusi garatzailearen erantzuna. Muga hori saihestu dezakegu hasierako/formateatzeko garaian Biltegiratze Igerilekua balioa bloke-gailu gisa zehaztuz, loopback fitxategirako bidearen ordez, hau gakoan zehaztuz source.

Beraz, sortu baino lehen Biltegiratze Igerilekua Loopback fitxategi bat edo lehendik dagoen partizio bat definitu behar duzu zure fitxategi-sisteman erabiliko duen. Horretarako, 10 GB-ra mugatuko dugun fitxategi bat sortu eta erabiliko dugu:

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

Konektatu dezagun loopback fitxategia doako loopback gailu batera:

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

/dev/loop1

Giltzari esker --show komandoa exekutatzean gure loopback fitxategia konektatuta dagoen gailuaren izena itzultzen da pantailara. Beharrezkoa izanez gero, mota honetako okupatutako gailu guztien zerrenda bistaratu dezakegu gure ekintzak zuzenak direla ziurtatzeko:

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

Zerrendatik gailuak daukala aurki dezakezu /dev/loop1 loopback fitxategia barne /mnt/work/lxd/hddpool.img, eta gailuan /dev/loop0 loopback fitxategia barne /var/lib/lxd/disks/ssdpool.img lehenetsiari dagokiona Biltegiratze Igerilekua.

Hurrengo komandoak berri bat sortzen du Biltegiratze Igerilekua LXDn prestatu berri dugun loopback fitxategian oinarrituta. LXD-k loopback fitxategia formateatuko du /mnt/work/lxd/hddpool.img gailuan /dev/loop1 BTRFS fitxategi sistemarako:

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

Erakuts dezagun guztien zerrenda Biltegiratze Igerilekua pantailaratzeko:

lxc storage list

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

Biltegiratze-igerilekuaren tamaina handitzea ^

Sortu ondoren Biltegiratze Igerilekua, behar izanez gero, zabaldu egin daiteke. Izan ere Biltegiratze Igerilekua BTRFS fitxategi-sisteman oinarrituta, exekutatu komando hauek:

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 fitxategi bat automatikoki txertatzea loopback gailuaren zirrikituan ^

Arazo txiki bat dugu, ostalariaren sistema berrabiaraztean, fitxategia /mnt/work/lxd/hddpool.img gailutik "hegan egingo du". /dev/loop1 eta LXD zerbitzua kargatzean huts egingo du gailu honetan ez duelako ikusiko. Arazo hau konpontzeko, fitxategi hau gailuan txertatuko duen sistema-zerbitzu bat sortu behar duzu /dev/loop1 ostalariaren sistema abiarazten denean.

Sor dezagun unitate fitxategi mota zerbitzua Π² /etc/systemd/system/ SystemD hasierako sistemarako:

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

Aktibatu zerbitzua:

sudo systemctl enable lxd-hddpool

Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service β†’ /etc/systemd/system/lxd-hddpool.service.

Ostalari sistema berrabiarazi ondoren, zerbitzuaren egoera egiaztatzen dugu:

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

Irteeran zerbitzuaren egoera dela egiaztatu dezakegu Puntuatu gabe oraindik, gure script-a komando batetik exekutatu zen arren, aukerak hau egiteko aukera eman zigun RemainAfterExit=true.

Segurtasuna. Edukiontzien pribilegioak ^

Edukiontzi-prozesu guztiak bere nukleoa erabiliz sistema ostalarian isolatuta exekutatzen direnez, edukiontzi-prozesuek ostalari-sistemarako sarbidea gehiago babesteko, LXD-k prozesu-pribilegioa eskaintzen du, non:

  • Edukiontzi pribilegiatuak - UID eta GID duten prozesuak ostalari-sistemako jabe berari dagozkion edukiontziak dira. Adibidez, 0 UID duen edukiontzi batean exekutatzen den prozesu batek 0 UID duen sistema ostalariaren prozesu baten atzipen-eskubide berdinak ditu. Beste era batera esanda, edukiontziko root erabiltzaileak eskubide guztiak ditu, ez bakarrik. edukiontzian, baina baita ostalari-sisteman ere edukiontziaren izen-espazio isolatutik kanpo joan badaiteke.

  • Pribilegiorik gabeko edukiontziak - UIDaren eta GIDaren jabearen prozesuak 0tik 65535era bitarteko zenbakia duten edukiontziak dira, baina ostalari-sistemarako jabea, hurrenez hurren, gehitutako SubUID eta SubGID bitak erabiliz maskaratuta dago. Adibidez, edukiontzi batean UID=0 duen erabiltzaile bat ostalari-sisteman ikusiko da SubUID + UID. Honek ostalari-sistema babesten du, zeren edukiontziko edozein prozesu bere izen-espazio isolatuetatik ihes egiteko gai bada, ostalari-sistemarekin soilik komunika daiteke UID/GID ezezaguna eta oso altua duen prozesu gisa.

Lehenespenez, sortu berri diren edukiontziek pribilegiorik gabeko egoera dute eta, beraz, SubUID eta SubGID bat definitu behar dugu.

Sor ditzagun bi konfigurazio fitxategiak zeinetan SubUID eta SubGID maskara ezarriko dugun, hurrenez hurren:

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

Aldaketak aplikatzeko, LXD zerbitzua berrabiarazi behar da:

sudo systemctl restart lxd

Sare birtual etengailu bat sortzea ^

Aurretik sarea hasieratzeko morroia erabiliz hasieratu genuenez lxd init eta sareko gailu bat sortu lxdbr0, orduan atal honetan LXD-ko sareak ezagutuko ditugu eta bezeroaren komandoa erabiliz switch birtual bat (zubia) nola sortu.

Ondorengo diagramak etengailu batek (zubi) ostalaria eta edukiontziak sare batera nola konektatzen dituen erakusten du:

LXD - Linux edukiontzi sistemen oinarrizko ezaugarriak

Edukiontziek sare baten bidez komunika daitezke beste edukiontzi batzuekin edo edukiontzi horiek zerbitzatzen diren ostalariarekin. Horretarako, edukiontzien sare-txartel birtualak etengailu birtual batekin lotu behar dituzu. Lehenik etengailu bat sortuko dugu, eta edukiontziaren sareko interfazeak hurrengo kapituluetan lotuko dira, edukiontzia bera sortu ondoren.

Hurrengo komandoak etengailu bat sortzen du azpisare batekin 10.0.5.0/24 eta IPv4 helbidea 10.0.5.1/24, eta barne hartzen ditu ipv4.nat edukiontziak ostalariaren bidez Internetera sar daitezen NAT zerbitzua erabiliz:

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

LXDn eskuragarri dauden sareko gailuen zerrenda egiaztatzea:

lxc network list

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

Era berean, egiazta dezakezu sareko gailu bat sortu dela Linux banaketaren tresna estandarra erabiliz - ip link edo 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

Konfigurazio profila ^

LXD-ko edukiontzi bakoitzak bere konfigurazioa du eta orokorrean deklaratutako konfigurazioekin zabaldu dezake konfigurazio-profilak. Edukiontzi bati konfigurazio-profilak aplikatzeak kaskada-eredu bat du; adibide honek hau erakusten du:

LXD - Linux edukiontzi sistemen oinarrizko ezaugarriak

Adibide honetan, LXD sisteman hiru profil sortu dira: default, hddpool ΠΈ hostfs. Hiru profilak konfigurazio lokala duen edukiontzi bati aplikatzen zaizkio (eremu grisa). Profila default gailu bat dauka root parametro bat duena pool berdina da ssdpool, baina kaskadako konfigurazio aplikazio-ereduari esker, edukiontziari profil bat aplika diezaiokegu hddpool parametro bat duena pool profilaren parametro bera gainidatziko du default eta edukiontziak gailuaren konfigurazioa jasoko du root parametroarekin pool berdina hddpool, eta profila hostfs gailu berri bat gehitzen dio edukiontziari.

Eskuragarri dauden konfigurazio-profilen zerrenda ikusteko, erabili komando hau:

lxc profile list

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

Profil batekin lan egiteko erabilgarri dauden komandoen zerrenda osoa lor daiteke tekla gehituta --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

Zure profila editatzen ^

Lehenetsitako konfigurazio-profila default ez du edukiontzirako sare-txartelaren konfiguraziorik eta sortu berri diren edukiontzi guztiek ez dute sarerik, haientzat sare lokaleko gailuak (eskainikoak) sortu behar dira komando bereizi batekin, baina sareko gailu global bat sor dezakegu konfigurazioan. profil hau erabiliz edukiontzi guztien artean partekatuko den profila. Horrela, edukiontzi berri bat sortzeko komandoaren ondoren, sare bat izango dute sarerako sarbidea. Aldi berean, ez dago murrizketarik; behar izanez gero, beti sor dezakegu sare lokaleko gailu bat geroago.

Hurrengo komandoak gailua konfigurazio profilera gehituko du eth0 mota nic sarera konektatuta lxdbr0:

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

Garrantzitsua da kontuan izan gailua konfigurazio profilean gehitu dugunez, gailuan IP helbide estatiko bat zehaztu badugu, profil hori erabiliko duten edukiontzi guztiek IP helbide bera partekatuko dutela. Edukiontziari esleitutako IP helbide estatikoa duen edukiontzi bat sortu beharra badago, sareko gailuaren konfigurazioa edukiontzi mailan (konfigurazio lokala) sortu beharko zenuke IP helbide parametroarekin, eta ez profil mailan.

Ikus dezagun profila:

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

Profil honetan ikus dezakegu sortu berri diren edukiontzi guztietarako bi gailu sortuko direla:

  • eth0 β€” Gailu mota nic etengailu batera konektatuta (sare-zubia) lxdbr0
  • root β€” Gailu mota disk biltegiratze igerilekua erabiltzen duena ssdpool

Profil berriak sortzea ^

Aurretik sortutakoa erabiltzeko Biltegiratze Igerilekua edukiontziak, sortu konfigurazio-profila ssdroot bertan, antzeko gailu bat gehituko dugu disk muntaketa puntuarekin / (erroa) aurretik sortutakoa erabiliz Biltegiratze Igerilekua - ssdpool:

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

Era berean, antzeko gailu bat sortzen dugu disk, baina kasu honetan erabiliz Biltegiratze Igerilekua - hddpool:

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

Konfigurazio-profilak egiaztatzea:

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

Irudi biltegia ^

Linux nukleorik ez duten bereziki muntatutako banaketak diren irudietatik sortzen dira edukiontziak. Horregatik, edukiontzia exekutatu aurretik, irudi honetatik zabaldu behar da. Irudien iturria tokiko biltegi bat da, non irudiak kanpoko biltegietatik deskargatzen diren.

Urruneko irudi-biltegiak ^

Lehenespenez, LXD urruneko hiru iturritatik irudiak jasotzeko konfiguratuta dago:

  • ubuntu: (Ubuntu irudi egonkorretarako)
  • ubuntu-egunero: (Eguneroko Ubuntu irudietarako)
  • irudiak: (beste distro mordo baterako)

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    |
+-----------------+------------------------------------------+--------+--------+

Adibidez, biltegia ubuntu: honako irudi hauek ditu:

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  |
+----------------------------------------------+--------------+----------+------------+

Zutabe kopuru mugatu bat bistaratzeko aukera erabili dugu -c parametroekin dasut, eta zerrendaren luzera ere mugatu zuen komandoarekin head.

Iragazkia erabilgarri dago irudien zerrenda bistaratzeko. Hurrengo komandoak eskuragarri dauden banaketa-arkitektura guztiak zerrendatuko ditu 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        |
+------------------------------+--------------------------------------+--------------+

Tokiko irudi biltegia ^

Edukiontzia erabiltzen hasteko, biltegi orokorreko irudi bat gehitu behar diozu tokikoari local:. Orain tokiko biltegia hutsik dago, komandoak hori ziurtatuko du lxc image list. Metodoa bada list ez zehaztu biltegirik, orduan tokiko biltegia erabiliko da lehenespenez - local:

lxc image list local:

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

Biltegiko irudiak metodo hauek erabiliz kudeatzen dira:

Team
Description

lxc irudia ezizena
Kudeatu irudien aliasak

lxc irudia kopiatu
Kopiatu irudiak zerbitzarien artean

lxc irudia ezabatu
Ezabatu irudiak

lxc irudia editatu
Editatu irudiaren propietateak

lxc irudia esportatu
Esportatu eta deskargatu irudiak

lxc irudia inportatu
Inportatu irudiak irudi-dendan

lxc irudia info
Erakutsi irudiei buruzko informazio erabilgarria

lxc irudia zerrenda
Zerrendatu irudiak

lxc irudia refresh
Freskatu irudiak

lxc irudia erakutsi
Erakutsi irudiaren propietateak

Kopiatu irudia tokiko biltegira globaletik images::

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

Image copied successfully!

Bistaratu dezagun tokiko biltegian une honetan eskuragarri dauden irudi guztien zerrenda local::

lxc image -c lfdatsu list local:

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

LXD konfigurazioa ^

Modu interaktiboaz gain, LXD-k konfigurazio ez-interaktiboa instalatzeko modua ere onartzen du, hau da, konfigurazioa YAML fitxategi baten moduan zehazten da, formatu berezi bat, konfigurazio osoa aldi berean instalatzeko aukera ematen duena, exekuzioa saihestuz. Artikulu honetan goian eztabaidatu diren komando interaktibo asko, sarearen konfigurazioa, konfigurazio profilak sortzea, etab. Hemen ez dugu eremu hau landuko, zure kabuz egiaztatu dezakezu. dokumentazioan.

Hurrengo komando interaktiboa lxc config aztertuko duguna konfigurazioa ezartzeko aukera ematen du. Adibidez, tokiko biltegira deskargatutako irudiak biltegi globaletatik automatikoki eguneratzen ez direla ziurtatzeko, portaera hau gaitu dezakegu komando honekin:

lxc config set images.auto_update_cached=false

Edukiontzi bat sortzea eta kudeatzea ^

Edukiontzi bat sortzeko, erabili komandoa lxc init zeinetara pasatzen diren balioak Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:ΠΎΠ±Ρ€Π°Π· eta gero edukiontziaren nahi den IDa. Biltegia lokal gisa zehaztu daiteke local: orobat ere bai. Biltegia zehazten ez bada, lehenespenez tokiko biltegia erabiltzen da irudia bilatzeko. Irudia biltegi orokorretik zehazten bada, irudia lehenik tokiko biltegira deskargatuko da eta gero edukiontzia sortzeko erabiliko da.

Exekutatu dezagun komando hau gure lehen edukiontzia sortzeko:

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

Ikus ditzagun hemen erabiltzen ditugun komando-teklak ordenan:

  • alpine3 β€” Ezizen bat (alias) zehazten da aurretik tokiko biltegira kargatu zen irudiarentzat. Irudi honetarako ezizena sortu ez bada, beti egin dezakezu erreferentzia bere bidez irudia Hatz taulan agertzen dena.
  • alp β€” Edukiontziaren identifikatzailea ezartzen du
  • --storage β€” Tekla honek zeinetan adierazten du Biltegiratze Igerilekua edukiontzi bat sortuko da
  • --profile β€” Gako hauek kaskada batean aldez aurretik sortutako konfigurazio-profiletatik konfigurazioa aplikatzen diote edukiontziari

Edukiontzia abiarazten dugu, banaketaren init sistema abiarazten hasten dena:

lxc start alp

Komandoa ere erabil dezakezu lxc launch taldeak uztartzeko aukera ematen duena lxc init ΠΈ lxc start eragiketa batean.

Edukiontziaren egoera egiaztatzea:

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

Edukiontziaren konfigurazioa egiaztatzea:

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

atalean profiles edukiontzi honek bi konfigurazio-profil erabiltzen dituela ziurtatu dezakegu default ΠΈ hddroot. atalean devices gailu bakarra detektatu dezakegu sareko gailua profil mailan sortu delako default. Kontenedoreak erabiltzen dituen gailu guztiak ikusteko gako bat gehitu behar duzu --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: ""

IP helbide estatiko bat ezartzea ^

Sareko gailu baterako IP helbide bat ezartzen saiatzen bagara eth0 taldeak lxc config device set alp edukiontziaren konfiguraziorako pentsatuta, orduan gailua ez dagoela gailua existitzen ez dela jakinaraziko duen errore bat jasoko dugu eth0 edukiontziak erabiltzen duena profilari dagokio default:

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: The device doesn't exist

Noski IP helbide estatiko bat ezarri dezakegu eth0 profileko gailuak, baina berdina izango da profil hori erabiliko duten ontzi guztietan. Beraz, gehi dezagun edukiontziari eskainitako gailu bat:

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

Ondoren, edukiontzia berrabiarazi behar duzu:

lxc restart alp

Orain edukiontziaren konfigurazioari erreparatzen badiogu, ez dugu aukerarik erabili behar --expanded sareko gailua ikusteko eth0, edukiontzi mailan sortu dugulako eta profiletik gailu beretik kaskadatuta 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: ""

Edukiontzi bat kentzea ^

Edukiontzi bat kentzeko, erabili komandoa lxc delete, baina edukiontzia kendu aurretik, komandoa erabiliz gelditu behar da lxc stop:

lxc stop alp

lxc list

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

Edukiontziaren egoera bihurtu dela egiaztatu ondoren STOPPED, kendu daiteke Biltegiratze Igerilekua:

lxc delete alp

Edukiontzirako sarbidea ^

Komandoak edukiontzi batean zuzenean exekutatzeko, sareko konexioak saihestuz, erabili komandoa lxc exec komandoak edukiontzian exekutatzen dituena, sistema shell-a abiarazi gabe. Komando bat shell batean exekutatu behar baduzu shell ereduak erabiliz, hala nola aldagaiak, fitxategien birbideraketak (tutua), etab., orduan esplizituki shell-a abiarazi eta komandoa gako gisa pasa behar duzu, adibidez:

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

Komandoak ihes karaktere berezi bat erabiltzen zuen izaera berezirako $ beraz, aldagaia $HOME ez zen ostalari makinan interpretatu, edukiontzi barruan bakarrik interpretatu zen.

Era berean, posible da shell modu interaktiboa abiarazi eta, ondoren, saioa amaitzea laster-tekla exekutatuz CTRL+D:

lxc exec alp -- /bin/sh

Edukiontzien baliabideen kudeaketa ^

LXDn, edukiontzien baliabideak kudeatu ditzakezu konfigurazio multzo berezi bat erabiliz. Edukiontzien konfigurazio-parametroen zerrenda osoa aurki daiteke dokumentazioan.

RAM baliabideen muga ^

Parametroa limits.memory edukiontziarentzat eskuragarri dagoen RAM kopurua mugatzen du. Balioa zenbaki bat eta bat da eskuragarri dauden atzizkiak.

Ezar dezagun edukiontziaren RAM muga 256 MB-ra:

lxc config set alp limits.memory 256MB

Gainera, memoria mugatzeko beste parametro batzuk daude:

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

Team lxc config show edukiontziaren konfigurazio osoa bistaratzeko aukera ematen du, ezarri zen aplikatutako baliabideen muga barne:

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 baliabideen muga ^

PUZaren baliabideak mugatzeko hainbat modu daude. murrizketa motak:

  • limit.cpu - Edukiontzi bat CPU nukleo bati edo gehiagori lotzen dio
  • limits.cpu.allowance - CFS programatzailearen kuotak kudeatzen ditu denbora-muga igarotakoan, edo CPU baliabideak partekatzeko mekanismo unibertsala ehunekoa gainditu denean.
  • limits.cpu.priority - Antolatzailearen lehentasuna prozesadore multzo bat partekatzen duten hainbat instantzi prozesadoreen ehuneko bera esleitzen zaienean

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

Disko espazioaren muga ^

Halako murrizketez gain limits.read, limits.write edukiontziak kontsumitzen duen disko-espazio kopurua ere muga dezakegu (ZFS edo BTRFS-ekin bakarrik funtzionatzen du):

lxc config device set alp root size=2GB

Instalatu ondoren, parametroan devices.root.size Ezarritako muga egiaztatu dezakegu:

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

Erabilitako disko-kuotak ikusteko komandotik lor ditzakegu 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

Izan ere, edukiontziaren root gailuaren muga 2GB-ra ezarri dugun arren, sistemaren utilitateak, esaterako df ez du muga hori ikusiko. Horretarako, proba txiki bat egingo dugu eta nola funtzionatzen duen ezagutuko dugu.

Sor ditzagun 2 ontzi berdin berdin berean Biltegiratze Igerilekua (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         |
+------+---------+------------------+------+-----------+-----------+

Sortu dezagun 1 GBko fitxategi bat edukiontzietako batean:

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

Ziurtatu fitxategia sortu dela:

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

Bigarren edukiontzian begiratuz gero, egiaztatu kokapen berean fitxategi bat dagoen, orduan fitxategi hau ez da egongo, espero baita, edukiontziak bere kabuz sortzen baitira. Biltegiratze bolumena berean Biltegiratze Igerilekua:

lxc exec alp2 -- ls -lh
total 0

Baina konparatu ditzagun sortzen dituen balioak df edukiontzi batean eta bestean:

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

gailu /dev/loop1 erroko partizioa dagoen bezala muntatuta Biltegiratze Igerilekua ontzi hauek erabiltzen dutena, beraz, bere bolumena biren artean banatzen dute.

Baliabideen kontsumoaren estatistikak ^

Edukiontzi baten baliabideen kontsumoaren estatistikak ikus ditzakezu komandoa erabiliz:

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

Argazkiekin lan egitea ^

LXD-k argazkiak sortzeko eta edukiontziaren egoera berrezartzeko gaitasuna du.

Argazki bat sortzeko, exekutatu komando hau:

lxc snapshot alp snapshot1

Taldea lxc snapshot ez dago gakorik list, beraz, argazkien zerrenda ikusteko edukiontziari buruzko informazio orokorra bistaratzen duen komandoa erabili behar duzu:

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

Edukiontzi bat argazki batetik berrezar dezakezu komandoa erabiliz lxc restore zaharberritzea zein edukiontzitarako egingo den eta argazkiaren ezizena zehaztuz:

lxc restore alp snapshot1

Hurrengo komandoa argazki bat ezabatzeko erabiltzen da. Kontuan izan komandoaren sintaxia ez dela beste guztien antzekoa; hemen barra-barra bat zehaztu behar duzu edukiontziaren izenaren ondoren. Barra ezabatzen bada, argazki bat ezabatzeko komandoa edukiontzi bat ezabatzeko komando gisa interpretatuko da!

lxc delete alp/snapshot1

Goiko adibidean, estaturik gabeko argazki deritzonak aztertu ditugu. LXD-k beste argazki mota batzuk ditu: egoerakoak, edukiontzian dauden prozesu guztien egungo egoera gordetzen duena. Estatuko argazkiek hainbat ezaugarri interesgarri eta erabilgarriak dituzte.

Zer gehiago? ^

  • Modulu bat dago eskuragarri Python garatzaileentzat PyLXD horrek LXD-ri API bat eskaintzen diona

EGUNERAZIOA 10.04.2020/15/00 XNUMX:XNUMX: Nabigazioa gehitu da

Iturria: www.habr.com

Gehitu iruzkin berria