102.6 Lekcija 1
Sertifikat: |
LPIC-1 |
---|---|
Verzija: |
5.0 |
Tema: |
102 Linux instalacija i upravljanje paketima |
Cilj: |
102.6 Linux kao virtualizacijski gost |
Lekcija: |
1 od 1 |
Uvod
Jedna od velikih prednosti Linuxa je njegova svestranost. Jedan aspekt ove svestranosti je mogućnost korištenja Linuxa kao sredstva za hostovanje drugih operativnih sistema, ili pojedinačnih aplikacija, u potpuno izolovanom i bezbednom okruženju. Ova lekcija će se fokusirati na koncepte virtuelizacije i tehnologije kontenjera, zajedno sa nekim tehničkim detaljima koje treba uzeti u obzir prilikom postavljanja virtuelne mašine na platformu u oblaku.
Pregled virtualizacije
Virtuelizacija je tehnologija koja omogućava softverskoj platformi, nazvanoj hipervizor, za pokretanje procesa koji sadrže potpuno emulirani računarski sistem. Hipervizor je odgovoran za upravljanje resursima fizičkog hardvera koje mogu koristiti pojedinačne virtuelne mašine. Ove virtuelne mašine se nazivaju gosti hipervizora. Virtuelna mašina ima mnoge aspekte fizičkog računara emuliranog u softveru, kao što su sistemski BIOS i kontroleri hard diska. Virtuelna mašina će često koristiti slike hard diska koje se čuvaju kao pojedinačne datoteke i imaće pristup RAM-u i CPU-u glavnog računara preko softvera hipervizora. Hipervizor odvaja pristup hardverskim resursima host sistema među gostima, omogućavajući tako da više operativnih sistema radi na jednom host sistemu.
Često korišteni hipervizori u Linux-u uključuju:
- Xen
-
Xen je hipervizor tipa 1 otvorenog koda, što znači da se ne oslanja na osnovni operativni sistem da bi funkcionisao. Hipervizor ove vrste je poznat kao bare-metal hypervisor jer se računar može pokrenuti direktno u hipervizor.
- KVM
-
Kernel Virtual Machine je Linux kernel modul za virtualizaciju. KVM je hipervizor i tip-1 i tip-2 hipervizor jer, iako mu je potreban generički Linux operativni sistem da bi radio, on može savršeno dobro raditi kao hipervizor integracijom sa pokrenutom Linux instalacijom. Virtuelne mašine raspoređene sa KVM-om koriste daemon
libvirt
i povezane softverske uslužne programe za kreiranje i upravljanje. - VirtualBox
-
Popularna desktop aplikacija koja olakšava kreiranje i upravljanje virtualnim mašinama. Oracle VM VirtualBox je cross-platforma i radit će na Linuxu, macOS-u i Microsoft Windows-u. Budući da VirtualBox zahtijeva osnovni operativni sistem za pokretanje, to je hipervizor tipa 2.
Neki hipervizori omogućavaju dinamičko premještanje virtuelne mašine. Proces premještanja virtuelne mašine iz jedne instalacije hipervizora u drugu naziva se migracija, a uključene tehnike se razlikuju između implementacija hipervizora. Neke migracije se mogu izvesti samo kada je sistem za goste potpuno ugašen, a druge se mogu izvesti dok gost radi (naziva se živa migracija). Takve tehnike mogu biti od pomoći tokom perioda održavanja hipervizora ili za otpornost sistema kada hipervizor postane nefunkcionalan i gost se može premjestiti na hipervizor koji radi.
Tipovi virtualnih mašina
Postoje tri glavna tipa virtuelnih mašina, potpuno virtualizovan gost, paravirtualizovan gost i hibrid gost.
- Potpuno virtualizovan
-
Sve instrukcije za koje se očekuje da će gost operativni sistem izvršiti, moraju biti u mogućnosti da se izvode unutar potpuno virtualizirane instalacije operativnog sistema. Razlog za to je što se u gostu ne instaliraju dodatni softverski drajveri za prevođenje instrukcija na simulirani ili stvarni hardver. Potpuno virtualizirani gost je onaj gdje gost (ili HardwareVM) nije svjestan da je pokrenuta instanca virtuelne mašine. Da bi se ova vrsta virtualizacije odvijala na hardveru baziranom na x86 Intel VT-x ili AMD-V CPU ekstenzije moraju biti omogućene na sistemu koji ima instaliran hipervizor. Ovo se može uraditi iz menija konfiguracije BIOS-a ili UEFI firmvera.
- Paravirtualiziran
-
Paravirtualizirani gost (ili PVM) je onaj u kojem je gost operativni sistem svjestan da je pokrenuta instanca virtualne mašine. Ovi tipovi gostiju će koristiti modifikovan kernel i posebne drajvere (poznate kao guest drivers) koji će pomoći gostujućem operativnom sistemu da koristi softverske i hardverske resurse hipervizora. Performanse paravirtualizovanog gosta često su bolje od performansi potpuno virtuelizovanog gosta zbog prednosti koju ovi softverski drajveri pružaju.
- Hibrid
-
Paravirtualizacija i potpuna virtualizacija se mogu kombinovati kako bi se omogućilo nemodifikovanim operativnim sistemima da dobiju skoro prirodne I/O performanse korištenjem paravirtualizovanih drajvera na potpuno virtualizovanim operativnim sistemima. Paravirtualizovani drajveri sadrže drajvere za skladištenje i mrežne uređaje sa poboljšanim performansama diska i mrežnih I/O.
Virtualizacijske platforme često pružaju upakovane gostujuće drajvere za virtualizirane operativne sisteme. KVM koristi drajvere iz Virtio projekta, dok Oracle VM VirtualBox koristi Guest Extensions ili gost ekstenzije dostupne sa ISO CD-ROM slikovne datoteke za preuzimanje.
Primjer virtualne mašine libvirt
Pogledaćemo primjer virtualne mašine kojom upravlja libvirt
i koja koristi KVM hipervizor. Virtualna mašina se često sastoji od grupe datoteka, prvenstveno XML datoteke koja definiše virtualnu mašinu (kao što je njena hardverska konfiguracija, mrežna povezanost, mogućnosti prikaza i još mnogo toga) i pridružene datoteke slike hard diska koja sadrži instalaciju operativnog sistem i njegov softver.
Prvo, počnimo da ispitujemo primjer XML konfiguracijske datoteke za virtualnu mašinu i njeno mrežno okruženje:
$ ls /etc/libvirt/qemu total 24 drwxr-xr-x 3 root root 4096 Oct 29 17:48 networks -rw------- 1 root root 5667 Jun 29 17:17 rhel8.0.xml
Note
|
|
Imajte na umu da postoji direktorij pod nazivom networks
. Ovaj direktorij sadrži datoteke definicija (također koristeći XML) koje kreiraju mrežne konfiguracije koje virtualne mašine mogu koristiti. Ovaj hipervizor koristi samo jednu mrežu, tako da postoji samo jedna datoteka definicije koja sadrži konfiguraciju za virtualni mrežni segment koji će ovi sistemi koristiti.
$ ls -l /etc/libvirt/qemu/networks/ total 8 drwxr-xr-x 2 root root 4096 Jun 29 17:15 autostart -rw------- 1 root root 576 Jun 28 16:39 default.xml $ sudo cat /etc/libvirt/qemu/networks/default.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh net-edit default or other application using the libvirt API. --> <network> <name>default</name> <uuid>55ab064f-62f8-49d3-8d25-8ef36a524344</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:b8:e0:15'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network>
Ova definicija uključuje privatnu mrežu klase C i emulirani hardverski uređaj koji djeluje kao ruter za ovu mrežu. Postoji i niz IP adresa koje hipervizor može koristiti sa implementacijom DHCP servera koje se mogu dodijeliti virtualnim mašinama koje koriste ovu mrežu. Ova mrežna konfiguracija također koristi prevođenje mrežne adrese (NAT) za prosljeđivanje paketa drugim mrežama, kao što je LAN hipervizora.
Sada skrećemo pažnju na datoteku definicije virtualne mašine Red Hat Enterprise Linux 8. (odjeljci posebne napomene su podebljani):
$ sudo cat /etc/libvirt/qemu/rhel8.0.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit rhel8.0 or other application using the libvirt API. --> <domain type='kvm'> <name>rhel8.0</name> <uuid>fadd8c5d-c5e1-410e-b425-30da7598d0f6</uuid> <metadata> <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0"> <libosinfo:os id="http://redhat.com/rhel/8.0"/> </libosinfo:libosinfo> </metadata> <memory unit='KiB'>4194304</memory> <currentMemory unit='KiB'>4194304</currentMemory> <vcpu placement='static'>2</vcpu> <os> <type arch='x86_64' machine='pc-q35-3.1'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <vmport state='off'/> </features> <cpu mode='host-model' check='partial'> <model fallback='allow'/> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <pm> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/rhel8'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </disk> <controller type='usb' index='0' model='qemu-xhci' ports='15'> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </controller> <controller type='sata' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <controller type='pci' index='0' model='pcie-root'/> <controller type='pci' index='1' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='1' port='0x10'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/> </controller> <controller type='pci' index='2' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='2' port='0x11'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/> </controller> <controller type='pci' index='3' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='3' port='0x12'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/> </controller> <controller type='pci' index='4' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='4' port='0x13'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/> </controller> <controller type='pci' index='5' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='5' port='0x14'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/> </controller> <controller type='pci' index='6' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='6' port='0x15'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/> </controller> <controller type='pci' index='7' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='7' port='0x16'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/> </controller> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </controller> <interface type='network'> <mac address='52:54:00:50:a7:18'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> <serial type='pty'> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> <input type='tablet' bus='usb'> <address type='usb' bus='0' port='1'/> </input> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='spice' autoport='yes'> <listen type='address'/> <image compression='off'/> </graphics> <sound model='ich9'> <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/> </sound> <video> <model type='virtio' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/> </video> <redirdev bus='usb' type='spicevmc'> <address type='usb' bus='0' port='2'/> </redirdev> <redirdev bus='usb' type='spicevmc'> <address type='usb' bus='0' port='3'/> </redirdev> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </memballoon> <rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/> </rng> </devices> </domain>
Ova datoteka definira broj hardverskih postavki koje koristi ovaj gost, kao što je količina RAM-a koju će mu dodijeliti, broj CPU jezgri iz hipervizora kojem će gost imati pristup, datoteka slike hard diska koji je povezan sa ovim gostom (pod strofom disk
), njegovim mogućnostima prikaza (preko SPICE protokola), i pristupom gosta USB uređajima kao i emuliranim unosom tastature i miša.
Primjer skladišnog diska virtualne mašine
Slika tvrdog diska ove virtualne mašine nalazi se na /var/lib/libvirt/images/rhel8
. Evo same slike diska na ovom hipervizoru:
$ sudo ls -lh /var/lib/libvirt/images/rhel8 -rw------- 1 root root 5.5G Oct 25 15:57 /var/lib/libvirt/images/rhel8
Trenutna veličina ove slike diska zauzima samo 5,5 GB prostora na hipervizoru. Međutim, operativni sistem u okviru ovog gosta vidi disk veličine 23,3 GB, o čemu svjedoči izlaz sljedeće komande iz pokrenute virtualne mašine:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 23.3G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 22.3G 0 part ├─rhel-root 253:0 0 20G 0 lvm / └─rhel-swap 253:1 0 2.3G 0 lvm [SWAP]
To je zbog vrste opskrbe diska koja se koristi za ovog gosta. Postoji više tipova slika diska koje virtualna mašina može da koristi, a dvije glavne vrste su:
- COW
-
Kopiranje pri pisanju (koji se također naziva thin-provisioning ili sparse images) je metoda u kojoj se kreira disk datoteka s unaprijed definiranim gornjim ograničenjem veličine. Veličina slike diska se samo povećava kako se novi podaci upisuju na disk. Baš kao i prethodni primjer, gostujući operativni sistem vidi unaprijed definirano ograničenje diska od 23,3 GB, ali je upisao samo 5,5 GB podataka u datoteku diska. Format slike diska koji se koristi za primjer virtualne mašine je
qcow2
što je QEMU COW format datoteke. - RAW
-
Tip diska raw ili full je datoteka kojoj je sav svoj prostor unaprijed dodijeljen. Na primjer, datoteka neobrađene slike diska od 10 GB troši 10 GB stvarnog prostora na disku hipervizora. Ovaj stil diska ima prednost u pogledu performansi jer sav potreban prostor na disku već postoji, tako da osnovni hipervizor može samo upisati podatke na disk bez učinka praćenja slike diska kako bi osigurao da još nije dostigao svoje ograničenje i proširenje veličine datoteke kako se u nju upisuju novi podaci.
Postoje i druge platforme za upravljanje virtualizacijom kao što su Red Hat Enterprise Virtualization i oVirt koje mogu da koriste fizičke diskove da djeluju kao pozadinske lokacije za skladištenje operativnog sistema virtualne mašine. Ovi sistemi mogu koristiti memorijsku mrežu (SAN) ili mrežno priključene uređaje za pohranu (NAS) za pisanje svojih podataka, a hipervizor prati koje lokacije za pohranu pripadaju kojim virtualnim mašinama. Ovi sistemi za skladištenje mogu koristiti tehnologije kao što je upravljanje logičkim volumenom (LVM) da povećaju ili smanje veličinu diska virtualne mašine po potrebi i da pomognu u kreiranju i upravljanju snimcima skladištenja.
Rad sa predlošcima virtualne mašine
Pošto su virtualne mašine obično samo datoteke koje se pokreću na hipervizoru, lako je kreirati podloške (eng.templates) koji se mogu prilagoditi određenim scenarijima implementacije. Često će virtualna mašina imati osnovnu instalaciju operativnog sistema i neke unaprijed konfigurisane postavke konfiguracije autentifikacije postavljene da bi se olakšalo buduće pokretanje sistema. Ovo smanjuje količinu vremena potrebnog za izgradnju novog sistema smanjenjem količine posla koji se često ponavlja, kao što je instalacija osnovnog paketa i podešavanja lokalizacije.
Ovaj šablon virtualne mašine bi se kasnije mogao kopirati na novi gost sistem. U ovom slučaju, novi gost bi se preimenovao, nova MAC adresa bi se generirala za njegov mrežni interfejs, a druge modifikacije bi se mogle izvršiti ovisno o njegovoj namjeni.
D-Bus mašinski ID
Mnoge Linux instalacije će koristiti identifikacioni broj mašine generisan u vrijeme instalacije, nazvan D-Bus mašinski ID. Međutim, ako je virtuelna mašina klonirana da se koristi kao predložak za druge instalacije virtualne mašine, novi D-Bus ID mašine bi trebao biti kreiran kako bi se osiguralo da sistemski resursi iz hipervizora budu usmjereni na odgovarajući sistem za goste.
Sljedeća komanda se može koristiti za potvrdu postojanja D-Bus mašinskog ID-a za pokrenuti sistem:
$ dbus-uuidgen --ensure
Ako se ne prikažu poruke o grešci, tada postoji ID za sistem. Da vidite trenutni D-Bus ID mašine, pokrenite sljedeće:
$ dbus-uuidgen --get 17f2e0698e844e31b12ccd3f9aa4d94a
Niz teksta koji se prikazuje je trenutni ID broj. Nijedna dva Linux sistema koja rade na hipervizoru ne bi trebala imati isti D-Bus ID mašine.
D-Bus ID mašine se nalazi na /var/lib/dbus/machine-id
i simbolički je povezan sa /etc/machine-id
. Promjena ovog ID broja na pokrenutom sistemu se ne preporučuje jer postoji vjerovatnoća da će doći do nestabilnosti sistema i pada. Ako dvije virtuelne mašine imaju isti D-Bus ID mašine, slijedite proceduru u nastavku da biste generirali novu:
$ sudo rm -f /etc/machine-id $ sudo dbus-uuidgen --ensure=/etc/machine-id
U slučaju da /var/lib/dbus/machine-id
nije simbolička veza natrag na /etc/machine-id
, tada će se /var/lib/dbus/machine-id
morati ukloniti .
Pokretanje virtualnih mašina u oblaku
Postoji mnoštvo dostupnih IaaS (infrastruktura kao usluga) provajdera koji pokreću hipervizorske sisteme i koji mogu implementirati virtualne slike gostiju za organizaciju. Praktično svi ovi provajderi imaju alate koji omogućavaju administratoru da izgradi, postavi i konfiguriše prilagođene virtualne mašine zasnovane na različitim distribucijama Linuxa. Mnoge od ovih kompanija takođe imaju uspostavljene sisteme koji omogućavaju primjenu i migraciju virtualnih mašina izgrađenih unutar organizacije korisnika.
Kada procjenjujete implementaciju Linux sistema u IaaS okruženju, postoje neki ključni elementi kojih bi administrator trebao biti svjestan:
- Računalne instance
-
Mnogi provajderi oblaka će naplaćivati stope korištenja na osnovu “računarskih instanci”, ili koliko će CPU vremena koristiti vaša infrastruktura zasnovana na oblaku. Pažljivo planiranje koliko će vremena obrade aplikacije zapravo zahtijevati pomoći će u održavanju troškova rješenja u oblaku pod kontrolom.
Računalne instance će se takođe često odnositi na broj virtualnih mašina koje su obezbjeđene u okruženju oblaka. Opet, više instanci sistema koji rade u jednom trenutku će takođe uticati na to koliko će ukupno CPU vremena biti naplaćeno organizaciji.
- Blok skladištenje
-
Provajderi u oblaku takođe imaju različite nivoe blok memorije na raspolaganju za organizaciju. Neke ponude su jednostavno zamišljene kao mrežno skladištenje datoteka na webu, a druge ponude se odnose na eksternu pohranu za virtualnu mašinu koja je obezbjeđena u oblaku za korištenje za hostovanje datoteka.
Troškovi za takve ponude će varirati u zavisnosti od količine pohrane koja se koristi i brzine skladištenja u podatkovnim centrima provajdera. Brži pristup skladištenju će obično koštati više, i obrnuto, podaci “na mirovanju” (kao u arhivskoj pohrani) često su vrlo jeftini.
- Mreža
-
Jedna od glavnih komponenti rada s provajderom rješenja u oblaku je način na koji će virtualna mreža biti konfigurirana. Mnogi IaaS provajderi će imati neki oblik web-baziranih uslužnih programa koji se mogu koristiti za dizajn i implementaciju različitih mrežnih ruta, podmreža i konfiguracija zaštitnog zida. Neki će čak pružiti DNS rješenja tako da javno dostupni FQDN (potpuno kvalificirana imena domena) mogu biti dodijeljeni vašim sistemima koji su okrenuti internetu. Dostupna su čak i “hibridna” rješenja koja mogu povezati postojeću, on-premise mrežnu infrastrukturu s infrastrukturom zasnovanom na oblaku putem VPN-a (virtualna privatna mreža), povezujući tako dvije infrastrukture zajedno.
Sigurno pristupanje gostovima u oblaku
Najčešći način koji se koristi za pristup udaljenom virtualnom gostu na platformi u oblaku je korištenje OpenSSH softvera. Linux sistem koji se nalazi u oblaku imao bi pokrenut OpenSSH server, dok bi administrator koristio OpenSSH klijent sa unaprijed dijeljenim ključevima za remote pristup.
Administrator bi pokrenuo sljedeće komande:
$ ssh-keygen
i slijedite upute da kreirate javni i privatni par SSH ključeva. Privatni ključ ostaje na lokalnom sistemu administratora (pohranjen u ~/.ssh/
), a javni ključ se kopira u udaljeni cloud sistem, potpuno isti metod koji bi se koristio kada se radi sa umreženim mašinama na korporativnom LAN-u.
Administrator će izvršiti sljedeće komande:
$ ssh-copy-id -i <public_key> user@cloud_server
Ovo će kopirati javni SSH ključ iz para ključeva koji je upravo generiran na udaljeni cloud server. Javni ključ će biti zabilježen u datoteci ~/.ssh/authorized_keys
servera u oblaku i postaviti odgovarajuće dozvole za datoteku.
Note
|
Ako postoji samo jedna datoteka javnog ključa u direktoriju |
Neki provajderi u oblaku će automatski generisati par ključeva kada se obezbjedi novi Linux sistem. Administrator će tada morati da preuzme privatni ključ za novi sistem od provajdera u oblaku i pohrani ga na svoj lokalni sistem. Imajte na umu da dozvole za SSH ključeve moraju biti 0600
za privatni ključ i 0644
za javni ključ.
Prekonfiguracija cloud sistema
Koristan alat koji pojednostavljuje implementaciju virtuelne mašine zasnovane na oblaku je uslužni program cloud-init
. Ova komanda, zajedno s pridruženim konfiguracijskim datotekama i unaprijed definiranom slikom virtualne mašine, je neutralna metoda za implementaciju Linux gosta u mnoštvu IaaS provajdera. Koristeći datoteke u obliku običnog teksta YAML (YAML Ain’t Markup Language) administrator može unaprijed konfigurirati mrežne postavke, odabir softverskih paketa, konfiguraciju SSH ključeva, kreiranje korisničkog računa, postavke lokalizacije, zajedno s bezbroj drugih opcija za brzo stvaranje novih sistema.
Tokom početnog pokretanja novog sistema, cloud-init
će pročitati postavke iz YAML konfiguracijskih datoteka i primijeniti ih. Ovaj proces treba da se primjeni samo na početno podešavanje sistema i olakšava postavljanje flote novih sistema na platformi provajdera u oblaku.
Sintaksa YAML datoteke koja se koristi sa cloud-init
naziva se cloud-config. Evo primjera cloud-config
datoteke:
#cloud-config timezone: Africa/Dar_es_Salaam hostname: test-system # Update the system when it first boots up apt_update: true apt_upgrade: true # Install the Nginx web server packages: - nginx
Imajte na umu da u gornjem redu nema razmaka između heš simbola (#
) i pojma cloud-config
.
Note
|
|
Kontejneri
Tehnologija kontejnera je u nekim aspektima slična virtualnoj mašini, gdje dobijate izolovano okruženje za jednostavno postavljanje aplikacije. Dok se kod virtualne mašine emulira čitav računar, kontejner koristi dovoljno softvera za pokretanje aplikacije. Na ovaj način ima daleko manje troškova.
Kontejneri omogućavaju veću fleksibilnost u odnosu na virtualnu mašinu. Kontejner aplikacije može se migrirati s jednog hosta na drugi, baš kao što se virtualna mašina može migrirati s jednog hipervizora na drugi. Međutim, ponekad će virtualna mašina morati da se isključi prije nego što se može migrirati, dok sa kontejnerom aplikacija uvek radi dok se migrira. Kontejneri također olakšavaju implementaciju novih verzija aplikacija u tandemu s postojećom verzijom. Kako korisnici zatvaraju svoje sesije sa pokrenutim kontejnerima, ovi kontejneri mogu biti automatski uklonjeni iz sistema od strane softvera za orkestraciju kontejnera i zamjenjeni novom verzijom čime se smanjuje vrijeme zastoja.
Note
|
Postoje brojne kontejnerske tehnologije dostupne za Linux, kao što su Docker, Kubernetes, LXD/LXC, systemd-nspawn, OpenShift i još mnogo toga. Tačna implementacija softverskog paketa kontejnera je izvan opsega LPIC-1 ispita. |
Kontejneri koriste mehanizam control groups (poznatiji kao cgroups) unutar Linux kernela. Cgroup je način za particioniranje sistemskih resursa kao što su memorija, vrijeme procesora, kao i propusni opseg diska i mreže za pojedinačnu aplikaciju. Administrator može koristiti cgroups direktno za postavljanje ograničenja sistemskih resursa na aplikaciji ili grupi aplikacija koje mogu postojati unutar jedne cgroup-e. U suštini, ovo je ono što softver kontejnera radi za administratora, zajedno sa obezbjeđivanjem alata koji olakšavaju upravljanje i primjenu cgroup-a.
Note
|
Trenutno poznavanje cgroup-a nije neophodno za polaganje LPIC-1 ispita. Koncept cgroup je ovdje spomenut kako bi kandidat imao barem neko pozadinsko znanje o tome kako je aplikacija odvojena radi korištenja resursa sistema. |
Vođene vježbe
-
Koja su CPU proširenja neophodna na hardverskoj platformi baziranoj na x86 koja će pokretati potpuno virtualizovane goste?
-
Koju vrstu virtualizacije će vjerovatno koristiti kritična serverska instalacija koja će zahtijevati najbrže performanse?
-
Dvije virtuelne mašine koje su klonirane iz istog šablona i koje koriste D-Bus rade neuredno. Oba imaju zasebna imena hostova i postavke mrežne konfiguracije. Koja bi se komanda koristila da se odredi da li svaka od virtualnih mašina ima različite D-Bus ID-ove mašine?
Istraživačke vježbe
-
Pokrenite sljedeću komandu da vidite da li vaš sistem već ima omogućene CPU ekstenzije za pokretanje virtualne mašine (vaši rezultati mogu varirati u zavisnosti od vašeg CPU-a):
grep --color -E "vmx|svm" /proc/cpuinfo
U zavisnosti od izlaza, možda ćete imati označen
vmx
(za procesore sa omogućenom Intel VT-x) ilisvm
(za procesore sa omogućenim AMD SVM). Ako ne dobijete nikakve rezultate, pogledajte uputstva za BIOS ili UEFI firmver o tome kako da omogućite virtualizaciju za vaš procesor. -
Ako vaš procesor podržava virtualizacije, potražite dokumentaciju vaše distribucije za pokretanje KVM hipervizora.
-
Instalirajte potrebne pakete za pokretanje KVM hipervizora.
*Ako koristite grafičko desktop okruženje, preporučuje se da instalirate i
virt-manager
aplikaciju koja je grafički front-end koji se može koristiti na KVM instalaciji. Ovo će pomoći u instalaciji i upravljanju virtualnim mašinama. -
Preuzmite ISO sliku distribucije Linuxa po vašem izboru i prateći dokumentaciju vaše distribucije kreirajte novu virtuelnu mašinu koristeći ovaj ISO.
-
Sažetak
U ovoj lekciji smo pokrili konceptualne osnove virtualnih mašina i kontejnera, i kako se ove tehnologije mogu koristiti sa Linuxom.
Ukratko smo opisali sljedeće komande:
dbus-uuidgen
-
Koristi se za provjeru i pregled DBus ID-a sistema.
ssh-keygen
-
Koristi se za generiranje javnog i privatnog para SSH ključeva za korištenje pri pristupu udaljenim sistemima baziranim na oblaku.
ssh-copy-id
-
Koristi se za kopiranje javnog SSH ključa sistema na udaljeni sistem kako bi se olakšala udaljena autentikacija.
cloud-init
-
Koristi se za pomoć u konfiguraciji i postavljanju virtualnih mašina i kontejnera u okruženju oblaka.
Odgovori na vođene vježbe
-
Koja su CPU proširenja neophodna na hardverskoj platformi baziranoj na x86 koja će pokretati potpuno virtualizovane goste?
VT-x za Intel CPUs ili AMD-V za AMD CPUs
-
Koju vrstu virtualizacije će vjerovatno koristiti kritična serverska instalacija koja će zahtijevati najbrže performanse?
Operativni sistem koji koristi paravirtualizaciju, kao što je Xen, kao gostujući operativni sistem može bolje iskoristiti hardverske resurse koji su mu dostupni kroz upotrebu softverskih drajvera dizajniranih za rad sa hipervizorom.
-
Dvije virtuelne mašine koje su klonirane iz istog šablona i koje koriste D-Bus rade neuredno. Oba imaju zasebna imena hostova i postavke mrežne konfiguracije. Koja bi se komanda koristila da se odredi da li svaka od virtualnih mašina ima različite D-Bus ID-ove mašine?
dbus-uuidgen --get
Odgovori na istraživačke vježbe
-
Pokrenite sljedeću komandu da vidite da li vaš sistem već ima omogućene CPU ekstenzije za pokretanje virtualne mašine (vaši rezultati mogu varirati u zavisnosti od vašeg CPU-a):
grep --color -E "vmx|svm" /proc/cpuinfo
.U zavisnosti od izlaza, možda ćete imati označenvmx
(za procesore sa omogućenom Intel VT-x) ilisvm
(za procesore sa omogućenim AMD SVM). Ako ne dobijete nikakve rezultate, pogledajte uputstva za BIOS ili UEFI firmver o tome kako da omogućite virtualizaciju za vaš procesor.Rezultati će se razlikovati ovisno o vašem CPU-u koji imate. Evo primjera izlaza sa računara sa Intelovim CPU-om sa ekstenzijama za virtualizaciju omogućenim u UEFI firmveru:
$ grep --color -E "vmx|svm" /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d
-
Ako vaš procesor podržava virtualizacije, potražite dokumentaciju vaše distribucije za pokretanje KVM hipervizora.
-
Instaliratje pakete potrebne za pokretanje KVM hipervizora.
Ovo će se razlikovati ovisno o vašoj distribuciji, ali evo nekoliko polaznih tačaka:
Arch Linux — https://wiki.archlinux.org/index.php/KVM
*Ako koristite grafičko desktop okruženje, preporučuje se da instalirate i
virt-manager
aplikaciju koja je grafički front-end koji se može koristiti na KVM instalaciji. Ovo će pomoći u instalaciji i upravljanju virtualnim mašinama.Opet, ovo će varirati ovisno o distribuciji. Primjer korištenja Ubuntua izgleda ovako:
$ sudo apt install virt-manager
-
Preuzmite ISO sliku distribucije Linuxa po vašem izboru i prateći dokumentaciju vaše distribucije kreirajte novu virtuelnu mašinu koristeći ovaj ISO
Ovaj zadatak se lako rješava paketom
virt-manager
. Međutim, virtualna mašina se može kreirati iz komandne linije koristeći komanduvirt-install
. Isprobajte obje metode da biste stekli razumijevanje o tome kako se virtualne mašine postavljaju.
-