Các công nghệ ảo hóa

Docker Mar 17, 2021

Ảo hóa là gì?

Ảo hóa (Ảo hóa) là quá trình tạo ra một phiên bản ảo(hay còn gọi là máy chủ ảo) từ tài nguyên của của máy chủ vật lý.

Máy ảo (VM) tạo ra từ chính máy chủ vật lý – được cấp phát các tài nguyên vật lý giống như một máy chủ vật lý bình thường (CPU, RAM, Storage...)

Chúng ta có 2 loại ảo hóa phổ biến sau:

Ảo hóa hỗ trợ phần cứng

Ảo hóa hỗ trợ phần cứng là phương thức ảo hóa toàn phần (full virtualization), cho phép tạo các máy ảo hoạt động với tài nguyên vật lý độc lập.

Với phương thức ảo hóa này, các máy ảo sẽ làm việc giống y như máy chủ vật lý thật, sử dụng hoàn toàn các tài nguyên vật lý được cấp phát và có thể cài đặt – quản lý 100% hệ điều hành trên đó.

Server sử dụng công nghệ ảo hóa phần cứng sẽ được sở hữu hoàn toàn các tài nguyên vật lý đã cấp cho nó mà không san sẻ cho các server ảo khác.

Để vận hành ảo hóa hỗ trợ phần cứng ta có Hypervisor:

Hypervisor là gì?

Hypervisor – còn gọi là Phần mềm giám sát máy ảo VMM (Virtual Machine Monitor) là phần mềm khởi tạo và chạy máy ảo.

Vai trò của Hypervisor là tạo ra một môi trường giả lập máy thật, nhờ đó mà các hệ điều hành khách (Guest OS) có thể chạy trên các máy ảo y hệt trên máy vật lý.

Hypervisor có thể là hardware, nhưng thường là software, hoặc firmware (phần mềm cấp thấp, chạy trực tiếp trên phần cứng không cần hệ điều hành).

Hypervisor có 2 loại:

Hypervisor Type-1

Một hypervisor ở dạng native (hay còn gọi “bare-metal”) chạy trực tiếp trên phần cứng. Nó nằm giữa phần cứng và một hoặc nhiều hệ điều hành khách (guest operating system). Nó được khởi động trước cả hệ điều hành và tương tác trực tiếp với kernel. Điều này mang lại hiệu suất cao nhất có thể vì không có hệ điều hành chính nào cạnh tranh tài nguyên máy tính với nó. Tuy nhiên, nó cũng đồng nghĩa với việc hệ thống chỉ có thể được sử dụng để chạy các máy ảo vì hypervisor luôn phải chạy ngầm bên dưới.

Các hypervisor dạng native này có thể kể đến như VMware ESXi, Microsoft Hyper-V, XEN và Apple Boot Camp.

Hypervisor Type-2

Một hypervisor dạng hosted được cài đặt trên một máy tính chủ (host computer), mà trong đó có một hệ điều hành đã được cài đặt. Nó chạy như một ứng dụng cũng như các phần mềm khác trên máy tính. Hầu hết các hypervisor dạng hosted có thể quản lý và chạy nhiều máy ảo cùng một lúc. Lợi thế của một hypervisor dạng hosted là nó có thể được bật lên hoặc thoát ra khi cần thiết, giải phóng tài nguyên cho máy chủ. Tuy nhiên, vì chạy bên trên một hệ điều hành nên hiệu suất sẽ không cao bằng một hypervisor ở dạng native.

Hypervisor Type-2 thì đa số dân IT đều biết, ví dụ bạn muốn cài Linux (Ubuntu) trên Windows 7, bạn cần cài phần mềm máy ảo VirtualBox, còn muốn cài Windows trên MacOS, thì dùng Parallels Desktop for Mac… đấy đều là các phần mềm đóng vai trò của Hypervisor.

Các loại Hypervisor Type -2 phổ biến là VirtualBox, Parallels Desktop for Mac, dùng cho Server thì có VMware Workstation, VMware Player, QEMU

Các công nghệ ảo hóa dựa trên phần cứng

Trong công nghệ ảo hóa dựa trên phần cứng, các máy chủ ảo sẽ hoạt động và được quản lý bởi Hypervisor (cả loại 1 lẫn loại 2).

Ảo hóa dựa trên phần cứng ta có thể gặp ở các máy PC khi muốn chạy một hệ điều hành khác trên một hệ điều hành có sẵn (Cài Linux Ubuntu trên Windows, hay cài Windows trên MacOS), hoặc trên thiết bị chơi game (Xbox), và cho ảo hóa máy chủ.

