- Co to jest LXC?
- Do czego to jest przydatne?
- Jakie są różnice między LXC a powszechną wirtualizacją?
linux
lxc
containers
Daniel Cukier
źródło
źródło
Odpowiedzi:
Jeśli przez „zwykły angielski” masz na myśli osoby nietechniczne, różnicy nie da się łatwo wyjaśnić. Że włosy są zbyt cienkie, aby je rozdzielić bez bardzo uważnego rozważenia.
Jeśli przez „zwykły angielski” masz na myśli osoby zarządzające, które rozmawiają z ludźmi technicznymi, a tym samym przynajmniej rozumieją tematy techniczne, przesyłam następujący werset:
Jest to inna forma wirtualizacji.
Jeśli spojrzysz na VMWare ESXi, jest to pełny hypervisor z tak zwaną pełną wirtualizacją. Pomiędzy zwirtualizowanymi systemami działającymi na sprzęcie jest bardzo mała warstwa. Pełna wirtualizacja sprzętowa polega na tym, że system operacyjny działający na maszynie wirtualnej jest całkowicie niezależny od samego hiperwizora i jest prezentowany z całym oczekiwanym sprzętem.
Zrób kolejny krok i spójrz na coś takiego jak VMWare Player, Workstation, ESX (nie ESXi) lub VMWare Server, a masz pełny system operacyjny pełniący rolę hiperwizora. Jednak maszyny wirtualne są nadal prezentowane z pełną gamą sprzętu wirtualnego.
Innym podejściem jest para-wirtualizacja, którą Xen stosował od dłuższego czasu. W tej formie wirtualizacji system operacyjny gościa jest świadomy, że jest zwirtualizowany i został zmodyfikowany do pracy w tym środowisku. Czasami wszystko to wymaga specjalnych sterowników do wirtualizacji. Innym razem potrzebne są bezpośrednie zmiany w jądrze.
LXC, czyli Linux Containers, to kolejny krok naprzód. W tym przypadku działa wiele instancji tego samego systemu operacyjnego . Jądro może być takie samo, ale dla każdego kontenera systemu operacyjnego działa wiele przestrzeni użytkownika. Każdy kontener może mieć inny system plików lub nie.
Kontenery zapewniają sposób silnego oddzielenia bezpieczeństwa między procesami w sposób niedostępny w systemach o tej samej przestrzeni użytkownika. Uniksowe systemy operacyjne miały „więzienie chroot” od dłuższego czasu, ale nie zapewnia separacji procesów ani możliwości ograniczenia zasobów zużywanych przez procesy w więzieniu. Konteneryzując takie procesy, można ograniczyć wykorzystanie zasobów, można przypisać do nich dyskretne adresy IP, a luki bezpieczeństwa wykorzystujące przestrzeń użytkownika są ograniczone od reszty systemu.
Gdzie zastosowałbyś LXC w porównaniu do innego rodzaju wirtualizacji? Zależy, ale LXC powinien zapewniać mniej kar za wirtualizację niż jakakolwiek inna metoda witalizacji, ponieważ jest to to samo jądro pośredniczące we wszystkich wywołaniach przestrzeni użytkownika, a nie hiperwizor udający, że jest sprzętem dla grupy obrazów systemu operacyjnego oczekujących komunikacji z fizycznym sprzętem. Więc jeśli masz wiele procesów, które wymagają tej samej wersji systemu operacyjnego i mogą być jednocześnie uruchomione ponownie w celu aktualizacji, LXC może zapewnić tani sposób bezpiecznego i bezpiecznego zarządzania zasobami.
źródło
LXC jest sposobem izolowania systemów / procesów w jądrze. System jest zamknięty w „kontenerze”, aby nie mógł oddziaływać na nic poza tym kontenerem. Stąd nazwa Linux Containers.
Może być przydatny do wielu rzeczy, z których jedną może być izolacja usług działających na komputerze. Jeśli jedna z tych usług zostanie naruszona, sam system hosta (wraz z innymi usługami działającymi we własnych LXC) nie zostanie naruszony. Może być nawet używany jako głupi sposób, aby dać każdemu użytkownikowi root dostęp do własnego systemu, bez obaw o interakcje między nimi.
Większość innych „powszechnych” wirtualizacji wiąże się z dużym obciążeniem związanym z wykorzystaniem zasobów ze względu na konieczność emulacji urządzeń. LXC nie wymaga emulacji urządzeń, ponieważ każdy LXC ma ograniczony / brak bezpośredniego dostępu do sprzętu. Każdy system „działa” na hoście, ale nie może wpływać na nic poza jego kontenerem. Ten typ wirtualizacji został nazwany wirtualizacją na poziomie systemu operacyjnego (google it). Co w gruncie rzeczy oznacza bardzo mały / nieistniejący narzut związany z uruchamianiem kontenera Linux. Możesz mieć setki LXC na danej maszynie, ale dość szybko zabraknie zasobów przy użyciu „wspólnego” oprogramowania maszyny wirtualnej.
Właściwie jestem bardziej zaznajomiony z Linux-Vserver, ale teoria jest bardzo podobna.
źródło
Najprostszym sposobem na zrozumienie tego jest nauczenie się, co robi chroot. chroot pozwala „zalogować się” do folderu systemu uniksopodobnego, tak jakby był to pełny system sam w sobie. Innymi słowy:
Jeśli masz:
itd., następnie możesz dodać katalog some_new_install:
i zaloguj się do / some_new_install. Wtedy / some_new_install / etc jest na przykład nowym / etc, a oryginalny / etc jest ukryty i (przeważnie) niedostępny. / usr / bin może różnić się od oryginału różnymi programami. MySQL może być tym samym programem w / usr / bin / mysql, ale z różnymi danymi w / var / lib / mysql.
System plików został zwirtualizowany; podzieliłeś oryginalny system plików, dzieląc się jego zasobami, izolując je od innych zwirtualizowanych zasobów.
To jest całkiem świetne. Zamiast uruchamiać zupełnie nową, wirtualną kopię unixa, aby uruchomić jeden dodatkowy program, możesz wskoczyć do wirtualnego systemu plików i uruchomić go na tym samym jądrze, w tych samych bibliotekach (jeśli korzystałeś z dowiązań symbolicznych) itp. Jest DUŻO bardziej wydajny niż coś takiego jak Xen lub VirtualBox.
Problem polega na tym, że jeśli jeden z tych programów, powiedzmy MySQL, zwariuje i zacznie używać całego procesora i wymiany na dysku, nadal będzie to miało wpływ na resztę komputera, ponieważ tylko system plików został zwirtualizowany, a nie procesor lub wydajność dysku bazowego. Adresy IP i porty również nie są zwirtualizowane, więc jeśli dwa programy wysyłają informacje w sieci, robią to z tych samych adresów IP, potencjalnie powodując konflikty. Podobnie, jeśli dwie kopie mysql spróbują nasłuchiwać na porcie, drugi nie powiedzie się, ponieważ port jest w użyciu.
LXC rozwiązuje ten problem, wirtualizując nie tylko system plików, ale także sieciowe ips / porty / interfejsy, procesor, wykorzystanie pamięci itp.
LXC nie jest tak bezpieczny jak pełne maszyny wirtualne, ale ogólnie jest to najlepsze rozwiązanie. W końcu systemy operacyjne zapewniają bezpieczne udostępnianie zasobów. Przez większość czasu głupio jest uruchamiać wiele systemów operacyjnych - potrzebujemy tylko lepszego systemu operacyjnego z lepszą izolacją. Właśnie to zapewniają LXC i podobne narzędzia.
źródło