linux虚拟机kvm基础使用

kvm的安装配置

安装

1
yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt

网卡配置

  • 1.安装桥接工具
1
yum install bridge-utils tunctl
  • 2.配置桥接
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
cd /etc/sysconfig/network-scripts/

cp ifcfg-eth0 ifcfg-br0
#修改ifcg-eth0
vim ifcfg-eth0
DEVICE=eth0
HWADDR=FC:AA:14:42:8A:4C
TYPE=Ethernet
UUID=9e1ebd3e-2606-417c-86d0-ce771d449e61
ONBOOT=yes
NM_CONTROLLED=yes
BRIDGE=br0

#修改ifcg-br0
vim ifcfg-br0
DEVICE=br0
HWADDR=FC:AA:14:42:8A:4C
TYPE=Bridge
UUID=9e1ebd3e-2606-417c-86d0-ce771d449e61
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.0.0.161
NETMASK=255.255.255.0
GATEWAY=10.0.0.1

使用

创建磁盘

1
2
3
4
5
# 创建磁盘
qemu-img create -f qcow2 /kvm/TEST-102.img 30G

#查看kvm磁盘格式
qemu-img info /kvm/TEST-102.img

调整默认网卡模式

1
2
3
4
5
6
7
8
9
10
#vnc模式
virt-install --virt-type kvm --name TEST-102 --ram 4096 \
--disk /data/KvmDisk/TEST-102.img,format=qcow2 --network network=default \
--graphics vnc,listen=0.0.0.0,port=20000 --noautoconsole \
--os-type=linux --os-variant=rhel6 --cdrom=/data/iso/CentOS-6.5-x86_64-minimal.iso
#location模式
virt-install --name=TEST-101 --ram=4096 --vcpus=4 --os-type=linux \
--disk path=/data/KvmDisk/TEST-101.img,size=30,format=qcow2,bus=virtio,cache=writeback\
--location=nfs://10.0.0.161:/data/CentosImg/ --network bridge=br0,model=virtio \
--mac=52:54:00:33:1F:6F --extra-args='console=ttyS'

创建虚拟机

1
2
3
4
5
6
7
8
9
桥接模式
virt-install --name=TEST-102 \
--ram=4096 \
--vcpus=4 \
--os-type=linux \
--disk /kvm/TEST-102.img,size=20,format=qcow2,bus=virtio,cache=writeback \
--network bridge=br0,model=virtio \
--extra-args='console=ttyS0 ks=nfs:10.0.0.161:/centosinstall/ks.cfg' \
--location nfs:10.0.0.161:/centosinstall

注释:
–name 虚拟机名
–ram 内存大小
–vcpus cpu内核
–disk指定虚拟磁盘的位置,此种方式的磁盘格式是raw,不能使用快照功能,如需使用快照功能,磁盘必须是qcow2格式
qcow2格式磁盘需事先创建

通过配置文件修改网卡模式

1
2
3
4
5
6
7
<interface type='network'>
      <mac address='52:54:00:9e:44:e0'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

修改为

1
2
3
4
5
6
7
<interface type='bridge'>
      <mac address='52:54:00:9e:44:e0'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

虚拟机重命名

bash
1
2
3
4
5
6
7
8
9
virsh destroy server_monitor
cd /etc/libvirt/qemu
virsh dumpxml server_monitor > 192.16.1.185.xml
vim 192.16.1.185.xml
#修改server_monitor为192.16.1.185
virsh undefine server_monitor
virsh define 192.16.1.185.xml
virsh start
192.16.1.185

使用虚拟机

启动虚拟机

1
virsh start TEST-101

使用配置文件启动虚拟机

1
virsh create /etc/libvirt/qemu/TEST-101.xml

启动网卡(启动默认的default网卡)

1
virsh net-start default

设置虚拟机开机自启动

1
virsh autostart TEST-102

解除开机自启动

1
virsh autostart --disable TEST-102

调整虚拟机配置

1
2
3
4
5
virsh  edit TEST-101

