




Preview text:
  lOMoAR cPSD| 58933639 1.7 Virtualization 
Virtualization is a technology that allows us to abstract the hardware of a single computer 
into several different execution environments, thereby creating the illusion that each 
separate environment is running on its own private computer. These environments can be 
viewed as different individual operating systems (for example, Windows and UNIX) that 
may be running at the same time and may interact with each other. A user of a virtual 
machine can switch among the various operating systems in the same way a user can switch 
among the various processes running concurrently in a single operating system. 
Virtualization allows operating systems to run as applications within other operating 
systems. At first blush, there seems to be little reason for such functionality. But the 
virtualization industry is vast and growing, which is a testament to its utility and  importance. 
Broadly speaking, virtualization software is one member of a class that also includes 
emulation. Emulation, which involves simulating computer hardware in software, is 
typically used when the source CPU type is different from the target CPU type. For 
example, when Apple switched from the IBM Power CPU to the Intel x86 CPU for its 
desktop and laptop computers, it included an emulation facility called “Rosetta,” which 
allowed applications compiled for the IBM CPU to run on the Intel CPU. That same concept 
can be extended to allow an entire operating system written for one platform to run on 
another. Emulation comes at a heavy price, however. Every machine-level instruction that 
runs natively on the source system must be translated to the equivalent function on the 
target system, frequently resulting in several target instructions. If the source and target 
CPUs have similar performance levels, the emulated code may run much more slowly than  the native code. 
With virtualization, in contrast, an operating system that is natively compiled for a 
particular CPU architecture runs within another operating system also native to that CPU. 
Virtualization first came about on IBM mainframes as a method for multiple users to run 
tasks concurrently. Running multiple virtual machines allowed (and still allows) many 
users to run tasks on a system designed for a single user. Later, in response to problems 
with running multiple Microsoft Windows applications on the Intel x86 CPU, VMware 
created a new virtualization technology in the form of an application that ran on Windows. 
That application ran one or more guest copies of Windows or other native x86 operating 
systems, each running its own applications. (See Figure 1.16.)      lOMoAR cPSD| 58933639  
Windows was the host operating system, and the VMware application was the virtual 
machine manager (VMM). The VMM runs the guest operating systems, manages their 
resource use, and protects each guest from the others. 
Even though modern operating systems are fully capable of running multiple applications 
reliably, the use of virtualization continues to grow. On laptops and desktops, a VMM 
allows the user to install multiple operating systems for exploration or to run applications 
written for operating systems other than the native host. For example, an Apple laptop 
running macOS on the x86 CPU can run a Windows 10 guest to allow execution of 
Windows applications. Companies writing software for multiple operating systems can use 
virtualization to run all of those operating systems on a single physical server for 
development, testing, and debugging. Within data centers, virtualization has become a 
common method of executing and managing computing environments. VMMs like 
VMware ESXand Citrix XenServer no longer run on host operating systems but rather are 
the host operating systems, providing services and resource management to virtual machine  processes.      lOMoAR cPSD| 58933639
 With this text, we provide a Linux virtual machine that allows you to run Linux—as well 
