在Ubuntu 7.10(Gutsy Gibbon)上使用KVM
在本教程中,我将介绍如何安装和使用KVM在虚拟机中运行服务。 KVM(基于内核的虚拟机)是一种Linux内核虚拟化技术,通过使用Intel VT( Vanderpool )或AMD-V( Pacifica )提供完全虚拟化。
我在服务器上以root身份工作。 如果您正在使用普通用户,则必须使用sudo安装所有内容,例如
sudo apt-get install kvm
下载并安装KVM
您可以使用Ubuntu 7.10中包含的包,只需执行:
apt-get install kvm
您还可以下载最新版本的KVM并进行编译。 但是您需要以下软件包进行编译:
apt-get install gcc gcc-3.4 gcc-4.1 libsdl1.2-dev make libz-dev uuid-dev libasound2-dev gcc libc6-dev zlib1g-dev
您还需要您正在使用的内核的linux头文件包。 例如linux-headers-2.6.22-14
。
首先我们需要KVM包:
您可以在http://sourceforge.net/projects/kvm/找到实际的版本。 将其下载到您的服务器:
wget link/to/file /usr/src/
现在解压内容。
cd /usr/src/
tar -xzf file.tar.gz
cd folder/to/kvm
在编译KVM之前,请确保您的CPU支持虚拟化,并且在BIOS中激活该选项。 没有这种支持,你不会有太多的表现...
所以我们来编译KVM。
./configure
make
make install
现在加载KVM模块:
如果您有Intel CPU
负载:
modprobe kvm
modprobe kvm_intel
如果您有AMD CPU
负载:
modprobe kvm
modprobe kvm_amd
创建网桥
首先,我们必须安装bridge-utils:
apt-get install bridge-utils
如果以后要连接到虚拟机,则需要设置网桥。
编辑/ etc / network /这样的接口
(确保插入你的公共IP地址):
auto lo iface lo inet loopback auto br0 iface br0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx bridge_ports eth0 bridge_stp off bridge_maxwait 5
还可以编辑/ etc / qemu-ifup
这样:
#!/bin/sh /sbin/ifconfig $1 0.0.0.0 promisc up /usr/sbin/brctl addif br0 $1 sleep 2
我建议现在重新启动你的服务器。 如果您能够重新连接,您的桥梁正在工作。
为虚拟机创建虚拟磁盘并在其中安装系统。
创建一个.img文件进行安装。 该文件充当您的vm的虚拟磁盘。
你有两种创建这样的文件的可能性。
直接分配.img文件所需的磁盘空间。 在这种情况下,文件的大小将为4 GBytes。
dd if=/dev/zero of=disk01.img bs=1G count=4
创建最大尺寸的.img文件,但只有在需要时才会分配磁盘空间。 在这种情况下,最大大小将为10 GBytes,但使用的磁盘空间将是vm中文件所需的空间。
qemu-img create -f qcow2 disk01.img 10G
接下来,我们需要您要安装的系统的ISO文件。 确保已经下载到您的服务器上。
我们来安装虚拟机。 当您没有物理访问服务器时,使用VNC选项开始安装。 所以你可以连接到VNC会话,你将有安装程序的GUI。 在这种情况下,我们将把vm的RAM大小设置为512 MB。 目前,vm无法访问网络接口。 稍后在配置vm的IP地址后,我更喜欢激活它。
kvm -hda disk01.img -cdrom os.iso -m 512 -boot d -vnc IP:1
现在您可以使用VNC客户端连接到IP:1。 此时可以配置系统和网络设置。 不要忘记安装SSH服务器。 配置完成后,关闭vm。
现在我们将通过网络支持启动vm。 我们为vm网络接口分配一个MAC地址。 如果您使用超过1 vm,这很重要。 每个vm将获取其MAC地址。
kvm -hda disk01.img -m 512 -boot c -net nic,vlan=0,macaddr=00:16:3e:00:00:01 -net tap -nographic -daemonize
几秒钟后,你应该可以通过ssh连接到vm。 如果没有,可以添加-vnc选项来检查是否有问题。
我有一段时间后无法通过网络到达我的vm的问题。 我不得不在start命令中添加一个不同的网卡仿真。 这解决了我的问题。
kvm -hda disk01.img -m 512 -boot c -net nic,vlan=0,macaddr=00:16:3e:00:00:01,model=rtl8139 -net tap -nographic -daemonize
如果您有配置的网络接口未启动的问题,请删除以下文件(取决于您的os):
/etc/udev/rules.d/70-persistent-net.rules
要么
/etc/udev/rules.d/z25-persistent-net.rules
您还可以将更多的虚拟磁盘添加到一个vm。 您可以将以下参数添加到start命令中:
-hdb disk02.img
如果需要,可以添加更多的虚拟机。 您还可以为您的vms创建启动脚本。
享受使用KVM! :)