- LXC là gì?
- Vì cái gì nó hữu ích?
- Sự khác biệt giữa LXC và ảo hóa phổ biến là gì?
Câu trả lời:
Nếu theo "Tiếng Anh thuần túy", bạn có nghĩa là người không có kỹ thuật, sự khác biệt không thể được giải thích dễ dàng. Tóc đó là quá tốt để phân chia mà không xem xét rất cẩn thận.
Nếu theo "Tiếng Anh thuần túy", bạn có nghĩa là các loại người quản lý nói chuyện với người kỹ thuật và do đó, ít nhất có một sự hiểu biết vượt qua về các chủ đề kỹ thuật, tôi sẽ gửi các đoạn văn sau:
Nó là một hình thức ảo hóa khác nhau.
Nếu bạn nhìn vào VMWare ESXi, đó là một trình ảo hóa hoàn toàn chạy cái được gọi là ảo hóa hoàn toàn. Có một lớp rất nhỏ giữa các hệ thống ảo hóa chạy trên phần cứng. Có ảo hóa phần cứng đầy đủ, trong đó HĐH chạy trong máy ảo hoàn toàn độc lập với chính trình ảo hóa và được trình bày với tất cả các phần cứng mà nó mong đợi.
Tiến lên một bước nữa và xem xét một cái gì đó như VMWare Player, Workstation, ESX (không phải ESXi) hoặc VMWare Server và bạn có một hệ điều hành đầy đủ cung cấp vai trò của trình ảo hóa. Tuy nhiên, các máy ảo vẫn được trình bày với một loạt các phần cứng ảo.
Một cách tiếp cận khác là ảo hóa para, mà Xen đã theo dõi khá lâu. Trong hình thức ảo hóa này, hệ điều hành khách nhận thức được rằng nó được ảo hóa và đã được sửa đổi để hoạt động trong môi trường đó. Đôi khi tất cả các nhu cầu này là trình điều khiển ảo hóa para đặc biệt. Những lần khác, những thay đổi hoàn toàn là cần thiết.
LXC, hay Linux Container, là một bước tiến nữa. Trong trường hợp này, nó đang chạy nhiều phiên bản của cùng một hệ điều hành . Hạt nhân có thể giống nhau, nhưng nhiều không gian người dùng đang chạy cho mỗi bộ chứa HĐH. Mỗi vùng chứa có thể có hoặc không có hệ thống tệp khác nhau.
Các container cung cấp một cách để cung cấp sự phân tách bảo mật mạnh mẽ giữa các quy trình theo cách không có sẵn trong các hệ thống có cùng không gian người dùng. Các hệ điều hành giống như Unix đã có 'chroot jail' trong một thời gian khá lâu, nhưng nó không cung cấp sự phân tách quá trình hoặc khả năng giới hạn tài nguyên được tiêu thụ bởi các quy trình trong nhà tù. Bằng cách chứa các quy trình như vậy, việc sử dụng tài nguyên có thể bị hạn chế, các địa chỉ IP riêng biệt có thể được chỉ định cho chúng và các lỗ hổng bảo mật khai thác không gian người dùng được chứa trong phần còn lại của hệ thống.
Bạn sẽ sử dụng LXC ở đâu so với một số loại ảo hóa khác? Nó phụ thuộc, nhưng LXC sẽ cung cấp hình phạt ảo hóa ít hơn bất kỳ phương pháp kích thích hóa nào khác vì nó là cùng một hạt nhân làm trung gian cho tất cả các cuộc gọi không gian người dùng thay vì một trình ảo hóa giả vờ là phần cứng cho một loạt các hình ảnh hệ điều hành mong muốn nói chuyện với phần cứng vật lý. Vì vậy, nếu bạn có một loạt các xử lý cần cùng một phiên bản HĐH và có thể được khởi động lại cùng lúc để cập nhật, LXC có thể cung cấp một cách chi phí thấp để chạy tất cả điều đó một cách an toàn và quản lý tài nguyên.
LXC là một phương tiện để cô lập các hệ thống / quy trình tại kernel. Hệ thống được khóa trong một "thùng chứa" để nó không thể tương tác với bất cứ thứ gì bên ngoài thùng chứa đó. Do đó, tên Linux Container.
Nó có thể hữu ích cho nhiều thứ, một trong số đó là cách ly các dịch vụ chạy trên máy. Nếu một trong những dịch vụ này bị xâm phạm, chính hệ thống máy chủ (cùng với các dịch vụ khác chạy trong LXC của chính họ) sẽ không bị ảnh hưởng. Nó thậm chí có thể được sử dụng như một phương tiện ngu ngốc để cung cấp cho mỗi người dùng quyền truy cập vào hệ thống của riêng họ mà không phải lo lắng về việc họ tương tác với nhau.
Hầu hết các ảo hóa "phổ biến" khác đều áp đặt một lượng lớn sử dụng tài nguyên do nhu cầu mô phỏng các thiết bị phần cứng. LXC không yêu cầu bất kỳ loại mô phỏng nào cho các thiết bị phần cứng, vì mỗi LXC được cung cấp giới hạn / không truy cập trực tiếp vào phần cứng. Mỗi hệ thống đang "chạy" trên máy chủ, nhưng không thể ảnh hưởng đến bất cứ thứ gì bên ngoài thùng chứa của nó. Loại ảo hóa này đã được gọi là ảo hóa cấp hệ điều hành (google nó). Về cơ bản có nghĩa là chi phí rất ít / không tồn tại để chạy Linux Container. Vì vậy, bạn có thể có hàng trăm LXC trên một máy nhất định, nhưng bạn sẽ hết tài nguyên khá nhanh khi sử dụng phần mềm máy ảo "thông thường".
Tôi thực sự quen thuộc hơn với Linux-Vserver nhưng lý thuyết rất giống nhau.
Cách đơn giản nhất để hiểu nó là tìm hiểu những gì chroot làm. chroot cho phép bạn "đăng nhập" vào một thư mục của một hệ thống giống như unix, như thể đó là toàn bộ hệ thống theo đúng nghĩa của nó. Nói cách khác:
nếu bạn có:
/
/boot
/etc
/home
...
v.v., sau đó bạn có thể thêm thư mục some_new_install:
/
/some_new_install
/boot
/etc
/home
/usr
...
/boot
/etc
/home
/usr
...
và đăng nhập vào / some_new_install. Sau đó, / some_new_install / etc là new / etc, và bản gốc / etc bị ẩn và (hầu hết) không thể truy cập được. / usr / bin có thể khác với bản gốc, với các chương trình khác nhau. MySQL có thể là cùng một chương trình trong / usr / bin / mysql, nhưng với dữ liệu khác nhau trong / var / lib / mysql.
Hệ thống tập tin đã được ảo hóa; bạn đã tách hệ thống tệp gốc của mình lên, chia sẻ tài nguyên của nó, tách biệt các tài nguyên đó khỏi các tài nguyên ảo hóa khác.
Điều này là khá tuyệt vời. Thay vì chạy một bản sao hoàn toàn mới, ảo của unix, chỉ để chạy thêm một chương trình, bạn có thể nhảy vào một hệ thống tệp ảo và chạy nó trên cùng một kernel, cùng các thư viện (nếu bạn đã sử dụng symlink), v.v ... Nó hiệu quả hơn một cái gì đó như Xen, hoặc VirtualBox.
Vấn đề là, nếu một trong những chương trình đó, MySQL, bị hỏng và bắt đầu sử dụng tất cả CPU của bạn và hoán đổi trên đĩa, thì nó vẫn sẽ ảnh hưởng đến phần còn lại của máy, bởi vì chỉ có hệ thống tệp được ảo hóa, không phải CPU hoặc hiệu suất đĩa cơ bản. Địa chỉ IP và cổng cũng không được ảo hóa, vì vậy nếu hai chương trình gửi thông tin trên mạng, thì chúng sẽ làm như vậy từ cùng một IP, có khả năng gây ra xung đột. Tương tự như vậy, nếu hai bản sao của mysql cố gắng lắng nghe trên một cổng, thì bản thứ hai sẽ thất bại, vì cổng này đang được sử dụng.
LXC giải quyết điều này bằng cách ảo hóa không chỉ hệ thống tập tin, mà cả ips / cổng / giao diện mạng, CPU, sử dụng bộ nhớ, v.v.
LXC không an toàn như các máy ảo đầy đủ, nhưng nhìn chung, đó là giải pháp ưu việt. Xét cho cùng, hệ điều hành là tất cả về việc chia sẻ tài nguyên một cách an toàn. Hầu hết thời gian, thật ngớ ngẩn khi chạy nhiều hệ điều hành để làm điều đó - chúng ta chỉ cần một hệ điều hành tốt hơn với sự cô lập tốt hơn. Đó là những gì LXC và các công cụ tương tự cung cấp.