Ubuntu 上的虚拟化技术指南
1. 虚拟化概述
虚拟化是当今一个重要的话题,概念上并不难理解。它主要有服务器虚拟化和桌面虚拟化两种应用场景,本章介绍的多数选项适用于这两种场景。
在大型企业中,处理大量数据时会用到很多专用计算机。过去使用大型机,现在则可能采用服务器群。但部分服务器无法充分利用资源,例如 payroll 服务器,某些时段繁忙,其他时段闲置,造成资源浪费。通过虚拟化,系统管理员可以整合所有机器的资源,按需分配。
另外,有时会有短期的服务器需求,如统计部门为大型项目需要额外的处理能力。搭建专用服务器耗时且不划算,而虚拟化可以轻松创建和销毁服务器,在需要时出现,不需要时释放物理资源。
通过虚拟化,物理服务器网络的资源可以被整合,形成一个大的资源池,供虚拟机使用。虚拟机(VM)运行在虚拟化层(通常称为管理程序)之上,虽不基于特定离散物理资源运行,但能完成与“真实”计算机相同的任务。虚拟化层为虚拟机定义虚拟接口,模拟硬件设备,这就是硬件仿真。
虚拟机具有灵活性,可随时更改分配的资源,有时无需停机。可以按需快速创建和删除虚拟机,还能保存虚拟机镜像,避免每次创建都重新安装操作系统。此外,还可以结合云计算资源,如 Amazon 的 EC2、Ubuntu 企业云等,节省时间和成本。
对于个人桌面用户,虚拟化也很有用。例如,想测试不同操作系统、运行特定 Windows 程序、测试 Ubuntu 开发版本等。过去需要对硬盘分区,安装多个操作系统,但数据交换和同时运行不便。使用虚拟化可以在同一台机器上运行其他操作系统。
虚拟化软件有不同类型,有些运行在其他操作系统之上,适合桌面测试,但创建新服务器时可能有延迟;有些运行在“裸机”上,速度快,但对普通用户不太方便。
虚拟化并非新技术,20 世纪 60 年代 IBM 就在大型机上实现了有用的虚拟化。近年来,x86 硬件上也能实现虚拟化,2005 年 Intel 发布支持 VT - x 扩展的处理器,2006 年 AMD 发布 AMD - V 扩展。不过,并非所有处理器都支持这些扩展,部分主板需要在 BIOS 中手动启用。
2. KVM(基于内核的虚拟机)
KVM 是 Linux 内核的一部分,不进行硬件仿真,只提供底层任务,需要用户空间的第二层支持。它专为启用 VT - x 或 AMD - V 扩展的处理器设计,在 Ubuntu 中使用 libvert 和 QEMU 管理虚拟机。可以通过安装和运行 kvm - ok 包检查系统是否启用扩展,输出 0 表示适合,非 0 则不适合。
安装步骤如下:
1. 从 Ubuntu 软件仓库安装以下包:
-
qemu - kvm
:KVM 必要的用户空间组件。
-
libvirt - bin
:与 Linux 虚拟化功能交互的 C 工具包二进制文件,支持多种虚拟化技术。
-
virtinst
:创建虚拟机的命令行工具集。
-
bridge - utils
:配置 Linux 以太网连接的工具集。
2. 可选择安装
virt - viewer
(提供虚拟机的 GUI 和 VNC 接口)和
virt - manager
(提供管理虚拟机的 GUI)。
3. 注销并重新登录,确保用户自动添加到 libvertd 组生效。
默认情况下,使用 KVM 安装的客户操作系统可访问网络服务,但在网络中不可见。虚拟机默认获得 10.0.2.0/24 范围内的 IP 地址,可通过 10.0.2.2 从虚拟机访问主机,适合简单测试、文件复制和 VPN 连接。
如果想将虚拟机用作外部可访问的服务器,需要使用桥接网络。步骤如下:
1. 安装
libcap2 - bin
。
2. 授予 QEMU 管理网络的权限:
- 64 位系统:
matthew@seymour:~$ sudo setcap cap_net_admin=ei /usr/bin/qemu - system - x86_64
- 32 位系统:
matthew@seymour:~$ sudo setcap cap_net_admin=ei /usr/bin/qemu
-
在
/etc/network/interfaces中创建名为 br0 的桥接接口:
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
- 重启网络:
matthew@seymour:~$ sudo /etc/init.d/networking restart
- 创建使用桥接网络的客户虚拟机,手动定义客户操作系统使用新的 br0 接口。
创建 KVM 虚拟机的方法有多种,其中 vmbuilder 是一个 Python 脚本,适合运行 Ubuntu JeOS 的服务器。安装
python - vm - builder
包后,可从命令行运行,需要指定虚拟化软件和发行版,还有很多可用选项和自定义设置。例如:
matthew@seymour:~$ sudo vmbuilder kvm ubuntu --suite natty --flavour virtual --arch i386 - o --libvirt qemu:///system --ip 192.168.0.100 --hostname lovelace --bridge br0
这里更推荐使用
virtinst
工具集,主要介绍
virt - install
(创建新虚拟机)和
virt - clone
(克隆现有虚拟机)。
virt - install
示例:
matthew@seymour:~$ sudo virt - install - n hopper - r 512 --disk path=/var/lib/libvert/images/hopper.img,size=20 - c /dev/cdrom --accelerate --connect=qemu:///system --vnc --noautoconsole - v
参数说明:
|参数|说明|
| ---- | ---- |
| - n hopper | 定义新虚拟机的名称 |
| - r 512 | 指定虚拟机分配的内存(MB) |
| –disk path=… | 虚拟磁盘的路径 |
| - c /dev/cdrom | 主机 CD - ROM 设备的路径 |
| –accelerate | 启用内核加速 |
| –connect | 定义使用的管理程序 |
| –vnc | 使用 VNC 虚拟控制台导出客户机 |
| –noautoconsole | 防止自动连接到虚拟机控制台 |
| - v | 创建完全虚拟化的客户机 |
virt - clone
示例:
matthew@seymour:~$ sudo virt - clone - o hopper - n knuth - f /var/lib/libvert/images/knuth.img --connect=qemu:///system
参数说明:
|参数|说明|
| ---- | ---- |
| - o hopper | 定义源虚拟机的名称 |
| - n knuth | 定义新虚拟机的名称 |
| - f | 定义新虚拟机使用的文件、分区或逻辑卷的路径 |
| –connect | 定义使用的管理程序 |
启动和停止虚拟机的命令如下:
启动:
matthew@seymour:~$ virsh - c qemu:///system start hopper
停止:
matthew@seymour:~$ virsh - c qemu:///system shutdown hopper
安装并运行虚拟机后,可以使用配置的 IP 地址和 ssh 等工具连接,也可以使用 GUI 工具:
matthew@seymour:~$ virt - viewer - c qemu:///system hopper
使用 GUI 管理虚拟机:
matthew@seymour:~$ virt - manager - c qemu:///system
3. VirtualBox
VirtualBox 比 KVM 更易于使用,尤其适合在 Ubuntu 上运行第二个操作系统。它最初由 innotek GmbH 创建,后被 Sun Microsystems 收购,现在由 Oracle 拥有和开发。
VirtualBox 安装在其他操作系统之上,不适合对处理器周期要求高的密集型处理活动,但用于测试或运行特定应用程序很合适,可在大多数 UNIX 类型操作系统上运行。
虽然 Ubuntu 软件仓库中有 VirtualBox 版本,但从其官网(www.virtualbox.org/wiki/Downloads)下载更好。可以下载适合各种操作系统的版本,包括 Ubuntu 的 DEB 文件,使用 APT 安装,还能方便地下载扩展包,扩展包添加了一些专有功能,如让虚拟机连接主机 USB 端口。
安装后,可在命令行启动:
matthew@seymour:~$ virtualbox
若想在关闭终端后继续运行,可在命令后加
&
:
matthew@seymour:~$ virtualbox &
启动后会出现 GUI 界面,在界面中可以进行以下操作:
- 选择“New”创建新虚拟机。
- 选择“Settings”更改现有虚拟机的设置。
- 选择“Start”启动虚拟机。
- 选择“Discard”删除虚拟机。
- 使用右上角的“Details”查看当前选中虚拟机的详细信息,使用“Snapshots”查看保存的虚拟机快照。
VirtualBox 的所有设置都可通过 GUI 完成,易于使用,即使是新手也能快速上手。还可以从 GUI 克隆、导出和导入虚拟机,并且有命令行接口用于脚本编写,专注于虚拟机管理活动。此外,还可以无头运行 VirtualBox,使用远程显示协议(RDP)访问,但这些内容超出了本文范围。
mermaid 流程图:
graph LR
A[开始] --> B{选择虚拟化方式}
B -->|KVM| C[检查系统扩展]
C --> D[安装必要包]
D --> E{是否需要桥接网络}
E -->|是| F[配置桥接网络]
E -->|否| G[创建虚拟机]
B -->|VirtualBox| H[下载并安装]
H --> I[启动 VirtualBox]
I --> J[创建/管理虚拟机]
F --> G
G --> K[使用虚拟机]
J --> K
以上就是 Ubuntu 上 KVM 和 VirtualBox 虚拟化技术的详细介绍,希望对你有所帮助。
4. VMware
VMware 也是一款知名的虚拟化软件,它在企业级应用中广泛使用,提供了强大而稳定的虚拟化解决方案。
VMware 有多种版本和产品,适用于不同的场景。例如 VMware Workstation 适合个人开发者和测试人员在桌面环境中使用,而 VMware vSphere 则是企业级的服务器虚拟化平台,可用于大规模的数据中心。
在 Ubuntu 上使用 VMware,首先需要从 VMware 官方网站下载适合的版本。下载完成后,通过以下步骤进行安装:
1. 打开终端,导航到下载文件所在的目录。
2. 赋予安装文件执行权限:
chmod +x VMware - Workstation - <version>.bundle
- 运行安装程序:
sudo./VMware - Workstation - <version>.bundle
按照安装向导的提示完成安装过程。
安装完成后,启动 VMware Workstation,可以通过以下命令:
vmware
在 VMware 中创建虚拟机的步骤如下:
1. 打开 VMware Workstation,点击“创建新的虚拟机”。
2. 选择虚拟机的类型,如“典型(推荐)”或“自定义”。
3. 选择安装来源,可以是 ISO 镜像文件或物理光盘。
4. 配置虚拟机的硬件设置,如内存、硬盘大小、CPU 核心数等。
5. 完成设置后,点击“完成”创建虚拟机。
VMware 提供了丰富的功能,如快照功能可以保存虚拟机的当前状态,方便后续恢复;克隆功能可以快速复制虚拟机等。
5. Xen
Xen 是一种开源的虚拟化管理程序,它支持全虚拟化和半虚拟化。全虚拟化允许虚拟机运行未经修改的操作系统,而半虚拟化则需要对客户操作系统进行一定的修改以提高性能。
在 Ubuntu 上安装 Xen,可按以下步骤进行:
1. 安装 Xen 相关的包:
sudo apt - get install xen - hypervisor - amd64 xen - tools xen - docs - generic
-
配置 Xen 网络,编辑
/etc/network/interfaces文件,添加桥接网络配置:
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
-
创建 Xen 虚拟机配置文件,例如
/etc/xen/myvm.cfg,内容如下:
name = "myvm"
memory = "512"
vcpus = "1"
disk = ['file:/var/lib/xen/images/myvm.img,xvda,w']
vif = ['bridge=br0']
kernel = "/boot/vmlinuz - <version>"
ramdisk = "/boot/initrd.img - <version>"
- 创建虚拟磁盘文件:
sudo dd if=/dev/zero of=/var/lib/xen/images/myvm.img bs=1M count=2048
- 启动 Xen 虚拟机:
sudo xm create /etc/xen/myvm.cfg
Xen 的优点是性能较高,尤其在半虚拟化模式下,能充分利用硬件资源。但它的配置相对复杂,需要一定的技术知识。
6. 虚拟化技术对比
为了让大家更清晰地了解不同虚拟化技术的特点,下面给出一个对比表格:
|虚拟化技术|特点|适用场景|易用性|性能|
| ---- | ---- | ---- | ---- | ---- |
|KVM|是 Linux 内核一部分,依赖用户空间支持,适合服务器虚拟化|企业级服务器、开发测试|配置相对复杂|性能较好|
|VirtualBox|易于使用,安装在其他操作系统之上|个人桌面测试、运行特定程序|简单易用|一般|
|VMware|功能强大,企业级应用广泛|企业数据中心、大规模虚拟化|有一定学习成本|高|
|Xen|支持全虚拟化和半虚拟化,性能较高|对性能要求高的场景|配置复杂|高|
7. 总结
虚拟化技术在当今的 IT 领域中扮演着重要的角色,无论是企业级的服务器虚拟化,还是个人桌面的虚拟化需求,都有多种选择。KVM 借助 Linux 内核的优势,提供了高效的服务器虚拟化方案;VirtualBox 以其简单易用的特点,成为个人用户的首选;VMware 凭借其强大的功能和稳定性,在企业数据中心中占据重要地位;Xen 则以高性能的半虚拟化技术,满足了对性能要求极高的场景。
在选择虚拟化技术时,需要根据自己的实际需求、技术水平和硬件环境等因素综合考虑。希望通过本文的介绍,能帮助大家更好地了解 Ubuntu 上的虚拟化技术,并选择适合自己的解决方案。
mermaid 流程图:
graph LR
A[需求分析] --> B{应用场景}
B -->|企业服务器| C{性能要求}
C -->|高| D[选择 VMware 或 Xen]
C -->|一般| E[选择 KVM]
B -->|个人桌面| F{功能需求}
F -->|简单测试| G[选择 VirtualBox]
F -->|复杂功能| H[选择 VMware]
D --> I[安装配置]
E --> I
G --> I
H --> I
I --> J[使用虚拟化技术]
通过合理利用虚拟化技术,可以提高资源利用率,降低成本,为企业和个人带来更多的便利和价值。
超级会员免费看
4719

被折叠的 条评论
为什么被折叠?