Ngoài các ứng dụng ảo hoá type 2 mà chúng ta thường thấy như VMware Workstation, Oracle VirtualBox và Parallels Desktop for Mac, chúng ta sẽ tìm hiểu một số công nghệ ảo hoá type 1 phổ biến hiện nay

Xen

Xen là một phần mềm Hypervisor Type – 1, ra đời từ Phòng thí nghiệm máy tính của Đại học Cambridge (Anh) và hiện nay được tiếp tục phát triển bởi Linux Foundation và được hỗ trợ chính bởi tập đoàn Intel.

Công nghệ của Xen hỗ trợ Ảo hóa dựa trên phần cứng, và được sử dụng rất rộng rãi trên thị trường IaaS, có thể kể tới Amazon EC2, IBM SoftLayer, Rackspace Cloud, Liquid Web hay Fujitsu Global Cloud Platform, OrionVM..

Xen là một dự án Open source, miễn phí. Nhưng nó cũng được phát triển thành các phiên bản thương mại như dự án Citrix XenServers, Huawei FusionSphere, Oracle VM Server for x86, ..

Trên nền tảng Cloud Computing, Xen đóng vai trò Hypervisor Type-1 cho các phần mềm triển khai Cloud Server IaaS như CloudStack, OpenStack, Hyper-V, Open Nebula…

KVM

KVM – Kernel-based Virtual Machine hay Máy ảo dựa trên Nhân (Kernel) là tên gọi của một module cho phép biến Linux Kernel (nhân Linux) hoạt động như một Hypervisor.

KVM được tạo ra bởi Qumranet, Inc vào năm 2006, sau Xen 3 năm. Hiện tại KVM được tiếp tục phát triển bởi Open Virtualization Alliance (OVA), đây là một dự án riêng cũng nằm dưới sự quản lý của Tổ chức Linux Foundation.

Về tính năng, KVM không khác Xen quá nhiều, ngoài một số cải tiến nhỏ.

Hiện nay KVM được dùng rất phổ biến, tiêu biểu như Google Compute Engine, Vultr, DigitalOcean, OVH…

Tương tự Xen, các phần mềm triển khai Cloud Computing IaaS như OpenStack, CloudStack, OpenNebula, … dùng KVM như Hypervisor Type-1.

VMware ESXi

VMware ESXi là phần mềm Hypervisor Type-1 của VMware – tập đoàn ảo hóa số 1 thế giới. Trước đay ESXi có tên là VMware ESX – viết tắt của VMware Elastic Sky X.

VMware ESXi cũng có tính năng như Xen, KVM, nhưng là sản phẩm thương mại.

Hiện nay, ESXi là một phần của bộ công cụ triển khai Cloud Computing IaaS của VMware là vSphere  (VMware Infrastructure).

Trên thị trường, ESXi & vSphere được dùng rộng rãi bởi các doanh nghiệp vì các công nghệ của VMware giúp doanh nghiệp triển khai hệ thống máy chủ đám mây rất nhanh chóng – hiệu quả.

Đặc biệt so với các dựa án Open Source, thì VMware vSphere là sản phẩm thương mại nên nhận được hỗ trợ kỹ thuật rất tốt từ VMware.

Hyper-V

Hyper-V (tên cũ là Viridian) hay Windows Server Virtualization, là một Hypervisor Type-1 độc quyền dành cho hệ điều hành Windows Server.

Hiện nay Hyper-V cũng cung cấp giải pháp Paravirtualization (Ảo hóa song song) để hỗ trợ các HĐH nhân Linux.

Không như Xen, KVM, VMware ESXi, Hyper-V phổ biến nhờ ‘kí sinh’ Windows Server.

Ưu nhược điểm của Ảo hóa dựa trên phần cứng

Ảo hóa phần cứng với Hypervisor KVM, XEN, Hyper-V… mang đến sức mạnh thực sự cho các máy chủ ảo, với lượng tài nguyên vật lý riêng biệt – toàn quyền khai thác, mang đến hiệu năng sử dụng lớn.

Cho phép cài hệ điều hành riêng và toàn quyền sử dụng nhân hệ điều hành (OS Kernel) do đó tính bảo mật cực cao.

Tuy nhiên, Hardware-assisted virtualization cũng có nhược điểm:

  • Các máy ảo phải hoạt động đằng sau Hypervisor và phải cài đặt hệ điều hành riêng (Guest OS), nên triển khai và quản lý phức tạp và tốn kém.
  • Việc quản lý và cấp phát tài nguyên máy ảo cũng không nhanh như phương thức ảo hóa ở tầng OS (ảo hóa cấp độ hệ điều hành) vì các ứng dụng phải chạy trên Guest OS.

