Một container Linux và một trình ảo hóa Linux là gì?


10

Tôi đã xem trang web stackexchange nhưng không thể tìm thấy gì. Tôi đã xem mục wikipedia trên container Linux https://en.wikipedia.org/wiki/LXC và cũng như nhà cung cấp dịch vụ ảo thuật https://en.wikipedia.org/wiki/Hypervisor nhưng lời giải thích cho cả hai vượt quá một người đã không làm việc trên một trong hai sẽ hiểu. Tôi cũng đã xem http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun nhưng điều đó cũng không giải thích được.

Tôi đã chơi với VM như virtualbox. Một trong những ý tưởng khởi đầu cho sự hiểu biết hạn chế của tôi có lẽ là Máy ảo có lẽ đã thử nghiệm phần mềm trong môi trường hộp cát (Có hộp Solaris khi bạn không thể mua / đủ khả năng để có máy và vẫn có ý tưởng về cách phần mềm bạn đang phát triển cho phần cứng mục tiêu đó đang hoạt động.) Trong khi bị giới hạn, nó sử dụng. Đây có lẽ là một trong những cách mà nó đã tạo ra bước nhảy trong điện toán đám mây. Các câu hỏi rất rộng nên đây là cách tôi chắt lọc nó -

Một số người có thể giải thích thế nào là một trình ảo hóa và một thùng chứa * nix (với sự tương tự nếu có thể.)?
Là một siêu giám sát * nix giống như máy ảo hay có sự khác biệt?

Câu trả lời:


9

Một Virtual Machine (VM) là khá một thuật ngữ chung cho nhiều công nghệ ảo hóa.

Có rất nhiều biến thể về công nghệ ảo hóa, nhưng những biến thể chính là:

  • Ảo hóa cấp độ phần cứng
  • Ảo hóa cấp độ hệ điều hành

qemu-kvmVMWarelà những ví dụ đầu tiên. Họ sử dụng một trình ảo hóa để quản lý các môi trường ảo trong đó một hệ điều hành đầy đủ chạy. Ví dụ: trên một qemu-kvmhệ thống, bạn có thể có một VM chạy FreeBSD, một máy chạy Windows khác và một máy chạy Linux khác.

Các máy ảo được tạo ra bởi các công nghệ này hoạt động giống như các máy tính riêng lẻ cho khách. Chúng có CPU ảo, RAM, NIC, đồ họa, vv mà khách tin là bài viết chính hãng. Do đó, nhiều hệ điều hành khác nhau có thể được cài đặt trên máy ảo và chúng hoạt động "ngoài luồng" mà không cần sửa đổi.

Mặc dù điều này rất thuận tiện, trong đó nhiều hệ điều hành sẽ cài đặt mà không tốn nhiều công sức, nhưng có một nhược điểm là bộ ảo hóa phải mô phỏng tất cả phần cứng, có thể làm mọi thứ chậm lại. Một thay thế là phần cứng ảo hóa para, trong đó một thiết bị và trình điều khiển ảo mới được phát triển cho khách được thiết kế để thực hiện trong môi trường ảo. qemu-kvmcung cấp một virtioloạt các thiết bị và trình điều khiển cho việc này. Một nhược điểm của điều này là hệ điều hành khách phải được hỗ trợ; nhưng nếu được hỗ trợ, lợi ích hiệu suất là rất lớn.


lxclà một ví dụ về Ảo hóa cấp hệ điều hành, hoặc các thùng chứa. Trong hệ thống này, chỉ có một kernel được cài đặt - kernel host. Mỗi container chỉ đơn giản là một sự cô lập của các quy trình người dùng. Ví dụ: một máy chủ web (ví dụ apache) được cài đặt trong một thùng chứa. Theo như máy chủ web có liên quan, máy chủ được cài đặt duy nhất là chính nó. Một container khác có thể đang chạy một máy chủ FTP. Máy chủ FTP đó không biết về cài đặt máy chủ web - chỉ có nó. Một thùng chứa khác có thể chứa toàn bộ cài đặt vùng người dùng của một bản phân phối Linux (miễn là bản phân phối đó có khả năng chạy với nhân của hệ thống máy chủ).

Tuy nhiên, không có cài đặt hệ điều hành riêng biệt khi sử dụng các thùng chứa - chỉ có các phiên bản riêng biệt của dịch vụ người dùng. Do đó, bạn không thể cài đặt các nền tảng khác nhau trong một thùng chứa - không có Windows trên Linux.

