[Tản mạn] Ảo hóa - Ai cũng biết nhưng cụ thể nó là gì ?
Bài viết chia sẻ cái nhìn chủ quan và hiểu biết của mình - 1 newbie công nghệ về cái công nghệ không mới mà cũng không cũ gọi là " Ảo Hóa" . Vì thế có thể có sai sót hoặc những chỗ hiểu chưa đúng. Vì vậy mong các tiền bối cao nhân nào có trót lỡ đọc qua thì giúp mình bổ sung chỉnh sửa để bài viết ...
Bài viết chia sẻ cái nhìn chủ quan và hiểu biết của mình - 1 newbie công nghệ về cái công nghệ không mới mà cũng không cũ gọi là " Ảo Hóa" . Vì thế có thể có sai sót hoặc những chỗ hiểu chưa đúng. Vì vậy mong các tiền bối cao nhân nào có trót lỡ đọc qua thì giúp mình bổ sung chỉnh sửa để bài viết hoàn thiện hơn ạ
Trước khi bắt đầu tìm hiểu xem "Ảo hóa" là gì ( mà mình nghĩ đại đa số ai tham gia cái trang viblo này cũng biết nó là gì =)) ) thì mình xin phép được kể một câu chuyện như sau :
Ở một vùng ngoại ô nọ, có một ngôi nhà to to với một mảnh vườn rộng, chủ nhân của những thứ kia là một gia đình điển hình trên các phim truyền hình đầu thập niên 60 với một cặp vợ chồng chung sống hạnh phúc trong một ngôi nhà khá là rộng lớn nhưng chỉ có một phòng ngủ, một WC , một phòng khách và một nhà bếp. Cuộc sống cứ thế vẫn êm đềm trôi như vốn dĩ nó là vậy. Năm tháng dần qua đi, những đứa trẻ lần lượt ra đời, một đứa , hai đứa rồi ba đứa cả trai và gái đủ cả. Cặp vợ chồng nọ cũng không gặp khó khăn gì trong việc chăm sóc 3 đứa trẻ trong ngôi nhà khá rộng rãi của họ. Vẫn có chỗ cho lũ trẻ chơi đùa. Cậu con trai cả vẫn có thể cắm trại xung quanh cái ghế sofa ở phòng khách, cậu con trai thứ vẫn có thể chơi trò ném đĩa với chú chó cưng ngoài sân và cô con gái út bé nhỏ cũng có thể tha hồ tổ chức một buổi picnic tí hon bên cạnh lều trại của anh trai mình.
Thời gian thấm thoát thoi đưa, lũ trẻ ngày nào í ới chạy theo cha mẹ nay đã là những cô cậu thiếu niên sắp bước vào ngưỡng cửa trưởng thành. Cậu con trai cả không còn dựng những túp lều be bé con con từ những cái chăn thân thuộc của mình nữa mà thay vào đó là những tấm áp-phích của những ca sỹ, nhóm nhạc rock thần tượng. Cậu con trai thứ hai thì có thú vui sưu tầm chữ ký cũng như các vật dụng của những cầu thủ trong đội bóng yêu thích, cậu mãi mê chơi đùa với trái bóng thay vì với chú cún cưng ngày nào và những vật dụng kia với cậu như cả một gia tài. Cô con gái út thì đắm chìm trong những trang sách, những giá vẽ , những cậu truyện thơ mộng hồn nhiên và đầy thú vị với cô. Và lẽ dĩ nhiên, cô con gái út không thể nào vừa đọc sách và vừa nghe nhạc rock với người anh trai của mình. Và cậu con trai thứ 2 cũng không muốn chữ ký thần tượng của mình trên trái bóng bị phai đi. Xung đột bắt đầu xảy ra giữa 3 thành viên nhí trong gia đình. Những trận cãi vả con con, những tiếng khóc thút thít mách mẹ khi anh trai thứ 2 lỡ chân sút bóng làm đổ giá vẽ của cô út.
Cuộc sống bình yên ở ngôi nhà nọ bỗng chốc trở nên náo động, cặp vợ chồng kia phải liên tục giải quyết những xung đột từ những đứa con của họ. Áp lực, stress là những gì cặp vợ chồng đang mắc phải. Họ bế tắt , không biết làm cách nào giải quyết những việc này để không khí gia đình có thể đằm thắm trở lại. Và họ đã quyết định đi xin lời khuyên của một vị cao niên trong làng. Với sự từng trải trong cuộc sống, vị cao niên nọ khuyên cặp vợ chồng kia rằng họ nên chuẩn bị những không gian riêng cho các con của mình. Để chúng có thể tự do làm những gì mình thích mà không ảnh hưởng đến các anh/em của chúng. Tuy đã hỏi ra được cách giải quyết vấn đề, nhưng nét mặt của cặp vợ chồng kia vẫn như đang vương vấn một nổi buồn phiền nào đó. Bằng ánh mắt dày dặn gió sương của mình, vị cao niên kia bảo rằng : 2 ông bà không cần thiết phải mua thêm những ngôi nhà khác cho các đứa trẻ, mà thay vào đó là hãy cải tạo căn nhà của mình lại để lũ trẻ có không gian riêng của chúng. Như được mở cờ trong bụng, cặp vợ chồng kia rối rít cảm ơn và chào từ biệt vị cao niên ra về. Về đến nhà, họ bắt tay vào công việc, biến ngôi nhà to lớn rộng rãi nhưng chỉ có một phòng ngủ, một wc , một nhà bếp và một phòng khách thành ngôi nhà có 4 phòng ngủ, 4 wc, phòng khách và nhà bếp vẫn là những không gian sinh hoạt chung của cả gia đình. Mỗi căn phòng của bọn trẻ đều được trang trí theo sở thích của chúng. Và thế là từ đó ngôi nhà kia không còn những cuộc cãi vả, không còn những tiếng khóc thét gọi mẹ ơi mỗi khi bị anh trai bắt nạt của cô gái út nữa. Cuộc sống cứ thanh bình cứ thế tiếp tục trôi, và gia đình nọ sống hạnh phúc bên nhau đến suốt đời - The End. (lol)
Ok, lan man thế đủ rồi, có thể khiếu kể truyện của mình hơi tệ , nhưng mình chắc chắn một điều là ai đọc xong cũng sẽ thắc mắc rằng : Thế câu chuyện kia thì liên quan quái gì đến công nghệ Ảo Hóa ? Thanh niên này chắc chắn là viết qua loa report để khỏi bị trừ lương rồi !!!! Thế nhưng các bạn hãy bình tĩnh, bây giờ các bạn hãy thử hình dung thế này nhé :
- Ngôi nhà to rộng kia là một cái máy tính với cấu hình kha khá.
- Hai vợ chồng kia là chủ nhân của cái máy tính.
- Các đứa trẻ là những phần mềm, dịch vụ chạy trên chiếc máy tính đó :v
Ban đầu, các bạn có thể chạy 2,3 dịch vụ trên chiếc máy tính cấu hình khủng kia, tuy việc config có thể khác tý với việc chạy chỉ 1 dịch vụ và tài nguyên yêu cầu cũng nhiều hơn, nhưng cơ bản là máy tính cấu hình khủng thì vẫn ok :v. Tuy vậy theo thời gian, các dịch vụ bạn setup cần phải update, khiến cho repository để chạy các dịch vụ đó ngày càng cồng kềnh và đến một ngày đẹp trời sáng trăng nọ thì ......... chúng xảy ra xung đột với nhau (conflict). Là một người quản trị thì tất nhiên bạn phải đi giải quyết những conflict đó để tiếp tục duy trì sự ổn định cho các dịch vụ mà mình cung cấp. Và rồi mọi việc cứ thế diễn ra như 1 màn tung hứng bóng chuyền của 2 thanh niên "conflict vs giải quyết conflict" còn người quản trị thì phải vác giò lên cổ mà giải quyết (haiz). Đến khi chán chê với việc ngày nào cũng phải fix bug do nhiều dịch vụ chạy cùng bị xung đột với nhau thì cũng là lúc ngộ ra chân lý là để tối ưu việc vận hành một dịch vụ và tránh những rủi ro chủ quan như trên thì ........ nên xây dựng các dịch vụ ấy trên những môi trường riêng biệt nhau !!!
Sau khi ngộ ra được chân lý trên, lẽ dĩ nhiên là chúng ta sẽ có câu hỏi tiếp theo là : Làm thế nào để tạo những môi trường riêng biệt chỉ để chạy một dịch vụ ? Sẽ có 2 cách trả lời cho câu hỏi này, giống như câu truyện ở trên như sau : 1 - Bạn giàu có, dư giả, nói chung là không có gì khác ngoài điều kiện thì có thể mua cho mỗi đứa trẻ con bạn 1 căn nhà hay nói cách khác là mỗi dịch vụ chạy trên 1 máy tính khác nhau và bao nhiêu dịch vụ thì mua bấy nhiêu máy tính. OK giàu thì có quyền :v 2 - Bạn không thừa tiền, không thừa thời gian đi tới đi lui các căn nhà khác nhau để chăm sóc cho các đứa con của mình, vậy thì hãy chia 1 căn nhà rộng ra thành nhiều căn phòng nhỏ , vừa tiện chăm sóc các con, vừa không quá tốn chi phí. Vừa tận dụng được tối đa diện tích sử dụng căn nhà của bạn. Và....... nhà thì xây thêm phòng, còn máy tính thì làm như nào ? Câu trả lời là " Ảo Hóa " !!!
Có tý liên quan chưa nhỉ (?)
Ảo hóa có tên tiếng Anh là "Virtualization" - Là một thuật ngữ trong ngành công nghiệp máy tính ra đời từ những năm 60. Ban đầu thuật ngữ này được dùng để chỉ các phương pháp để thực hiện chạy nhiều dịch vụ trên cùng một máy tính lớn . Sau này nó được dùng để chỉ các phương pháp tạo ra một phiên bản ảo của 1 cái gì đó như máy tính ảo ( virtual machine ) , ổ đĩa ảo ( virtual disk) , mạng ảo ( virutal network). Nói chung là khi tạo ra cái gì không phải thật mà dùng như thật thì kêu là Ảo hóa, vậy đi :v
Vậy, cụ thể thì làm sao để Ảo hóa máy tính ?? Để dễ hình dung, các bạn hãy nghĩ đến 1 tòa nhà chung cư và ví nó như 1 máy tính có cấu hình khủng (thường gọi là server hoặc cụ thể hơn trong kỹ thuật ảo hóa người ta hay gọi là Host) , như thế thì hiển nhiên từng căn hộ trong tòa chung cư kia sẽ là 1 máy ảo :v . Và các căn hộ trong 1 tòa chung cư được tạo ra với các quy ước về số lượng các căn hộ và diện tích, số phòng, cửa sổ, vị trí v.v... của từng căn hộ phụ thuộc vào quyết định của các anh kiến trúc sư trưởng . Tương tự với cái máy tính , nó có thể tạo được bao nhiêu máy ảo, mỗi máy ảo sử dụng bao nhiêu tài nguyên về CPU, ddram, và được lưu trữ ở đâu điều do người quản trị quyết định. Và tất nhiên là phải thông qua 1 công cụ gọi là Hypervisor.
Hypervisor hay còn có tên khác là Virtual machine monitor (VMM) là từ dùng để chỉ các phần mềm , firmware hoặc thậm chí là một phần cứng chuyên dụng dùng để tạo ra các máy ảo ( virtual machine) . Nói 1 cách đơn giản tức là muốn ảo hóa máy tính thì ...... cài hypervisor vào nó :v
Hypervisor hoạt động như thế nào ?
Như đã nêu ở trên, muốn ảo hóa máy tính và biến nó thành 1 Host, thì việc đầu tiên cần làm là cài đặt hypervisor cho nó. Nhưng ....... với hiểu biết của một newbie như mình thì .... làm sao cài ? Cài nó như cài đặt 1 phần mềm thông thường hay làm sao ? Và câu trả lời là : Đúng, bạn có thể cài đặt nó như một phần mềm thông thường, ngoài ra còn có 1 cách nữa, là cài đặt nó như 1 OS ! Quái nhỉ, nào giờ chỉ nghe OS như window, linux, unix ... chứ làm gì có cái gì như là hypervisor rồi lại còn cài " như 1 OS" là thế quái nào ?!? Bình tĩnh 1 chút và khoan hốt hoảng, phải hít thật sâu vào và tập làm quen đi vì thế giới này nói chung và ngành IT nói riêng thì còn lắm điều vi diệu lắm =))
Để giải đáp những băn khoăn trên, đầu tiên chúng ta phải mổ xẻ 2 cái cách cài đặt hypervisor như đã nêu ở trên. Dựa vào 2 cách cài đặt hypervisor, chúng ta sẽ phân chúng ra làm 2 loại. Hypervisor Type 1 ( native hay Bare-metal ) và Hypervisor Type 2.
1 - Hypervisor Type 1 - Native - Bare metal - Hypervisor based :
Đây là loại hypervisor chạy trực tiếp trên phần cứng của máy chủ, không thông qua một OS nào cả, vì vậy còn có tên gọi là Bare-metal .Vị trí hoạt động của thanh niên này có thể được hình dung bằng mô hình sau :
Những hypervisor đầu tiên thuộc loại này được phát triển bởi IBM (tất nhiên) vào những thập niên 60 là một thứ gì đó cổ xưa của IBM có tên gọi là SIMMON và hệ điều hành CP/CMS - tiền thân của z/VM (dành cho bạn nào thích nghiên cứu lịch sử chứ mình cũng chả biết nó là cái vẹo gì :v). Những hypervisor type 1 hiện đại và phổ biến hơn là : Xen , Oracle VM Server for SPARC, Oracle VM Server for X86, Microsoft Hyper-V và VMware ESX/ESXi. Đúng với tên gọi bare-metal của nó những hypervisor này được cài đặt trực tiếp lên máy chủ mà không thông qua bất kỳ 1 OS nào và thường sẽ được đính kèm theo một phần mềm quản trị để người dùng có thể tiện thao tác ( thằng nào không cho công cụ quản trị thì tất nhiên là phải mua hoặc .... tự build nhé :v ). Ví dụ như với VMware ESX thì có phần mềm kèm theo là VMware vSphere Client.
Với công cụ quản trị được cung cấp. Người dùng có thể tha hồ tạo các máy ảo và sử dụng chúng "như một máy thật" . Nghe vi diệu kinh nhỡ (yaoming)
2 - Hypervisor Type 2 - Host Based :
Là các loại Hypervisor được cài đặt và hoạt động như một phần mềm thông thường.
Loại này nghe có vẻ dễ nuốt. "Như một phần mềm thông thường" sau khi nghe qua thì chắc hẳn sẽ có 1 số bạn nghĩ như này : "tức là sau khi cài đặt OS, chúng ta sẽ cài hypervisor lên và sử dụng đúng không nhỉ ? " . Và thật không may cho những bạn có suy nghĩ như thế là ..... chính xác !
Kiến trúc này sử dụng một lớp Hypervisor chạy trên nền tảng hệ điều hành, sử dụng các dịch vụ được hệ điều hành cung cấp để phân chia tài nguyên tới các máy ảo. Hypervisor loại này sẽ là một lớp phần mềm riêng biệt với hệ điều hành máy chủ, do đó các hệ điều hành máy ảo sẽ nằm trên lớp thứ 3 so với phần cứng máy chủ.
Mô hình hoạt động của đồng chí này được khái quát như sau :
Các đại diện trong phân khúc type 2 này đa số các bạn đã quen mặt như VMware Workstation, VMware Player, VirtualBox, Parallels Desktop for Mac v.v.... Tuy nhiên, trong các loại VMM thuộc type 2 này, có 1 vài loại hoạt động cũng na ná type 1 :v. Cụ thể là các loại sau : Linux's Kernel-based Virtual Machine (KVM) và FreeBSD's bhyve . 2 đồng chí này thực chất là những kernel module và chúng có khả năng chuyển hệ điều hành của máy chủ thành cái loại gọi là hypervisor type 1 và hoạt động y chang type 1 :v. Nhưng vì cả KVM và bhyve được build dựa trên các bản Distro khác nhau của Linux ( cụ thể bhyve được build trên FreeBSD, vốn dĩ là 1 Linux Distro còn KVM thì cài trên thằng Linux nào cũng được :v) nên chúng vẫn được xem là hypervisor type 2.
Ưu nhược điểm của 2 loại này theo IBM nói thì Type 1 sẽ có hiệu năng, tính sẵn sàng và bảo mật hơn Type 2. Còn dưới con mắt nhà nghèo của tui thấy thì Type 1 đa số tốn tiền còn Type 2 thì vẫn có cái free :v
Về cơ bản, sẽ có 2 loại mô hình ảo hóa được chia theo 2 loại hypervisor như trên
Ok. Sau khi nghe qua 1 mớ bồng bông định nghĩa. Các bạn đã biết được Ảo hóa cụ thể là gì chưa :v Nếu chưa thì mình sẽ tổng hợp lại như sau :
Ảo hóa là một công nghệ được ra đời nhằm khai thác triệt để khả năng làm việc của các phần cứng trong một hệ thống máy chủ. Nó hoạt động như một tầng trung gian giữa hệ thống phần cứng máy tính và phần mềm chạy trên nó. Ý tưởng của công nghệ ảo hóa máy chủ là từ một máy vật lý đơn lẻ có thể tạo thành nhiều máy ảo độc lập. Ảo hóa cho phép tạo nhiều máy ảo trên một máy chủ vật lý, mỗi một máy ảo cũng được cấp phát tài nguyên phần cứng như máy thật gồm có Ram, CPU, Card mạng, ổ cứng, các tài nguyên khác và hệ điều hành riêng. Khi chạy ứng dụng, người sử dụng không nhận biết được ứng dụng đó chạy trên lớp phần cứng ảo.
Các thành phần cấu thành của một hệ thống ảo hóa như sau :
Tuy nhiên, cần lưu ý là một vài hypervisor chỉ hỗ trợ một số ít OS guest - hệ điều hành khách ( tức là OS cài trên máy ảo phụ thuộc vào hypervisor có hỗ trợ hay không !)
Nhìn vào sơ đồ cấu thành như trên, chúng ta sẽ có 3 bước cơ bản để xây dựng một hệ thống ảo hóa .
Bước 1 : Chọn phần cứng
Cái này tùy thuộc vào túi tiền của bạn. Bạn có nhiều tiền thì xây dựng 1 con máy chủ to cấu hình siêu khủng khiếp. Tiền tuy không giải quyết được tất cả nhưng hầu hết mọi vấn đề đều có thể giải quyết bằng tiền :v
Bước 2 : Lựa chọn hypervisor
Bước này khá quan trọng. Hypervisor là trái tim của một hệ thống ảo hóa. Cũng giống như bước 1, nếu bạn là 1 người chưa bao giờ rút tiền thanh toán mà phải nhìn vào ví thì .... OK , cứ VMware, Hyper - V hay Xen mà chơi, toàn hàng "hịn" cả . Đảm bảo đầy đủ tính năng và sẽ được su-bóp đến tận răng :v. Tuy nhiên, ở gốc độ của một nhà quản lý "chiên nghiệp" thì đôi lúc không phải cứ vung tiền mua hàng xịn về xài là giải quyết được hết ( dù rằng sure 99% là giải quyết được :v). Do đó chúng ta buộc phải tiến hành lựa chọn (haiz) .
Đứng trên ý kiến chủ quan của cửa mình thì mình sẽ ưu tiên chọn hypervisor Type 1 .Tất nhiên mình sẽ không có tiền và chỉ lựa hàng free và vì free nên chả có nhiều sự lựa chọn. Chỉ có Xen là type 1 free và KVM là na ná type 1 :v. Và vì mình là gà công nghệ nên sẽ ưu tiên các loại dễ chơi dễ trúng là các phần mềm hypervisor free được tích hợp sẵn các công cụ bao gồm cả hypervisor và User controller ( Platfrom in a Flash). Với các công cụ này, bạn chỉ việc download về, flash lên máy chủ và ..... xài . Ví dụ như Proxmox VE , UCS ...
Mặt khác, các bạn có thể tự thử thách chính mình bằng cách tự build một hệ thống ảo hóa bằng combo hypervisor free + User controller . Cái này khó chơi hơn tý, nhiều sự lựa chọn hơn và tất nhiên đòi hỏi hiểu biết sâu hơn về từng thành phần cấu thành một hệ thống ảo hóa. Ví dụ combo KVM + OpenNebula , Xen + OpenNebula, Openstack v...vvv....
Ngoài ra thì có rất nhiều tiêu chí để có thể lựa chon một hypervisor phù hợp với mục đích của mình. Mình có thể liệt kê ra các tiêu chí như sau :
Lựa chọn dựa trên Hypervisor type :
Như trên đã nói, chỉ có 2 loại. Ưa cái nào thì chọn cái nấy.
Lựa chọn theo các mức độ ảo hóa :
1 - Operating System Virtualization : Ảo hóa hệ điều hành
Đây là cái chúng ta hay thấy nhất. Ta có thể tạo ra nhiều máy ảo trên một chiếc máy tính duy nhất và đặc biệt là có thể chạy song song cùng lúc 2 hệ điều hành. Có thể là Mac chạy song song Windows, Win XP và Win 7, Win 7 và Win 8, Windows và Linux… Việc chuyển đổi qua lại giữa 2 hệ điều hành cũng đơn giản giống như chuyển qua lại giữa 2 cửa sổ trên máy tính, bạn cũng có thể chia sẻ dữ liệu giữa máy thực và máy ảo với nhau hoàn toàn dễ dàng. Để tạo máy ảo, ta cần có một phần mềm chuyên dụng. Có rất nhiều phần mềm giúp ta tạo máy ảo, ví dụ như trên Win thì có VMware, VirtualBox, Virtual PC… Trên Mac thì cũng có VMware Fusion và Parallels. Cách cài đặt cũng rất đơn giản, ví dụ như VMware, bạn chỉ việc cài VMware vào máy tính, tải file ảnh của hệ điều hành thứ hai về, sau đó làm theo hướng dẫn trong đó là OK. Do nó cũng là một hệ điều hành (gần như hoàn chỉnh) nên máy ảo cũng cần có CPU, RAM, ổ cứng cũng như các linh kiện phần cứng có liên quan. Ở đây máy ảo sẽ dùng chung các phần cứng đó với máy tính của bạn. Nghĩa là giờ đây thay vì chỉ chạy một hệ điều hành thì máy tính của bạn phải gồng mình lên để chạy đến 2 cái hệ điều hành cùng lúc, lúc đó máy sẽ chạy ì ạch hơn. Vì vậy nếu cấu hình máy của bạn quá yếu thì không nên dùng máy ảo quá nhiều. Thường khi tạo thêm máy ảo thì nó sẽ cắt ra khoảng vài GB RAM dùng cho máy ảo đó, CPU dùng chung và ổ cứng cũng phải chia ra thêm một khoảng kha khá để chứa hệ điều hành thứ 2 này.
2 - Full Virtualization : Ảo hóa toàn phần : Toàn bộ phần cứng của máy tính sẽ được ảo hóa hết để một hệ điều hành ảo khác có thể chạy trên đó một cách đầy đủ và bình thường, không bị thay đổi hay chỉnh sửa. Khi được ảo hóa toàn phần thì máy ảo có thể truy cập và sử dụng hết mọi tính năng của từng phần cứng một, bao gồm cả BIOS, driver, các lệnh nhập/xuất dữ liệu, truy cập bộ nhớ... Ứng dụng của ảo hóa toàn phần bao gồm: chia sẻ một máy tính cho nhiều người sử dụng cùng lúc, cách ly các tài khoản người dùng với nhau cũng như để tăng cường tính bảo mật, độ ổn định và hiệu suất làm việc của một hệ thống máy tính.
3 - Partial virtualization : Ảo hóa cục bộ ( một phần) Khác với ảo hóa toàn phần, ảo hóa một phần chỉ tiến hành ảo hóa một số phần cứng nhất định của máy tính nên nó không đủ tài nguyên để vận hành một hệ điều hành ảo hoàn chỉnh, thay vào đó nó chỉ cho phép chúng ta chạy một số phần mềm mà thôi. Ưu điểm của áo hóa một phần là nó dễ triển khai hơn ảo hóa toàn phần, nó tỏ ra cực kỳ hữu ích khi người ta chỉ muốn dùng máy ảo để chạy một phần mềm quan trọng nào đó, họ sẽ dùng ảo hóa một phần để tạo ra đủ tài nguyên cần thiết để chạy nó mà không cần phải ảo hóa cả một hệ thống phức tạp. Nếu dùng ảo hóa toàn phần chỉ để chạy một phần mềm duy nhất thì coi như là ta đã lãng phí tài nguyên máy tính một cách vô ích.
4 - Paravirtualization : Ảo hóa song song : Là loại ảo hóa, trong đó hệ điều hành khách (một hệ điều hành ảo) nhận thức được rằng đó là khách và vì vậy các trình điều khiển thay vì phát hành các lệnh đến phần cứng, nó đơn giản chỉ phát hành lệnh trực tiếp đến hệ điều hành máy chủ lưu trữ. Khái niệm này khá rắc rối nên mình cũng không muốn giải thích quá sâu, nói một cách tóm gọn thì ảo hóa song song khác với loại ảo hóa toàn phần kể trên ở chỗ nó không mô phỏng phần cứng để chạy hệ điều hành ảo mà thay vào đó nó sẽ tạo một một lớp giao diện phần mềm (hay một tập lệnh API) để các hệ điều hành ảo và hypervisor có thể giao tiếp với nhau, và xem API đó như là ngôn ngữ chung giữa 2 phía, mục đích là để giảm thiểu thời gian cần thiết mỗi khi thi hành các câu lệnh trên hệ thống. Bạn có thể tìm hiểu kỹ hơn về ảo hóa song song tại đây.
Lựa chọn dựa trên công nghệ ảo hóa :
Hiện tại có rất nhiều công nghệ ảo hóa khác nhau.
1 - Hyper - V của Microsoft :
Là công nghệ ảo hóa của Microsoft, được tích hợp vào các bản window server 2008 trở về sau. Có các phiên bản chính kèm theo hệ điều hành như Standard (một máy ảo), Enterprise (4 máy ảo) và DataCenter (không giới hạn số lượng máy ảo).
Hyper-V gồm 3 thành phần chính: hypervisor, ngăn ảo hóa và mô hình I/O (nhập/xuất) ảo hóa mới. Hypervisor có vai trò tạo các "partition" (phần vùng) mà thực thể ảo sẽ chạy trong đó. Một partition là một đơn vị cách ly về mặt luận lý và có thể chứa một hệ điều hành làm việc trong đó. Luôn có ít nhất 1 partition gốc chứa Windows Server 2008 và ngăn ảo hóa, có quyền truy cập trực tiếp các thiết bị phần cứng. Partition gốc tiếp theo có thể sinh các partition con (được gọi là máy ảo) để chạy các hệ điều hành máy khách. Một partition con cũng có thể sinh tiếp các partition con của mình. Máy ảo không có quyền truy cập đến bộ xử lý vật lý, mà chỉ “nhìn thấy” bộ xử lý được hypervisor cấp cho. Máy ảo cũng chỉ sử dụng được thiết bị ảo, mọi yêu cầu đến thiết bị ảo sẽ được chuyển qua VMBus đến thiết bị ở partition cha. Thông tin hồi đáp cũng được chuyển qua VMBus. Nếu thiết bị ở partition cha cũng là thiết bị ảo, nó sẽ được chuyển tiếp cho đến khi gặp thiết bị thực ở partition gốc. Toàn bộ tiến trình trong suốt đối với HĐH khách. Hyper-V được tích hợp sẵn trong HĐH Windows Server, và hypervisor móc trực tiếp đến các luồng xử lý của BXL, nhờ vậy việc vận hành máy ảo hiệu quả hơn so với kiến trúc ảo hoá khác.
2 - XenServer của Citrix : Xen là một hypervisor cung cấp dịch vụ cho phép nhiều hệ điều hành máy tính thực thi trên cùng phần cứng máy tính một cách đồng thời. Viện nghiên cứu máy tính trường Đại học Cambridge đã phát triển phiên bản đầu tiên của Xen. Từ năm 2010, cộng đồng Xen phát triển và duy trì Xen là phần mềm miễn phí, bản quyền thuộc GNU General Public License (GPLv2). Xen khả dụng cho các kiến trúc máy tính IA-32, x86-64, Itanium và ARM. Trong hệ thống Xen, Xen hypervisor là lớp phần mềm thấp nhất và ưu tiên nhất. Lớp này hỗ trợ một hoặc hơn các hệ điều hành guest, ghi lịch trình trên các CPU vật lý. Hệ điều hành guest đầu tiên, được gọi trong thuật ngữ Xen là domain0(dom0) thực thi một cách tự động khi hypervisor boot và nhận những quyền quản lý đặc biệt và truy cập trực tiếp vào mọi phần cứng vật lý, mặc định. Quản trị viên hệ thống có thể đăng nhập vào dom0 trong yêu cầu quản lý bất kỳ hệ điều hành guest bổ sung nào, được gọi là user domain (domU) trong thuật ngữ Xen. Domain dom0 là một phiên bản được thay đổi của Linux, NetBSD hay Solaris đặc trưng. User domain có thể hoặc là một bản copy không thay đổi của mã nguồn mở hoặc là hệ điều hành bản quyền, như là Microsoft Windows, nếu bộ xử lý của host hỗ trợ ảo hóa x86, ví dụ như Intel VT-x và AMD-V, hay được thay đổi, hệ điều hành ảo hóa song song với trình điều khiển đặc biệt hỗ trợ các tính năng được tăng cường của Xen.
3 - KVM (Kernel-based Virtual Machine) KVM là công nghệ ảo hóa mới cho phép ảo hóa thực sự trên nền tảng phần cứng. Do đó máy chủ KVM giống như XEN được cung cấp riêng tài nguyên để sử dụng, tránh việc tranh chấp tài nguyên với máy chủ khác trên cùng node. Máy chủ gốc được cài đặt Linux, nhưng KVM hỗ trợ tạo máy chủ ảo có thể chạy cả Linux, Windows. Nó cũng hỗ trợ cả x86 và x86-64 system.
Ngoài ra còn nhiều công nghệ hỗ trợ xây dựng hệ thống ảo hóa như OVM của Oracle , Linux Container (LXC) nhưng mà mình chưa từng rờ tới mấy thứ đó nên không dám viết bừa. Ai biết gì thì hỗ trợ mình giúp nhá.
Bước 3 : Cài đặt
Sau khi định hướng được mình sẽ ảo hóa cái máy tính của mình như thế nào thì chúng ta bước vào phần cài đặt thôi. Như mình nói ở trên thì mình sẽ chọn Proxmox VE - dễ chơi dễ trúng. Cách cài đặt như sau : Download Proxmox VE về , chuẩn bị một USB Flash và tiến hành cài đặt.
Ảo hóa không phải một công nghệ mới, nhưng mà nó cũng chưa bao giờ lỗi thời. Ảo hóa không chỉ đơn giản là " tạo nhiều máy ảo" mà bao gồm cả một hệ thống, từ việc lưu trữ cho đến việc chia sẻ các tài nguyên. Để có thể quản lý tốt một hệ thống Ảo hóa đòi hỏi rất nhiều hiểu biết về các thành phần cấu thành của nó như Network, storage v..v.... Hy vọng qua bài viết này sẽ cung cấp cho các bạn một cái nhìn sơ bộ về thế giới ảo hóa. Chúc các bạn nghĩ lễ vui vẻ :v.