Jump to content
pyth0n3

[Unix/Solaris] Solaris Containers (Zones) system-level virtualization

Recommended Posts

Posted (edited)

In acest articol voi explica cum poate fi creat un conntainer in zolaris ,pentru a intelege mai bine intreaga structura vor trebui citite paginile manualului ,asadar pentru cei interesati sa puna in practica acest lucru RTFM.Diverse manuale le puteti gasi pe site-ul oficial oracle.

In solaris un container este echivalent la un vps deoarece procedura este de virtualizare este facuta la nivelul sistemului si functioneaza pe acelasi principiu.Se pot crea diverse zone care pot fi host-uri separate.Zonele nu pot comunica intre ele decat folosind interfata de retea.Fiecare zona vine izolata si fiecare process ruleaza intrun container separat.Solaris poate virtualiza doar sistene solaris si exista 2 moduri pentru a crea aceste zone.Sper sa fie clar conceptul de zona sau container.O zona/container este un host, mai multe zone sunt mai multe host-uri virtuale.Inainte de a explica tipurile de zone care pot fi construite voi adauga urnmatoarele: Sistemul fizic vine definit ca o zona globala in solaris care este montatasub "/" si oricare alta zona vine creata in sistemul fizic va fi definita ca zona secondara "non global zone".

Aceste zone pot fi create in 2 moduri

1.Sparse Root Zone

Vine creata o zona al carui sistem de fisiere va fi partial mostenit din din sistemul de fisiere prezent in host-ul fizic.Spre exemplu anumite directoare a sistemului fizic vor fi de fapt in sharing cu noul host virtual.Acest lucru implica urmatoarele: Orice packet vine instalat in sistemul fizic va putea fi folosit si de catre sistemul virtual, bineinteles procesul fiecarui

executabil va rula in sistemul virtual separat de catre sistemul fizic.Acest model ocupa aproximativ 100Mb pentru fiecare host virtual creat.


Exemplu Sparse Root Zone:
---------------------------
- **********-
-########################*-
-# * #*-
-# FS * SHARE #*-
-# * #*-
-# ################*-
-# # * *-
-# HOST # * SRZ *-
-# # * *-
-# # * *-
-######### **********-
- HOST -
---------------------------


HOST -> Host fizic
SRZ -> Sparsed Root Zone (host virtual (vps))
FS -> Filesystem HOST (fizic)
SHARE -> Filesystem HOST (fizic) in sharing cu host-ul virtual
Note:
Directoarele /usr /lib /sbin /platform /opt a sistemului fizic vor fi in sharing cu sistemul guest virtual.

2.Whole Root Zone

Vine creata o zona care va contine o copie a fisierelor din host-ul fizic

Fiecare pachet instalat in host-ul fizic nu va fi vazut de catre host-ul

virtual, acesta fiind independent.

Note:

Directoarele /usr /lib /sbin /platform /opt a sistemului fizic vor

fi copiate de catre sistemul virtual.Aceasta procedura va ocupa mai mult

spatiu.


Exemplu Whole Root Zone:
---------------------------
- -
-######### ********* -
-# # * * -
-# # * * -
-# # * * -
-# HOST # * WRZ * -
-# FS1 # * FS2 * -
-# # * * -
-# # * * -
-######### ********* -
- HOST -
---------------------------

HOST -> Host fizic
FS1 ->Filesystem HOST (fizic)
WRZ -> Host Virtual
FS2 ->Filesystem WRZ (virtual)

Ambele zone au aceleasi sintaxe pentru a fi create difera doar parametrul unui comand care va specifica tipul de zona.

In urmatorul exemplu voi crea o zona "Sparse Root Zone": Zonele pot fi puse in orice tip de filesystem , chiar si pe discuri externe de storage.In exemple voi folosi ca path /export/home/zones Initial va trebui creat directorul care va fi containerul sistemului virtual il voi numi eclipse1


[eclipse]# pwd
/export/home/zones
[eclipse]# ls -ltr
total 2
drwx------ 5 root root 512 Mar 6 04:22 eclipse1
[eclipse]#

Pentru securitate am restrictionat acest director in asa fel incat doar user-ul root sa poata face modificari.Noul host virtual va avea o interfata logica care are ca baza interfata fizica a sistemului. zonecfg se ocupa de creare zonelor " zonecfg - set up zone configuration" Poate fi folosit interactiv sau chiar aplicand parametrii necesari in cmdline.