#重启生效
virsh destroy TEST-101
virsh start TEST-101

关机

1
2
3
virsh destroy TEST-101
#或者
virsh shutdown TEST-101(需虚拟机开启acpid服务)

删除已有虚拟机

1
2
virsh destroy TEST-101(关机)
virsh undefine TEST-101(删除)

挂起

1
virsh suspend TEST-101

恢复

1
virs resume TEST-101

虚拟机迁移

迁移前需先关机

1
2
3
4
virsh shutdown TEST-101
virsh dumpxml TEST-101 > /etc/libvirt/qemu/TEST-105.xml
virsh domblklist TEST-102 #查看磁盘文件位置
rsync -av /kvm/TEST-101.img /kvm/TEST-105.img

注意:
远程迁移的话,将xml配置文件和img磁盘文件拷贝到相关目录下面,如果迁移到本机,则需要修改冲突的地方,比如:虚拟机名,磁盘路径等..

克隆虚拟机

克隆前需先关机
关于virsh shutdown TEST-101不起作用的说明:
原因:需借助虚拟机的acpid服务,所以前提是安装并开启acpid服务
登录虚拟机

bash
1
2
3
4
virsh console TEST-101
yum install -y acpid
/etc/init.d/acpid start
退出连接(快捷键ctrl+])

克隆命令:

1
virt-clone --original TEST-101 --name TEST-105 --file /kvm/TEST-105.img

磁盘格式转换

1
qemu-img convert -f raw -O qcow2 /kvm/TEST-101.img /kvm/TEST-101.qcow2

使用转换后的磁盘,需要修改虚拟机的配置文件

1
2
3
4
virsh edit TEST-101
type='raw'修改成type='qcow2'
将file='/kvm/TEST-101.img'修改成file='/kvm/TEST-101.qcow2'
重启虚拟机

快照

raw格式的磁盘无法使用快照功能,使用快照前需将磁盘转换成qcow2格式,方法见上

1
virsh snapshot-create TEST-101

查看快照

1
2
3
4
virsh snapshot-list TEST-102
\[root@KVM-TEST ~\]# virsh snapshot-list TEST-102
Name Creation Time State
1389985501 2014-01-18 03:05:01 +0800 running

恢复快照

1
virsh snapshot-revert TEST-102 1389985501

删除快照

1
virsh snapshot-delete TEST-102 1389985501

磁盘扩容

raw格式磁盘扩容

1
qemu-img resize /kvm/TEST-101.img +10G

查看磁盘信息

1
2
qemu-img info /kvm/TEST-101.img
注:扩容后的磁盘在系统内是没有分区的,需要对其进行分区

增加磁盘

1
qemu-img create -f raw /kvm/TEST-101-01.img 20G

修改虚拟机配置文件

1
virsh edit TEST-101

添加如下内容

1
2
3
4
5
6
<disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/kvm/TEST-101-01.img'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>

重新虚拟机生效

注意
qcow2格式磁盘扩容同raw,需要注意的是
qemu-img resize 时提示’This image format does not support resize’,则排查是否创建时添加参数’preallocation=metadata’
如果有此参数,则不能使用resize

查看网卡列表

1
virsh domiflist TEST-102

增加网卡

  • 1.临时增加网卡(重启失效)
1
virsh attach-interface TEST-101 --type bridge --source br0
  • 2.保存到配置,重启就不会失效
1
virsh dumpxml TEST-101 >/etc/libvirt/qemu/TEST-101.xml

以配置文件的方式重启

1
virsh create /etc/libvirt/qemu/TEST-101.xml

kvm重装系统

添加cdrom

1
2
3
4
<disk type='file' device='cdrom'>
      <source file='/var/lib/libvirt/images/ubuntu.iso'/> //光盘镜像路径
      <target dev='hdb' bus='ide'/>
</disk>

修改启动

1
2
<boot dev='cdrom'/>  // 光盘启动为首选启动项
<boot dev='hd'/>     // 硬盘启动为次要启动项

保存后启动虚拟机,即从光盘开始启动