as the development tools we provide—on your personal system regardless of your host 
operating system. Full details of the features and implementation of virtualization can be  found in Chapter 18.  1.7 Ảo hóa 
Ảo hóa là một công nghệ cho phép chúng ta trừu tượng hóa phần cứng của một máy tính 
đơn lẻ (CPU, bộ nhớ, ổ đĩa, card mạng, v.v...) thành nhiều môi trường thực thi khác nhau, 
qua đó tạo ra ảo tưởng rằng mỗi môi trường riêng biệt đang chạy trên một máy tính riêng  biệt. 
Những môi trường này có thể được xem như những hệ điều hành riêng lẻ (ví dụ: Windows 
và UNIX) có thể chạy đồng thời và tương tác với nhau. Một người dùng máy ảo có thể 
chuyển đổi giữa các hệ điều hành khác nhau giống như cách một người dùng chuyển đổi 
giữa các tiến trình đang chạy đồng thời trong một hệ điều hành duy nhất. 
Ảo hóa cho phép hệ điều hành chạy như một ứng dụng bên trong một hệ điều hành khác. 
Thoạt nhìn, điều này có vẻ không cần thiết. Tuy nhiên, ngành công nghiệp ảo hóa rất lớn 
và không ngừng phát triển, điều này chứng tỏ sự hữu ích và tầm quan trọng của nó. 
Nói một cách rộng rãi, phần mềm ảo hóa là một thành viên trong nhóm các công nghệ bao 
gồm cả mô phỏng (emulation). Mô phỏng là việc mô phỏng phần cứng máy tính bằng      lOMoAR cPSD| 58933639
phần mềm, thường được sử dụng khi loại CPU nguồn khác với loại CPU đích. Ví dụ, khi 
Apple chuyển từ CPU IBM Power sang CPU Intel x86 cho các máy tính để bàn và xách 
tay, họ đã tích hợp một công cụ mô phỏng có tên là “Rosetta”, cho phép các ứng dụng được 
biên dịch cho CPU IBM chạy trên CPU Intel. Khái niệm đó có thể được mở rộng để cho 
phép cả một hệ điều hành được viết cho một nền tảng chạy trên nền tảng khác. 
Tuy nhiên, mô phỏng phải trả một cái giá đắt. Mỗi lệnh ở cấp độ máy mà chạy nguyên bản 
trên hệ thống nguồn phải được dịch sang chức năng tương đương trên hệ thống đích, thường 
dẫn đến việc sử dụng nhiều lệnh hơn. Nếu CPU nguồn và đích có hiệu năng tương đương, 
mã được mô phỏng có thể chạy chậm hơn nhiều so với mã chạy trực tiếp (native). 
Ngược lại, với ảo hóa, một hệ điều hành được biên dịch nguyên bản cho một kiến trúc CPU 
cụ thể có thể chạy trong một hệ điều hành khác cũng sử dụng CPU đó. Ảo hóa xuất hiện 
lần đầu tiên trên các hệ thống mainframe của IBM như một phương pháp để cho nhiều 
người dùng chạy các tác vụ đồng thời. Việc chạy nhiều máy ảo cho phép (và vẫn cho phép) 
nhiều người dùng thực hiện các tác vụ trên một hệ thống vốn được thiết kế cho một người  dùng duy nhất. 
Sau này, để giải quyết các vấn đề khi chạy nhiều ứng dụng Microsoft Windows trên CPU 
Intel x86, VMware đã tạo ra một công nghệ ảo hóa mới dưới dạng một ứng dụng chạy trên 
Windows. Ứng dụng này có thể chạy một hoặc nhiều bản sao hệ điều hành khách (guest 
OS) của Windows hoặc các hệ điều hành x86 khác, mỗi bản đều chạy các ứng dụng riêng  của nó. (Xem Hình 1.16.          lOMoAR cPSD| 58933639  Hình 1.16 
Windows là hệ điều hành chủ (host OS), và ứng dụng VMware đóng vai trò là trình quản 
lý máy ảo VMM chạy các hệ điều hành khách, quản lý việc sử dụng tài nguyên của chúng, 
và cách ly chúng với nhau để đảm bảo an toàn và ổn định. 
Mặc dù các hệ điều hành hiện đại đã có khả năng chạy nhiều ứng dụng một cách đáng tin 
cậy, việc sử dụng ảo hóa vẫn tiếp tục phát triển. Trên máy tính xách tay và để bàn, VMM 
cho phép người dùng cài đặt nhiều hệ điều hành để khám phá hoặc để chạy các ứng dụng 
được viết cho hệ điều hành khác với hệ điều hành chủ. Ví dụ, một máy tính Apple chạy 
macOS trên CPU x86 có thể chạy một bản Windows 10 khách để thực thi các ứng dụng  Windows. 
Các công ty phát triển phần mềm cho nhiều hệ điều hành có thể sử dụng ảo hóa để chạy tất 
cả các hệ điều hành đó trên một máy chủ vật lý duy nhất nhằm phục vụ cho việc phát triển, 
kiểm thử và gỡ lỗi. Trong các trung tâm dữ liệu, ảo hóa đã trở thành một phương pháp phổ 
biến để thực thi và quản lý môi trường tính toán. Các VMM như VMware ESX và Citrix 
XenServer hiện không còn chạy bên trong hệ điều hành chủ, mà bản thân chúng chính là 
hệ điều hành chủ, cung cấp dịch vụ và quản lý tài nguyên cho các tiến trình máy ảo. Với 
tài liệu này, chúng tôi cung cấp một máy ảo Linux cho phép bạn chạy Linux— cũng như 
các công cụ phát triển đi kèm—trên hệ thống cá nhân của bạn bất kể hệ điều hành chủ là 
gì. Chi tiết đầy đủ về các tính năng và cách triển khai ảo hóa sẽ được trình bày trong Chương  18.