Dù sao, với sự độc lập – toàn quyền về tài nguyên vật lý và nhân hệ điều hành, nên ảo hóa phần cứng là giải pháp được hầu hết các dịch vụ Cloud Server cao cấp sử dụng, như Google (KVM), Amazon (XEN), Microsoft Aruze (Hyper-V), ….

Ảo hóa cấp độ hệ điều hành

Ảo hóa cấp độ hệ điều hành – OS-level virtualization là phương thức ảo hóa thực hiện trực tiếp trên hệ điều hành, mỗi máy ảo sẽ chạy trên một ‘trạng thái’ hệ điều hành riêng và chia sẻ với nhau toàn bộ tài nguyên vật lý của máy chủ.

Phương thức ảo hóa này không cấp phát ‘tài nguyên cứng’ cho mỗi máy chủ ảo như trong ảo hóa hỗ trợ phần cứng.

Tùy vào công nghệ áp dụng mà ‘trạng thái hệ điều hành’ này được gọi là Instance, Container, Docker…

Ở mỗi máy chủ ảo, cho phép cô lập về phần mềm và quản lý – giới hạn tài nguyên sử dụng. Tức là bạn có thể set cho một máy ảo lượng tài nguyên tối đa (CPU, RAM, I/O, Network..) mà nó có thể sử dụng, khi nó không sử dụng hết lượng này, tài nguyên vật lý có thể được chuyển sang cho các máy chủ ảo khác.

Các công nghệ Ảo hóa cấp độ hệ điều hành

OS-level virtualization – Ảo hóa cấp độ hệ điều hành, tạo ra nhiều máy chủ ảo chạy trên cùng một nhân hệ điều hành (cụ thể là Linux kernel). Mỗi máy chủ ảo được gọi là một container, chạy độc lập và chia sẻ với nhau toàn bộ tài nguyên của máy chủ vật lý.

Ảo hóa cấp độ hệ điều hành, hay linux container, dựa vào 2 tính năng rất đặc biệt của Linux kernel (nhân Linux):

  • cgroups (viết tắt của control groups): là tính năng cho phép giới hạn, chiếm, tách biệt việc sử dụng tài nguyên máy chủ (CPU, Memory, Disk I/O, Network…) của một tập hợp các qui trình xử lý (collection of processes)
  • namespaces: một tính năng cho phép phân vùng tài nguyên của nhân Linux, đảm bảo tính độc lập trong việc sử dụng các tài nguyên của các qui trình (container) khác nhau

Hai tính năng này giúp cho mỗi container (máy chủ ảo) độc lập với nhau, và có thể tạo, cấp phát tài nguyên, giới hạn tài nguyên tối đa cho mỗi container.

Các container có thể được cấp phát & giới hạn tài nguyên sử dụng nhưng không cố định như KVM hay Xen, … – Khi một container dùng ít tài nguyên máy chủ, thì tài nguyên này sẽ được chia sẻ cho các container khác.

