Ubuntu kvm安装

Kvm(Kernel-based Virtual Machine)是运行在Linux平台上的虚拟化解决方案,相当于在一台机器上面运行多个独立的其他操作系统。要实现Kvm的机器Cpu必须支持VT(Virtualization Technology)技术。

1
2
3
4
5
6
//首先检查CPU是否支持安装Kvm,如:vmx
egrep -o '(vmx|svm)' /proc/cpuinfo
vmx
vmx
vmx
vmx

输出类似如以上内容则表示支持Kvm,下面安装Kvm所必要的插件。

1
sudo apt-get install qemu-kvm libvirt-bin virt-manager bridge-utils

以上命令会自动安装所需要的内容,安装完成后检测安装是否成功,同时可以查看当前虚拟机运行状态

1
2
3
4
5
//执行
sudo virsh list --all
//输出
 Id    Name                           State
----------------------------------------------------

一般刚安装完成的Kvm是没有虚拟机实例的,就像上面的输出一样。
确认libvirtld后台服务是否启动。

1
2
sudo service libvirt-bin status 
libvirt-bin start/running, process 1259

一个正常运行的虚拟操作系统包含一个xml的配置文件及一个操作系统的镜像。
xml配置文件一般默认存放在“/etc/libvirt/qemu/”,操作系统的镜像文件可以存放在其他方便管理的目录,然后在对应的xml文件里修改。下面开始创建raw格式的镜像文件。

1
2
//创建raw格式,文件大小为10G的虚拟机镜像
sudo qemu-img create -f raw new.raw 10G
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//创建对应镜像的xml配置文件
<domain type='kvm'>
    <name>new</name>
    <uuid>678fda12-51ca-4b97-aab7-f0bcdf560b33</uuid>
    <memory unit='KiB'>1048576</memory>
    <currentMemory unit='KiB'>1048576</currentMemory>
    <vcpu placement='static'>2</vcpu>
    <os>
        <type arch='x86_64' machine='pc'>hvm</type>
        <boot dev='hd'/>
    </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/libexec/qemu-kvm</emulator>
        <disk type='file' device='disk'>
            <driver name='qemu' type='raw'/>
            <source file='new.raw'/> 
            <target dev='hda' bus='ide'/>
        </disk>
        <disk type='file' device='cdrom'>
            <source file=''/> 
            <target dev='hdb' bus='ide'/>
        </disk>
        <controller type='usb' index='0'>
            <address type='pci' domain='0x0000'  bus='0x00' slot='0x01' function='0x2'/>
        </controller>
        <controller type='ide' index='0'>
            <address type='pci' domain='0x0000'  bus='0x00' slot='0x01' function='0x1'/>
        </controller>
        <interface type='direct'>
            <mac address='52:54:00:8d:be:fc'/>
            <source dev='eth0' mode='bridge' />
            <model type='rtl8139' />
            <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'/>
        <graphics type='vnc' port='5902'  autoport='no' listen='0.0.0.0'>
            <listen type='address'  address='0.0.0.0'/>
        </graphics>
        <video>
            <model type='cirrus' vram='9216'  heads='1'/>
            <address type='pci' domain='0x0000'  bus='0x00' slot='0x02' function='0x0'/>
        </video>
        <memballoon model='virtio'>
            <address type='pci' domain='0x0000'  bus='0x00' slot='0x04' function='0x0'/>
        </memballoon>
    </devices>
</domain>

创建好对配置文件后,需要激活配置文件才能正常启动虚拟机。

1
2
3
4
5
6
7
8
9
//激活虚拟机配置文件
sudo virsh define /etc/libvirt/qemu/new.xml

//成功激活配置文件后,我们再次执行以下命令,可以看到虚拟机列表中有刚才添加的虚拟机

sudo virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     new                            shut off

上面只是创建虚拟机的一种方式,虚拟机的镜像文件还其他多种格式,如:qcow、qcow2、img等。各自的优劣在这里就不做比较,需要的自行搜索对比。下面介绍一些虚拟时常用的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//虚拟机文件转换
//参数说明:convert   将磁盘文件转换为指定格式的文件
//-f   指定需要转换文件的文件格式
//-O  指定要转换的目标格式
//转换完成后,将新生产一个目标映像文件,原文件仍保存。
sudo qemu-img convert -f raw new.raw -O qcow2 new.qcow2

//虚拟机管理命令
sudo virsh list [--all] # 查看虚拟机
sudo virsh start $id # 启动虚拟机
sudo virsh shutdown $id # 停止虚拟机
sudo virsh destroy $id # 强制停止虚拟机
sudo virsh dominfo $id # 查看虚拟机信息
sudo virsh undefine $id # 删除与虚拟机的所有文件,慎用
sudo virsh quit # 退出virsh命令模式

//创建新的虚拟机,继承自模板镜像
//qemu-img create -f qcow2 xx.qcow2 -o backing_file=xx.qcow2 2G

//开机自动启动虚拟机,下面注意不是虚拟机的文件名,而是激活虚拟机后的实例名。
sudo virsh autostart new

//启动虚拟机
sudo virsh start new

//关闭虚拟机
sudo virsh destroy new


//Kvm镜像命令
//查看虚拟信息
sudo qemu-img info xx.qcow2
//查看虚拟机快照
sudo qemu-img snapshot -l xx.qcow2
//创建快照
sudo qemu-img snapshot -c 快照名 xx.qcow2 
//使用快照
sudo qemu-img snapshot -a 快照名 xx.qcow2 
//删除快照
sudo qemu-img snapshot -d 快照名 xx.qcow2


//virsh 镜像命令(建议)
//创建镜像
sudo virsh snapshot-create-as xx 镜像名
//查看镜像
sudo virsh snapshot-list xx
//恢复快照
sudo virsh snapshot-revert xx 镜像名
//删除快照
sudo virsh snapshot-delete xx 镜像名