利用KVM与QEMU在服务器上创建虚拟机器
环境:ubuntu 14.05桌面版 64bit
检测:
1、KVM需要CPU硬件支持虚拟化,所以首先要确认你的CPU支持。
Intel CPU的虚拟化技术叫 vmx (Virtual Machine eXtension,就是一串虚拟机指令集),AMD CPU的虚拟化技术叫 svm。开机,进BIOS, 设置开启虚拟化。我的CPU是Intel的,BIOS是这样的: 选Security, 再进Virtualization项, 把各项设置成ENABLE,保存退出 。
2、启动 linux 系统 (强烈建议装64位的linux版本,否则虚拟机内存将被限制在2G之内)
(1)查看一下linux是32位还是64位
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=8d0966ce81ec6609bbf4aa439c77138e2f48a471, stripped
返回结果中将显示 64bit 或 32bit
(2)确认一下 CPU支持硬件虚拟化
$ egrep -o '(vmx|svm)' /proc/cpuinfo
如果有结果显示,就OK
3、 安装相关软件包
添加了网上搜索到的一些源
$ gedit /etc/apt/sources.list
deb http://mirrors.sohu.com/ubuntu/ precise main restricted
deb-src http://mirrors.sohu.com/ubuntu/ precise main restricted
deb http://mirrors.sohu.com/ubuntu/ precise-updates main restricted
deb-src http://mirrors.sohu.com/ubuntu/ precise-updates main restricted
deb http://mirrors.sohu.com/ubuntu/ precise universe
deb-src http://mirrors.sohu.com/ubuntu/ precise universe
deb http://mirrors.sohu.com/ubuntu/ precise-updates universe
deb-src http://mirrors.sohu.com/ubuntu/ precise-updates universe
deb http://mirrors.sohu.com/ubuntu/ precise multiverse
deb-src http://mirrors.sohu.com/ubuntu/ precise multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-updates multiverse
deb-src http://mirrors.sohu.com/ubuntu/ precise-updates multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-security main restricted
deb-src http://mirrors.sohu.com/ubuntu/ precise-security main restricted
deb http://mirrors.sohu.com/ubuntu/ precise-security universe
deb-src http://mirrors.sohu.com/ubuntu/ precise-security universe
deb http://mirrors.sohu.com/ubuntu/ precise-security multiverse
deb-src http://mirrors.sohu.com/ubuntu/ precise-security multiverse
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu precise main
开始安装
$ sudo apt-get install qemu-kvm qemu-system libvirt-bin bridge-utils
libvirt-bin 利用libvirt管理虚拟机
qemu-kvm 是虚拟机
bridge-utils 用于网络桥接
$ sudo apt-get install virt-manager python-spice-client-gtk
其中:virt-manager为虚拟机管理程序(在x window中运行,需要用到python-spice-client-gtk)
执行下面的命令看KVM是否安装成功:
$ kvm-ok
输出如下:
INFO: /dev/kvm exists
KVM acceleration can be used
查看kvm内核模块是否已加载
$ sudo lsmod | grep kvm
4、使用图形界面安装
1)因为用的是桌面版本,因此不需要安装x-window
$ virt-manager
点击左上角图标建立新的虚拟机
输入虚拟机名字,选择镜像文件,后面的选项选择默认选项就好。
**需要注意的是,如果是安装windows,需要在建立虚拟机后,需要将Video Model选Cirrus,否则一直停留在启动画面。
如果创建虚拟机后画面显示如图,则需要看设置中Boot Option是否勾选了Hard Disk &&CDROM
重启虚拟机后就进入平常见到的系统安装界面,系统安装后就可以正常使用了
5、使用指令创建虚拟机
1)、建立磁盘镜像
我们需要创建它的初始磁盘镜像,镜像格式可以选择raw或是qcow2,.img文件存放在/var/lib/libvirt/images
$ qemu-img create -f qcow2 linux.img 10G
Formatting 'linux.img', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
使用 qcow2 格式的磁盘镜像的好处就是它在创建之初并不会给它分配全部大小磁盘容量(这里是 10 GB),而是随着虚拟机中文件的增加而逐渐增大。因此,它对空间的使用更加有效。
2)建立xml配置文件,之前使用图形工具virt-managers建立过虚拟机,xml文件在/etc/libvirt/qemu,复制一个后稍作修改linux.xml(windows和linux在配置文件上没什么差别)
<domain type='kvm'> //域类型kvm xen等
<name>linux</name>//虚拟机名字 linux
<uuid>93456869-1d1e-03c0-2a20-a47267c750d8</uuid>//UUID不能重复
<memory unit='KiB'>1048576</memory>//虚拟机的最大内存
<currentMemory unit='KiB'>1048576</currentMemory>//虚拟机当前的内存
<vcpu placement='static'>1</vcpu>//cpu个数:1
<os>
<type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type>//hvm表示全虚拟化
<boot dev='hd'/>//启动项
<boot dev='cdrom'/>//启动项
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm-spice</emulator> //二进制模拟器设备的完整路径
<disk type='file' device='disk'>//disk是用来描述磁盘的主要容器
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/linux.img'/>//建立的磁盘镜像文件绝对路径
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/home/thomas/iso/ubuntu-14.04.5-desktop-amd64.iso'/>//系统镜像文件
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='bridge'>//网络链接方式选择桥式连接,也可选择NAT, type ='network'
<mac address='52:54:00:56:1f:c9'/>//MAC地址
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes'/>
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='cirrus' vram='9216' heads='1'/>//安装windows model type='cirrus'
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon>
</devices>
</domain>
3)定义一个虚拟机
$ virsh define linux.xml
Domain linux defined from linux.xml
输入指令可以查看虚拟机linux已经定义好
$ virsh list --all
Id Name State
----------------------------------------------------
- linux shut off
- lll shut off
4)启动虚拟机
virshstartlinuxDomainlinuxstarted
virt-viewer linux //打开可视窗口
5)进入系统安装界面,安装后重启就可以使用了
6、Libvirt有两种控制方式,命令行和图形界面
图形界面:
通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。
命令行:
virsh list #显示本地活动虚拟机
virsh list –all #显示本地所有的虚拟机(活动的+不活动的)
virsh define ubuntu.xml #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)
virsh start ubuntu #启动名字为ubuntu的非活动虚拟机
virsh create ubuntu.xml # 创建虚拟机(创建后,虚拟机立即执行,成为活动主机)
virsh suspend ubuntu # 暂停虚拟机
virsh resume ubuntu # 启动暂停的虚拟机
virsh shutdown ubuntu # 正常关闭虚拟机
virsh destroy ubuntu # 强制关闭虚拟机
virsh dominfo ubuntu #显示虚拟机的基本信息
virsh domname 2 # 显示id号为2的虚拟机名
virsh domid ubuntu # 显示虚拟机id号
virsh domuuid ubuntu # 显示虚拟机的uuid
virsh domstate ubuntu # 显示虚拟机的当前状态
virsh dumpxml ubuntu # 显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等)
virsh setmem ubuntu 512000 #给不活动虚拟机设置内存大小
virsh setvcpus ubuntu 4 # 给不活动虚拟机设置cpu个数
virsh edit ubuntu # 编辑配置文件(一般是在刚定义完虚拟机之后)
libvirt还提供了一个shell:virsh,直接执行名virsh即可获得一个特殊的shell:virsh,在这个virsh里面可以执行上面的命令(去掉前面的virsh)与本地libvirt交互,还可以通过命令connect命令连接远程libvirt,与之交互,例如:connect xen+ssh://root@10.4.122.11。另外可以只执行一条远程libvirt命令:virsh –c xen+ssh://root@10.4.122.11 list –all
转载连接:
http://blog.csdn.net/bingxx11/article/details/12516381
http://blog.csdn.net/c80486/article/details/42836169