[eclipse]# [COLOR="#00FF00"]zonecfg -z eclipse1[/COLOR]
eclipse1: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:eclipse1> [COLOR="#00FF00"]create [/COLOR]
zonecfg:eclipse1> [COLOR="#00FF00"]set zonepath=/export/home/zones/eclipse1[/COLOR]
zonecfg:eclipse1>
zonecfg:eclipse1> [COLOR="#00FF00"]add net[/COLOR]
zonecfg:eclipse1:net>
zonecfg:eclipse1:net> [COLOR="#00FF00"]set address=192.168.123.107[/COLOR]
zonecfg:eclipse1:net> [COLOR="#00FF00"]set physical=nfo0[/COLOR]
zonecfg:eclipse1:net>[COLOR="#00FF00"]set defrouter=192.168.123.254[/COLOR]
zonecfg:eclipse1:net>[COLOR="#00FF00"]info[/COLOR]
net:
address: 192.168.123.107
physical: nfo0
defrouter: 192.168.123.254
zonecfg:eclipse1:net>
zonecfg:eclipse1:net> [COLOR="#00FF00"]end[/COLOR]
zonecfg:eclipse1>
zonecfg:eclipse1>[COLOR="#00FF00"]verify[/COLOR]
zonecfg:eclipse1>[COLOR="#00FF00"]commit[/COLOR]
zonecfg:eclipse1>[COLOR="#00FF00"]exit[/COLOR]
[eclipse]#

Aceasta procedura a creat un fisier de configurare XML unde a stocat toate informatiile pe care le-am introdus pentru noul sistem virtual. Fisierele pot fi gasite in /etc/zones


[eclipse]# pwd
/etc/zones
[eclipse]# ls
eclipse1.xml SUNWblank.xml SUNWlx.xml
index SUNWdefault.xml SUNWtsoldef.xml
[eclipse]#

zoneadm - se ocupa de administratea zonelor "zoneadm - administer zones"Pentru a instala zona pe care am configurato se poate folosi urmatoarea sintaxa

zoneadm -z eclipse install 
Preparing to install zone <eclipse1>.
Creating list of files to copy from the global zone.
Copying <1203> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1203> packages on the zone.
....................................................

Istalarea zonei va dura aproximativ 10 minute In urmatorul exemplu puteti vedea zonele instalate


[eclipse]# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- eclipse1 installed /export/home/zones/eclipse1 native shared
[eclipse]#

Note:

Dupa cum observati fiecare zona are un id si un nume.Prima zona care vine identificata de catre valoarea 0 este de fapt sistemul fizic care am spus ca vine recunoscut ca o zona globala si se gaseste sub directorul "/" iar in acest moment e in running deoarece sistemul functioneaza


[eclipse]# uptime
7:34am up 2 day(s), 58 min(s), 2 users, load average: 0.00, 0.00, 0.00
[eclipse]#

Pentru a porni sistemul virtual pe care l-am creat vom folosi urmatorul comand

[eclipse]# zoneadm -z eclipse1 boot
[eclipse]# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
12 eclipse1 running /export/home/zones/eclipse1 native shared
[eclipse]#

Urmatorul process confirma faptul ca zona e in running


[eclipse]# ps -ef | grep z
root 13496 13488 0 06:48:35 pts/1 0:00 sh -c more -s /tmp/mpzUaawA
root 13531 1 0 07:35:59 ? 0:00 zoneadmd -z eclipse1

Un alt tool important pus la dispozitie de catre solaris este zlogin Poate fi folosit pentru a intra intro anumita zona avand un shell , e putin echivalent cu serviciul ssh are la baza acelasi principiu. Un parametru important a acestui comand este -C care stabileste o conexiune cu zone in consola.E important pentru a configura ambientul o data ce a fost instalat.

zlogin -C eclipse1

Configurarile care au mai ramas de facut ar fi serverurile DNS, Language ,etc, toate acestea se pot face in mod interactiv o data ce a fost stabilita conexiunea in consola.Bineinteles pentru a face un simplu login in sistemul virtual se poate folosi

urmatoarea sintaxa

zlogin nume_zona

[eclipse]# zlogin eclipse1
[Connected to zone 'eclipse1' pts/2]
Last login: Tue Mar 6 06:47:30 on pts/2
Oracle Corporation SunOS 5.10 Generic Patch January 2005
#
#

Shutdown se poate face direct din sistemul virtual sau folosind unul din comenzile de administrare

[eclipse]# zoneadm -z eclipse1 halt 

Note:

Tin sa precizez faptul ca nu am setat optiunea set autoboot=true cand am configurat initial aceasta zona , asta inseamna ca nu va porni in momentul in care va face boot sistemul fizic, oricum fisierul de configurare poate fi modificat

folosind comandul zonecfg.Pentru a cunoaste in amanunt fiecare parametru a acestor tool-uri de administrare rog sa recurgeti la man pages.Pentru a intra in mod manual in fiecare zona , identificati path-ul unde a fost creata si veti putea ajunge direct in sistemul de fisiere a aceste zone


[eclipse]# cd /export/home/zones/eclipse1
[eclipse]# ls
dev lu root
[eclipse]# cd root
[eclipse]# ls
bin export lib opt sbin usr
dev home mnt platform system var
etc kernel net proc tmp
[eclipse]#

Evident plecand din sistemul fizic se pot doar explora si modifica fisierele dintro anumita zona, nu pot fi insa rulate procese cu drepturile userilor din zona (nu este echivalent cu un shell de login in sistemul guest care a fost virtualizat).Pentru a face login in sistemul care a fost virtualizat zlogin sau oricare alt serviciussh instalat in acel sistem va functiona.Daca sunt intrebari in legatura cu subiectul nu ezitati sa le faceti.

Edited by pyth0n3
  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...