Jak uvnitř funguje LXC?

butan

Jak uvnitř funguje LXC?
« kdy: 10. 03. 2016, 16:22:10 »
Zdravim,
par dni jsem se ted hrabal v LXC, stahnul jsem z gitu zdrojaky a prosel je zevrubne, zajimalo me jak to funguje trochu na podvozku.

1.
Pochopil jsem to spravne, ze cele LXC je vlastne postavene na namespaces, coz je docela zajimave technologie, ktera vlastne pro procesy dela abstrakci na systemem, takze procesy "si mysli" ze maji vlastni izolovane IPC, sit, PID, filesystem a UID/GID prostor. (odmysleme si ze jsou tam jeste cgroups, ktere cely ten namespace nejak umi limitovat)
Je to tak (priblizne) ?

2.
Jak to startuje, kdyz jsem cucel do zdrojaku, tak lxc-create a lxc-start delaji asi neco takove.
Create, cele se to mota kolem struktury lxc_container a bdev co je storage ve kterem to bude zit, struktura s inicializuje, pripravi se v ni pointry na funkce jako start,stop, reboot, isrunnnig... je tam toho more, pripravi se storage, stahne se nejaky template systemu, napr. debian co je ala debootstrap, tedy zakladni system, systemove nastroje, FHS, ale bez jadra.

Mno a pak prijde start, zavola se c->start = lxcapi_start, tahle funkce po hrozne spouste kontrol apod na konci udela jednu vec, vytvorit pomoci novy proces pomoci fork(), vystupem je PID podle ktereho se /proc/PID/ns/ dostane namespace a udelaji se klony, tak aby novy proces mel vse izolovane jen pro sebe, nasledne je zavolan pivot_chroot do storage kde je template, posledni krokem je vlastne zavoleni initu ktery je v template, pro init to vypad jako, ze prave dobehla inicializace jadra, ma filesystem, sit, vlastni PID proste, vlastni UID/GID a zacne tedy pripracovat zbytek systemu.
Je to tak (priblizne, velmi zjednodusene) ?
---
Diky Butan.
Jeste me trochu zajima jak to vypada z pohledu jadra, ale nemam uplne odvahu sem v vrtat, protoze je to velike, ale zajimalo by me, to jsou nejak obalene syscally a cele sitovani nebo jak to funguje?
Nemate nekdo treba link na literaturu kde by se trochu podrobneji resilo jak funguje tento typ virtualizace?
Sorry za zdrzovani... vim, ze to v tom srv vsechno je, ale nekdy je to na bednu to pochopit, holt neschopnot.





« Poslední změna: 10. 03. 2016, 23:11:30 od Petr Krčmář »


Re:LXC background
« Odpověď #1 kdy: 10. 03. 2016, 18:51:57 »
Je to tak nějak... koncept LXC vychází z OpenVZ (které se nepodařilo nikdy začlenit do jádra, ale jeho funkcionalita je výrazně větší).
Možná kvůli tomu odporu se objevilo LXC, které vyvíjí vývojáři OpenVZ společně s Googlem a IBM.
Cílem je postupné pronikání do jádra, což se v dlouhodobém horizontu jeví jako průchodnější, než začlenění OpenVZ.

Tím jsem chtěl říct, že dokumentace k OpenVZ může nastínit tuto problematiku.
Nicméně LXC je s funkcionalitou na úrovni OpenVZ v roce 2006.
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci