原文链接 libvirt 用作为不同虚拟化技术的接口。在开始了解libvirt之前,最好确定你的硬件支持KVM必需的虚拟话扩展。在控制台输入下面的命令:
kvm-ok
将打印出一条信息,告诉你你的CPU是否支持硬件虚拟化。
注意:对大多数的机器,处理器是支持虚拟化的,需要在BIOS里面激活这个选项。
虚拟化网络
有多种不同的方法允许一个虚拟机访问外部网络。缺省的虚拟网络配置是 usermode 网络,它使用SLIRP协议,被NATed的流量通过主机接口到达外部网络。
让外部主机直接访问虚拟机上的服务,需要配置一个bridge。才能让虚拟接口通过物理接口来连接外部网络,对网络上的其他主机,他们表现的像正常的主机。更多的信息关于设置一个bridge,请看 “Bridaging” 这一段 https://help.ubuntu.com/10.04/serverguide/C/network-configuration.html#bridging 。
安装
安装需要的包,在终端提示符那里输入下面的命令:
sudo apt-get install kvm libvirt-bin
安装完 libvirt-bin 之后,用来管理虚拟机的用户将需要增加到 libvirtd 组。 这样,他就会获得访问高级网络选项的能力。
在终端中输入:
sudo adduser $USER libvirtd
注意:如果选择的是当前用户,要让新的组成员关系生效,你需要重新登录一次。
现在,你准备要安装一个 Guest operating system. 安装一个虚拟机,和直接在硬件上安装操作系统的步骤是一样的。 你需要一种自动安装的方法,或者需要一个键盘和显示器,连接到物理机器上的。
在这个虚拟机器的案例中,类似一个 GUI使用物理键盘和鼠标。不安装一个GUI,virt-viewer使用VNC可以用来连接一个虚拟机器的控制台。参考 “Virtual Machine Viewer“ https://help.ubuntu.com/10.04/serverguide/C/libvirt.html#libvirt-virt-viewer 获得更多信息。
有几种方法可以让Ubuntu的安装过程自动化,例如,使用 preseeds, kickstart, 等等。参考 Ubuntu Installation Guide https://help.ubuntu.com/10.04%20LTS/installation-guide/ 获得更详细的信息。
另外一种安装Ubuntu虚拟机的方法是使用 ubuntu-vm-builder。ubuntu-vm-builder 允许你设置高级分区,执行自定义的 post-install 脚本,等等。更多的信息请看这段 “ JeOS and vmbuilder“ https://help.ubuntu.com/10.04/serverguide/C/jeos-and-vmbuilder.html。
virt-intall
virt-install 是 python-virtinst 包的一部分。要安装它,在终端提示符下输入:
sudo apt-get install python-virtinst
virt-install有几个有效的选项。例如:
sudo virt-install -n web_devel -r 256 -f web_devel.img \
-s 4 -c jeos.iso –accelerate \
–connect=qemu:////system –vnc \
–noautoconsole -v
-n web_devel 在这里例子中,新的虚拟机的名字将会是 web_devel
-r 256 虚拟机使用的内存总数是256
-f web_devel.img 指出虚拟盘的路径,可以为一个文件,分区或者逻辑卷标。在这个例子为一个名为 web_devel.img 的文件
-s 4 虚拟盘的大小
-c jeos.iso 用作虚拟CDROM的文件。这个文件可以是一个ISO文件或者指向主机CDROM设备
–accelerate 打开内核加速技术
–vnc 用VNC输出虚拟的控制台
–noautoconsole 不自动连接到虚拟机控制台
-v 创建一个完全虚拟化的guest
执行 virt-install 后,你可以在本地使用一个GUI连接虚拟机控制台或者使用virt-viewer工具。
virt-clone
virt-clone 应用拷贝 虚拟机。例如:
sudo virt-clone -o web_devel -n database_devel -f /path/to/database_devel.img –connect=qemu:///system
-o 原虚拟机
-n 新的虚拟机名字
-f 文件的路径,逻辑卷标,或者分区(新虚拟机使用)
-connect 指定哪一个管理程序来连接
同样,也可以使用 -d 或者 -debug 选项对 virt-clone 进行故障检测。
注意:可使用适当的虚拟机名字替代 web_devel 和 database_devel。
虚拟机管理
virsh
有个有效的工具管理虚拟机和libvirt。virsh工具使用命令行的方式。下面是一些例子:
+ 列出正在运行的虚拟机
virsh -c qemu:///system list
+ 启动一个虚拟机
virsh -c qemu:///system start web_devel
+ 类似,在引导时启动一个虚拟机
virsh -c qemu:///system autostart web_devel
+ 重启一个虚拟机
virsh -c qemu:///system reboot web_devel
+ 虚拟机的状态可以保存在一个文件中,便于后来的恢复。下面将保存虚拟机状态到一个文件中,以日期命名:
virsh -c qemu:///system save web_devel web_devel-022708.state
一旦保存,虚拟机将不再运行
+ 恢复保存状态的虚拟机的运行
virsh -c qemu:///system restore web_devel-022708.state
+ 关闭虚拟机
virsh -c qemu:///system shutdown web_devel
+ 在虚拟机中状态CDROM
virsh -c qemu:///system attach-dish web_devel /dev/crom /media/cdrom
注意:在上面的例子中,用适当的虚拟机名字替换 web_devel,而 web_devel-022708.state 作为描述文件名也一样。
Virtual Machine Manager
virt-manager 包,内含一个图形工具,管理本地和远程的虚拟机。安装virt-manager ,输入:
sudo apt-get install virt-manager
由于 virt-manager 需要一个GUI环境,推荐安装在工作站或者测试机器上。连接本地 libvirt 服务,输入:
virt-manager -c qemu:///system
你可以连接运行在另一台主机上的libvirt服务,在终端提示符下输入:
virt-manager -c qemu+ssh://virtnode1.mydomain.com/system
注意:上面的例子中, 在管理系统和virtnode1.mydomain.com之间的SSH连接是已经被配置好的,使用 SSH keys 来验证。SSH keys需要是因为 libvirt 发送密码提示符给另一个进程。关于SSH配置的更详细信息请参考 “OpenSSH Sever“ https://help.ubuntu.com/10.04/serverguide/C/openssh-server.html。
Virtual Machine Viewer
virt-viewer应用允许你连接到一个虚拟机控制台。virt-viewer需要GUI支持。
安装 virt-viewer :
sudo apt-get install virt-viewer
一旦虚拟机被安装和运行,你可以使用下面的命令来连接到虚拟机控制台:
virt-viewer -c qemu:///system web_devel
类似于 virt-manager,virt-viewer 能使用key认证的SSH连接到远程主机,如下:
virt-viewer -c qemu+ssh://virtnode1.mydomain.com/system web_devel
确信使用适当的虚拟机名字替换掉 web_devel。
如果配置了一个bridged网络接口,就可以配置SSH来访问虚拟主机,参考 “OpenSSH Server”
https://help.ubuntu.com/10.04/serverguide/C/openssh-server.html 和 ” Bridging” https://help.ubuntu.com/10.04/serverguide/C/network-configuration.html#bridging 获得更详细的信息。
资源
• KVM 的主页 http://kvm.qumranet.com/kvmwiki
• libvirt 的主页 http://libvirt.org/
• Virtual Machine Manager 主站 http://virt-manager.et.redhat.com/
• #freednode 上的 ubuntu-virt IRC 频道,讨论Ubuntu的虚拟化技术 http://freenode.net/
• Ubuntu Wiki KVM https://help.ubuntu.com/community/KVM