Portál AbcLinuxu, 27. dubna 2024 03:59

Chroot instalovaný pomocí virtuální mašiny

26.6.2009 14:44 | Přečteno: 1341× | Výběrový blog

Spojení instalace virtuální mašiny a následný provoz jejího "image" v chrootu spojuje výhody obou přístupů. Může se to zdát jako triviální pokrok, ale až donedávna jsem netušil jaké výhody tato kombinace poskytuje. O co jde?

  1. Pomocí kvm nebo čistého qemu nainstalujeme linuxovou distribuci do viruální mašiny (v nejjednodušším případě do souborového image disku)
  2. VM zavřeme a dále už nespouštíme
  3. Připojíme image např. pomocí mount -o loop,offset=nnn
  4. Do připojeného adresáře namountujeme kopii /proc /sys a tak dále
  5. Provedeme něco jako env -i chroot /mnt/mojevm su - user

Nyní máme k dispozici prostředí z virtuální mašiny, které ale běží přímo na našem hardware. Jaké že jsou výhody? Stručně řečeno dostáváme soběstačný chroot bez útrap s jeho sestavováním:

  1. V první řadě je to blesková instalace čehokoliv co chceme provozovat v chrootu. Tradiční instalace chrootových prostředí je poměrně úmorná pokud se dělá ručně a ani s dedikovaným instalátorem chrootu nedosáhneme takového pohodlí jako když prostě instalujeme distribuci.
  2. Takzvaný 32-bitový chroot v 64-bitovém systému pro aplikace typu wine a další. Pokud nechceme provozovat oboje v jednom systému, je tradiční řešení instalace 32-bitového systému do chrootu. Klasický postup je opět úmorný nebo vyžaduje speciální instalátor; v našem případě prostě nainstalujeme 32-bitovou distribuci.
  3. Celý chroot žije pouze v jednom souboru. Lze ho tak pohodlně stěhovat, klonovat, snapshotovat, zbavit se ho, ...
  4. Není důležité jakou distribuci instalujeme! Většina chrootových řešení využívá pro chrootované prostředí stejné prostředí jako pro hlavní systém. V našem případě můžeme instalovat cokoliv - od vyzkoušení si nové verze naší distribuce po různé speciální.
  5. Podstatně vyšší výkon proti virtuální mašině - chroot má přímý přístup k harware (např. k 3D akceleraci). A tudíž větší "integrace" (z pohledu uživatele) nového systému než u VM.
       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

26.6.2009 15:01 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Odpovědět | Sbalit | Link | Blokovat | Admin
Asi jsem tento objev nějak nepochopil.