Có nhiều công nghệ để triển khai mô hình máy chủ ảo theo phương thức ảo hóa hệ điều hành: OpenVZ, Virtuazzo, LXC (LXD, Solaris Containers, và Docker…

OpenVZ

Trên thị trường VPS giá rẻ, OpenVZ được dùng rất rộng rãi, nhờ khả năng triển khai nhanh, dễ dàng và không yêu cầu hạ tầng máy chủ quá mạnh.

VPS OpenVZ thường được gọi là VPS giá rẻ, vì công nghệ ảo hóa của OpenVZ cho phép tạo nhiều gói VPS hơn các công nghệ Ảo hóa dựa trên phần cứng như KVM, Xen.

Virtuozzo

Virtuozzo là công nghệ dựa trên OpenVZ, nhưng được công ty Virtuozzo tích hợp thêm các tính năng thương mại, đây là một công nghệ trả phí.

Vì là phiên bản thương mại nên trước đây Virtuozzo không được sử dụng nhiều bằng người anh em miễn phí của nó – OpenVZ.

Hiện tại phiên bản mới nhất là Virtuozzo 7, cung cấp các giải pháp triển khai máy chủ ảo trên công nghệ điện toán đám mây.

Virtuozzo Cloud Infrastructure hiện nay được dùng khá nhiều bởi doanh nghiệp nhỏ, các dịch vụ cung cấp Cloud Server bình dân. Vì chi phí triển khai Cloud IaaS với Virtuozzo khá rẻ.

LXC

LXC – viết tắt của Linux Container, là phương thức Ảo hóa cấp độ hệ điều hành, cho phép chạy nhiều máy ảo dưới dạng Container trên HĐH Linux.

LXC được phát triển sau OpenVZ, là dự án đóng góp bởi nhiều cá nhân và tập đoàn lớn như IBM, Google và cả Virtuozzo nữa.

Hiện nay, một phiên bản cải tiến của LXC là LXD – dự án mã nguồn mở được phát triển bởi Canonical – công ty đứng sau HĐH Ubuntu. LXD nâng cấp các tính năng quản lý container, nâng cấp bảo mật, HA (High Availability), …

Docker

Docker là một nền tảng điện toán đám mây dùng phương thức Ảo hóa cấp độ hệ điều hành để cung cấp phần mềm được đóng gói dưới dạng Linux container.

Lúc đầu, Docker sử dụng LXC như môi trường thực thi, trình điều khiển container mặc định. Từ phiên bản 1.1 trở đi, Docker thay thế LXC bằng trình điều khiển riêng (own component).

Khác với LXC, Virtuozzo, LXC, OpenVZ… Docker không phải là công nghệ dành cho triển khai Cloud Server (IaaS) mà nó là một sản phẩm thuộc PaaS – cung cấp platform cho phép triển khai các software trên đám mây dễ dàng hơn.

Ưu điểm vượt trội của Docker là tính đóng gói (package) và tính đồng nhất.  Điều này giúp cho nó trở thành công cụ phát triển chóng mặt trong Điện toán đám mây.

Với Docker, bạn có thể đóng gói mọi thứ và mang nó đi triển khai trên bất kỳ Cloud Server nào, giống như kiểu nhân bản vô tính hàng loạt vậy.

Hệ điều hành CoreOS – Container Linux

Ngoài các công nghệ trên (có thể triển khai trên nhiều OS khác nhau) thì để triển khai Container, bạn có thể dùng luôn hệ điều hành riêng là CoreOS Linux (Container Linux).

Container Linux (phân biệt với LXC ở trên nhé) là hệ điều hành chuyên cho công nghệ ảo hóa trên OS. Container Linux là giải pháp để triển khai các máy chủ ảo dưới dạng Container Cluster (cụm).

Container Linux là OS tinh giản – chuyên biệt dành cho Cloud Servers. OS này tung ra Rocket – hay CoreOS rkt, một công nghệ thay thế cho Docker.

Sự khác biệt giữa CoreOS rkt (Rocket) với Docker có thể thấy qua hình bên dưới:

Ưu nhược điểm của Ảo hóa cấp độ hệ điều hành

Công nghệ ảo hóa này thường được gọi là ảo hóa giá rẻ vì số lượng máy chủ ảo có thể tạo ra trên máy chủ vật lý nhiều hơn so với phương thức ảo hóa KVM, việc quản lý – cấp phát tài nguyên dễ dàng hơn.

Các máy chủ ảo cũng hoạt động mượt hơn vì chạy trực tiếp trên cùng một nhân Linux (Linux Kernel) thay vì phải cài thêm một hệ điều hành khách (Guest OS) thông qua Hypervisor như hình thức ảo hóa phần cứng.

Đặc biệt với nền tảng đang HOT Docker, việc triển khai các Platform trên máy chủ ảo trở nên vô cùng dễ dàng và linh hoạt.

Các dịch vụ IaaS của các tập đoàn lớn Amazon, Google, Microsoft… cũng sử dụng Linux container cho dịch vụ Cloud Server, nhưng với mức cấp phát tài nguyên cao hơn nhiều so với những nhà cung cấp Cloud Server bình dân trên thị trường.

Ảo hóa hệ điều hành cũng có nhược điểm, chủ yếu là do Máy chủ ảo được cấp phát ‘Tài nguyên mềm’ (Fake Resources) nên sức mạnh của nó phụ thuộc vào việc tạo ra bao nhiêu container trên một máy chủ vật lý:

  • Với ảo hóa cấp độ OS – Một Máy chủ ảo có 2GB – là chỉ lượng RAM cao nhất mà nó có thể sử dụng, chứ không phải lượng RAM dành riêng cho máy chủ ảo đó.
  • Nếu có càng nhiều máy chủ ảo sử dụng nhiều tài nguyên vật lý, thì các máy còn lại không thể huy động thêm tài nguyên khi cần.

Lời kết

Trên đây mình đã giới thiệu cho mọi người các khái niệm cơ bản về ảo hoá, 2 loại hình ảo hoá cũng như các công nghệ ảo hoá phổ biến của 2 loại trên. Cảm ơn mọi người đã theo dõi và hẹn gặp lại mọi người ở các bài viết tiếp theo.

Nguồn:

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.