53、Ubuntu 上的虚拟化技术指南

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
  1. /etc/network/interfaces 中创建名为 br0 的桥接接口:
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
  1. 重启网络:
matthew@seymour:~$ sudo /etc/init.d/networking restart
  1. 创建使用桥接网络的客户虚拟机,手动定义客户操作系统使用新的 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
  1. 运行安装程序:
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
  1. 配置 Xen 网络,编辑 /etc/network/interfaces 文件,添加桥接网络配置:
auto br0
iface br0 inet dhcp
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0
  1. 创建 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>"
  1. 创建虚拟磁盘文件:
sudo dd if=/dev/zero of=/var/lib/xen/images/myvm.img bs=1M count=2048
  1. 启动 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[使用虚拟化技术]

通过合理利用虚拟化技术,可以提高资源利用率,降低成本,为企业和个人带来更多的便利和价值。

需求响应动态冰蓄冷系统与需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕需求响应动态冰蓄冷系统及其优化策略展开研究,结合Matlab代码实现,探讨了在电力需求侧管理背景下,冰蓄冷系统如何通过优化运行策略参与需求响应,以实现削峰填谷、降低用电成本和提升能源利用效率的目标。研究内容包括系统建模、负荷预测、优化算法设计(如智能优化算法)以及多场景仿真验证,重点分析不同需求响应机制下系统的经济性和运行特性,并通过Matlab编程实现模型求解与结果可视化,为实际工程应用提供理论支持和技术路径。; 适合人群:具备一定电力系统、能源工程或自动化背景的研究生、科研人员及从事综合能源系统优化工作的工程师;熟悉Matlab编程且对需求响应、储能优化等领域感兴趣的技术人员。; 使用场景及目标:①用于高校科研中关于冰蓄冷系统与需求响应协同优化的课题研究;②支撑企业开展楼宇能源管理系统、智慧园区调度平台的设计与仿真;③为政策制定者评估需求响应措施的有效性提供量化分析工具。; 阅读建议:建议读者结合文中Matlab代码逐段理解模型构建与算法实现过程,重点关注目标函数设定、约束条件处理及优化结果分析部分,同时可拓展应用其他智能算法进行对比实验,加深对系统优化机制的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值