lOMoARcPSD| 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.)
lOMoARcPSD| 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.
lOMoARcPSD| 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 một 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 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
UNIX) thể chạy đồng thời ơng c với nhau. Một người dùng máy ảo 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ả phỏng (emulation). phỏng việc phỏng phần cứng máy tính bằng
lOMoARcPSD| 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. dụ, khi
Apple chuyển từ CPU IBM Power sang CPU Intel x86 cho các y tính để bàn 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 đó 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ể 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 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.
lOMoARcPSD| 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 đã 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 nh xách tay để 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ủ. dụ, một máy tính Apple chạy
macOS trên CPU x86 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 quản môi trường tính toán. Các VMM như VMware ESX 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
hệ điều hành chủ, cung cấp dịch vụ quản 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 Linuxcũng như
các công cụ phát triển đi kèm—trên hệ thống nhân của bạn bất kể hệ điều hành chủ
gì. Chi tiết đầy đủ về c tính năng cách triển khai ảo hóa sẽ được trình bày trong Chương
18.

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.