Các container thường được tạo bằng cách sử dụng a chroot. Điều này tạo ra một root riêng ( /) cho một quá trình để làm việc với. Bằng cách tạo nhiều gốc riêng, các quy trình (máy chủ web hoặc bản phân phối Linux, v.v.) chạy trong hệ thống tệp riêng biệt của chúng. Các kỹ thuật nâng cao hơn, chẳng hạn như cgroupscó thể cô lập các tài nguyên khác như mạng và RAM.


Có những ưu và nhược điểm đối với cả hai và nhiều cuộc tranh luận kéo dài là tốt nhất.

  • Các container nhẹ hơn, trong đó một hệ điều hành đầy đủ không được cài đặt cho mỗi; đó là trường hợp cho các siêu giám sát. Do đó, họ có thể chạy trên phần cứng spec'd thấp hơn. Tuy nhiên, họ chỉ có thể chạy khách Linux (trên máy chủ Linux). Ngoài ra, vì họ chia sẻ kernel, nên có khả năng một container bị xâm nhập có thể ảnh hưởng đến kernel khác.
  • Hypervisor an toàn hơn và có thể chạy các HĐH khác nhau vì một HĐH đầy đủ được cài đặt trong mỗi VM và khách không biết về các VM khác. Tuy nhiên, điều này sử dụng nhiều tài nguyên hơn trên máy chủ, phải tương đối mạnh mẽ.

2

Một container giống như một môi trường chroot ngoại trừ nó đạt được sự cô lập hoàn toàn hơn về không gian người dùng. Nó không cung cấp một VM thực sự, mà là một hệ điều hành ảo. Máy ảo tạo ra ảo ảnh của nhiều máy, trong đó mỗi hệ điều hành thực sự, hoàn chỉnh có thể chạy như thể trên kim loại trần. "Toàn bộ hệ điều hành" ở đây bao gồm một kernel. Một số máy ảo (ví dụ QEMU ) thậm chí cho phép kích thích các loại kiến ​​trúc "kim loại trần" khác nhau.

Các container thay vào đó tạo ra ảo ảnh của nhiều hạt nhân, mỗi hạt đang chạy một vùng người dùng hoàn chỉnh. Bạn có thể, ví dụ, chạy Debian trong một container và Arch trong một container khác, do đó, phối cảnh từ bên trong container giống như VM. Tuy nhiên, bạn chỉ có thể chạy một vùng người dùng hệ điều hành tương thích với một nhân thực tế, trong trường hợp này là Linux. Điều này khác với các máy ảo thực sự, nơi bạn có thể chạy một hạt nhân độc lập và do đó, bất kỳ loại hệ điều hành nào.

Vì vậy, VM thực sự đắt hơn, tài nguyên khôn ngoan hơn so với container; nếu bạn không cần các kernel khác nhau trong mỗi VM, bạn cũng có thể sử dụng một container.

Có các hệ thống ảo hóa khác làm một cái gì đó tương tự như LXE, chẳng hạn như openVZ , được sử dụng rộng rãi bởi các nhà cung cấp VPS. VPS OpenVZ là một vùng người dùng độc lập sử dụng kernel của hệ điều hành máy chủ của nó. Đây là lý do tại sao các VPS như vậy có một loạt các hương vị linux nhưng không có gì khác; chúng phải tương thích với kernel host.

Ảo hóa kiểu OpenVZ và LXC được gọi là ảo hóa cấp hệ điều hành .

Một trình ảo hóa là hệ thống quản lý các máy ảo, chẳng hạn như VirtualBox , QEMU hoặc Xen . Một số trình ảo hóa, chẳng hạn như Xen, chạy trên kim loại trần và không yêu cầu HĐH máy chủ (mặc dù chúng có thể yêu cầu HĐH được lưu trữ để phục vụ như một giao diện điều khiển). Những người khác, chẳng hạn như VirtualBox và QEMU, chạy bên trong một hệ điều hành máy chủ. Một số, như QEMU, cho phép mô phỏng các kiến ​​trúc máy khác nhau; những người khác, chẳng hạn như VirtualBox, thì không (nghĩa là kiến ​​trúc VM luôn giống với máy chủ thực). Mô phỏng một kiến ​​trúc đòi hỏi nhiều tài nguyên hơn, giống như các máy ảo thực sự đòi hỏi nhiều tài nguyên hơn các thùng chứa.

Ảo hóa kiểu Hypervisor được gọi là ảo hóa cấp nền tảng .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.