Já jsem přes image namountovaný skrz loopback poměrně elegantně vyřešil nastavení kvóty. nehrozilo pak, že by uživatelé zaprali celý disk.
Max avatar 26.6.2009 15:26 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Elegantně? Hmm ...
Zdar Max
Měl jsem sen ... :(
26.6.2009 16:20 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Jistě. Měl bys snad lepší řešení v situaci, kdy je vše nainstalováno na jednom raidu, v jedné partition? Ostatně, je to už tak čtyři roky nazpátek, dnes bych celý ten stroj řešil jinak.
Max avatar 26.6.2009 20:49 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Ano, přes klasické quoty. Ale asi jsem se unáhlil. Myslel jsem, že jsi chrootval uživatele kvůli kvótám do virtuálního systému/chrootu, kdežto ty jsi použil asi zřejmě jen prázdný image čistě jen pro data, že? V takovém případě ok :)
Zdar Max
Měl jsem sen ... :(
xkucf03 avatar 27.6.2009 21:44 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny

Pomocí XFS a jeho „projektových kvót“ – ale to by pravděpodobně vyžadovalo změnu souborového systému.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
29.6.2009 20:52 xHire | skóre: 21 | blog: Linuxovník
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
To jsem kdysi zkoušel, ale nepodařilo se mi to rozchodit. Dnes už XFS nemám, ale pokud by tohle fungovalo, tak bych byl ochoten uvažovat nad jeho návratem v budoucnosti. :-)
Kryptoměny a bločenka.
26.6.2009 16:03 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Asi jsem tento objev nějak nepochopil.
V jakém smyslu?
In Ada the typical infinite loop would normally be terminated by detonation.
26.6.2009 16:23 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
V tom nejširším. Proč bych měl pro chroot využít virtuálního stroje, když si do image mohu ten systém nainstalovat rovnou.
26.6.2009 17:41 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
když si do image mohu ten systém nainstalovat rovnou
Jak?
In Ada the typical infinite loop would normally be terminated by detonation.
26.6.2009 20:01 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Připojím image, použiju instalátor určený pro instalaci z jiného unixového systému (např. tohle http://www.debian.org/releases/stable/amd64/apds03.html.cs)
Quando omni flunkus moritati
26.6.2009 20:52 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Ne, tím nainstalujete jen ten debian. Navíc tam jsou nějaké dodatečné kroky po instalaci. A o tom mluvím.
In Ada the typical infinite loop would normally be terminated by detonation.
26.6.2009 21:09 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
No samozřejmě že instalátorem Debianu nainstaluju Debian. A když budu chtít jiné distro, tak se zase podívám po instalátoru jiného distra... co je na tom složitého?
Quando omni flunkus moritati
26.6.2009 21:19 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
A když budu chtít jiné distro, tak se zase podívám po instalátoru jiného distra... co je na tom složitého?

V podstatě to dívání se. Nevím jestli každé distro (včetně různých speciálních) obsahuje (jednoduše dostupný) chroot-instalátor, ale vím určitě, že každé obsahuje obyčejný instalátor.
In Ada the typical infinite loop would normally be terminated by detonation.
27.6.2009 15:58 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Žádný instalátor není nutný. Stačí zkopírovat systém, pochopitelně s výjimkou adresářů co se jim obsah mountuje po startu (proc, sys) a lehce upravit par konfiguraku s nastavením hostname, ip atp.
27.6.2009 16:00 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Stačí zkopírovat systém,
A odkud? Z té virtuálky? :-D
In Ada the typical infinite loop would normally be terminated by detonation.
27.6.2009 19:36 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
To je úplně putna. Klidně to může být i ten systém ve kterém pak chroot poběží, nebo i jiný stroj na síti. Atd. Ale co hlavně - proč k tomu vůbec používat virtuální disk.
28.6.2009 13:19 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Asi jsme se nepochopili - říkal jste že stačí do chrootu skopírovat systém a já se ptám kde ho vezmete. Máte asi tyto možnosti:
  1. Skopírujete svůj vlastní systém nebo jiný systém z jiného fyzického PC - v tom případě děláte defacto totéž co já, ale místo virtuálky jste použil skutečné železo
  2. Použijete nějaký specifický vytvářeč chrootu, který do chrootu ale nainstaluje specifickou distribuci
  3. Skompilujete nebo nějak jinak ručně vytvoříte chroot
  4. Nainstalujete virtuálku a soubory vezmete z ní, což je můj přístup. Není nutné mít věci v image, můžete je klidně vykopírovat ven, nebo instalovat virtuálku do oddílu disku ale IMHO je to zbytečné, pokud nemáte extra nároky na rychlost souborového systému
In Ada the typical infinite loop would normally be terminated by detonation.
26.6.2009 18:06 Zdenek
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Odpovědět | Sbalit | Link | Blokovat | Admin
6. Bezpecnost takoveho reseni je na nic, tudiz je to maximalne jen pro Vas na hrani.
26.6.2009 20:54 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Bezpečnost je úplně stejná jako při normálním chrootu. Pokud instalujete sshd do chrootu, můžete využít tento postup. Případně můžete bez námahy nainstalovat spoustu věcí, které normálně chroot neumí, do svých vlastních chlívků.
In Ada the typical infinite loop would normally be terminated by detonation.
xkucf03 avatar 27.6.2009 21:48 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Virtualizace

Není ale pak lepší použít nějakou lehkou virtualizaci typu OpenVZ? Režie je minimální, ale bezpečnost a oddělení systémů znatelně lepší.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
frEon avatar 26.6.2009 18:27 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Odpovědět | Sbalit | Link | Blokovat | Admin
na debianu je jeste jednodussi postup:
debootstrap --arch amd64 lenny /cesta/k/chrootu
Pripadne se tomu dat parametr, ktery z toho udela velmi minimalni instalaci (tak minimalni, ze tam ani veci jako treba ping nejsou), ktery staci pro nabootovani - pridame-li jadro. Ve virt masine mi pak po nabootovani bezi s cca 20mb pameti.
Talking about music is like dancing to architecture.
28.6.2009 00:19 Robertek | skóre: 5
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Odpovědět | Sbalit | Link | Blokovat | Admin
Co takhle zkusit OpenVZ, to za tebe udělá přesně to co tady popisuješ, jen s tim že když se podíváš do openvz repozitáře s templatama, zjistíš že je tam velký množstvý používaných distribucích a počítám že si nějakou najdeš (debian,ubuntu,arch,fedora,centos,...)

Jediné na čem je toto závislé je openvz kernel, ale ten je ve většině distribucí které mají ambice být serverem (debian, ubuntu, gentoo, pravděpodobně i fedora a centos).

Vyřeší ti to síťování, quoty, nice, pamětové omezení apod.

tvorba takového virtuálu je pak otázkou několika příkazů protože openvz má chytrý nástroj vzctl který v podstatě vše zařídí. Stejnak jako se ti initscript postará o to aby se ti mašiny spouštěly po bootu apod.

Jinak pro zajímavost, ubuntu 9.04 základní template využívá po spuštění asi 10M paměti se spuštěným apache.

Plný virtualizace jsou dobrý když to člověk potřebuje fakt instalovat jako na zkutečnym pc, potřebuje Xka, nebo něco jiného než linux, ale jinak je kontejner jako openvz ideální řešení.

Ale na druhou stranu pokud si jednou potřeboval vytvořit virtuál v chrootu a jinak never more, tak proč ne.
28.6.2009 13:22 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Chroot instalovaný pomocí virtuální mašiny
Virtuozzo je sice dobré virtualizační řešení, ale já v tomto případě nic virtualizovat (ani omezovat kvótama) nechtěl.
In Ada the typical infinite loop would normally be terminated by detonation.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.