kvm的安装与使用



1,技术参考

http://taokey.blog.51cto.com/4633273/1540873 

http://www.server-world.info/en/note?os=CentOS_6&p=kvm&f=1

http://koumm.blog.51cto.com/703525/1288795

http://www.361way.com/category/virtualization-cloud-automation/page/3


注意:在做实验之前,先确定cpu是否支持虚拟化,在bios里面看,并把虚拟化功能打开

本实验是直接使用vmware安装centos6.6-64位,如果在实际环境,则直接在真机上使用


实验前的准备:

1.给虚拟机硬件资源的大小(cpu,硬盘,内存等)

2.硬盘给两个磁盘,一个装系统,另一个用来存放虚拟机的文件

3.在虚拟机上cpu配置启用虚拟化


默认是raw格式     一般创建qcow2格式



下面就是安装centos系统了,这个百度上有很多,就不介绍了。重点是kvm


安装kvm之前,需要做的准备

1.清除iptable规则或者关闭iptables服务

service iptables stop

chkconfig iptables off

2.关闭selinux

setenforce 0

3.查看一下cpu是否支持虚拟化

cat /proc/cpuinfo  或者 grep -Ei 'vmx|svm' /proc/cpuinfo

如果有输出内容,则支持,其中intel cpu支持会有vmx,amd cpu支持会有svm

4.先配置ip保证机器能够上网


安装虚拟化软件包使用yum(如果yum安装不了的,则需要安装epel源了)

yum install -y kvm virt-*  libvirt  bridge-utils qemu-img


检查kvm模块是否加载

lsmod |grep kvm

正常应该是:

kvm_intel              55496  3

kvm                   337772  1 kvm_intel


如果没有,需要执行 

modprobe kvm-intel

还没有就重启一下试试


配置网卡

cd /etc/sysconfig/network-scripts/

cp ifcfg-eth0 ifcfg-br0

分别编辑eth0和br0

ifcfg-eth0改成如下:

DEVICE=eth0

HWADDR=00:0C:29:55:A7:0A

TYPE=Ethernet

UUID=2be47d79-2a68-4b65-a9ce-6a2df93759c6

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

BRIDGE=br0



ifcfg-br0改成如下:

DEVICE=br0

#HWADDR=00:0C:29:55:A7:0A

TYPE=Bridge

#UUID=2be47d79-2a68-4b65-a9ce-6a2df93759c6

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.11.17

NETMASK=255.255.255.0

GATEWAY=192.168.11.1

DNS1=202.106.0.20


说明: 我的虚拟机是桥接模式,所以设置br0的ip和我的真机同样的网段,包括网关也是我路由器的ip,大家可以根据自己的环境去配置,目的是为了让虚拟机可以上网。

重启网络服务

/etc/init.d/network restart

查看网卡br0的ip

ifconfig -a


启动或重启libvirtd服务和messagebus 服务

/etc/init.d/libvirtd start

/etc/init.d/messagebus restart


此时可以查看网络接口列表

brctl show 结果如下:

bridge name     bridge id               STP enabled     interfaces

br0             8000.000c2955a70a       no              eth0

virbr0          8000.52540014efd5       yes             virbr0-nic


创建虚拟机

把50G大小的容量挂载在/data目录下面,用于存放虚拟机

mkdir /data/   //创建一个存储虚拟机虚拟磁盘的目录,该目录所在分区必须足够大


virt-install \

--name  aming1 \

--ram 512 \

--disk path=/data/aming1.img,size=30 \

--vcpus 1 \

--os-type linux \

--os-variant rhel6 \

--network bridge=br0 \

--graphics none \

--console pty,target_type=serial \

--location 'http://mirrors.163.com/centos/6.8/os/x86_64' \

--extra-args 'console=ttyS0,115200n8 serial'

注意:随着时间久了,可能使用的网络资源不存在了,则需要自己在网络上找了。


使用网络资源的情况下,主机需要能联网,如果网络不可用,则会跳到让你选择使用其他的方式安装


说明:

--name  指定虚拟机的名字

--ram 指定内存分配多少

--disk path 指定虚拟磁盘放到哪里,size=30 指定磁盘大小为30G,这样磁盘文件格式为raw,raw格式不能做快照,后面有说明,需要转换为qcow2格式,如果要使用qcow2格式的虚拟磁盘,需要事先创建qcow2格式的虚拟磁盘。 参考  http://www.361way.com/kvm-qcow2-preallocation-metadata/3354.html   示例:qemu-img create -f qcow2 -o preallocation=metadata  /data/test02.img 7G;  --disk path=/data/test02.img,format=qcow2,size=7,bus=virtio

--vcpus 指定分配cpu几个

--os-type 指定系统类型为linux 

--os-variant 指定系统版本

--network  指定网络类型

--graphics 指定安装通过哪种类型,可以是vnc,也可以没有图形,在这里我们没有使用图形直接使用文本方式

--console 指定控制台类型

--location 指定安装介质地址,可以是网络地址,也可以是本地的一个绝对路径,(--location '/mnt/', 其中/mnt/下就是我们挂载的光盘镜像mount /dev/cdrom /mnt)如果是绝对路径,那么后面还需要指定一个安装介质,比如NFS,假如虚拟机设置ip后,不能连外网,那么就会提示让我们选择安装途径:                        



下面就是我们非常熟悉的界面了,根据安装提示,进行安装。不过这里使用的全部都是文本模式的,如果想使用图形界面,可以开启vnc

最后安装完,reboot就进入刚刚创建的虚拟机了。要想退回到宿主机,ctrl  ] 即可。

virsh list 可以列出当前的子机列表。

virsh console centos6.6_1  可以进入指定的子机

退出到母机 ctrl+]



kvm的使用

virsh list 查看当前的子机列表

virsh list --all   列出全部的子机


virsh console 名字    登录子机

virsh shutdown 名字   关闭子机     需要在母机和客户端都安装acpid包

virsh start 名字 --console    开启子机,并直接进入

ctrl+]   退出

virsh destroy bob  关闭虚拟机

virsh start bob        开启虚拟机

virsh suspend bob   挂起虚拟机

virsh resume bob   恢复挂起机器

virsh autostart bob  自动开始(母机启动,子机也一起起来)

virsh autostart --disable bob  解除自动开始

彻底的销毁机器

virsh destory bob    删除机器

virsh undefine bob 取消定义

然后再删除安装文件


更改虚拟机的名字:

cd /etc/libvirt/qemu 把配置文件名字改一下,然后编辑配置文件,更改 <name></name> 这里面的字符。 还得重启一下 /etc/init.d/libvirtd restart


虚拟机克隆

 1.先关闭虚拟机  virsh shutdown bob

2.在母机里面操作

      virt-clone --original alo7 --name test --file /data/kvm/test.qcow2


如果网卡名字有错误,可以直接修改或者编辑这个文件

vim /etc/udev/rules.d/70-persistend-net.rules


创建快照(可以再开机或者关机的状态下创建)

virsh snapshot-create bob

查看格式

qemu-img info /data/kvm/bob.img


编辑虚拟机的配置文件

virsh edit bob   和直接编辑这个文件是一样的  vim /etc/libvirt/qemu/bob.xml




 转换磁盘格式

qemu-img convert -f raw -O qcow2 /data/kvm/bob.img /data/kvm/bob.qcow2

  源格式    后格式      源路径 后路径

查看虚拟机的快照

virsh snapshot-list bob


恢复快照

virsh snapshot-revert bob id号(1441043345)

查看当前子机的快照版本

virsh snapshot-current bob

删除一个快照

virsh snapshot-delete bob 1143043345

查看快照存放的位置

ls /var/lib/libvirt/qemu/snapshot/bob/


kvm磁盘扩容

qemu-img info /data/kvm/saybot.qcow2  查看大小

qemu-img resize /data/kvm/saybot.qcow2 +5G      加5个G       添加的是物理主机的磁盘空间

注意:直接进入saybot主机。里面是看不到新加的大小的。需要先virsh destroy saybot ,在启动机器在里面才会生效


下面需要从新分区为vda4

fdisk /dev/vda

 

创建pv   (注意:如果在创建的时候找不到vda4,则重启机器)

pvcreate  /dev/vda4

pvs查看一下

pv加入到VG里面去,

vgextend VolGroup /dev/vda4

加入后,用pvs检查一下

vgs查看一下

lvs查看一下逻辑卷


下面把lvm新加的5G空间加入到lv_root里面

 lvextend -l +100%FREE /dev/VolGroup/lV_root   吧剩下的所有空间都加入到lv_root里面

最后需要对操作的地方进行resize2fs

resize2fs /dev/VolGroup/lv_root


添加虚拟磁盘

退出主机,进入母机里面

qemu-img create -f qcow2 /data/kvm/saybot1.qcow2 5G

virsh destroy saybot

virsh edit saybot

复制一段disk‘

<disk type='file' device='disk'>     

  <driver name='qemu' type='raw' cache='none'/>      

  <source file='/data/kvm/test03_2.img'/>      

<target dev='vdb' bus='virtio'/>      

</disk>

开启虚拟机:virsh start test03

进入虚拟机:virsh console test03

分区: fdisk /dev/vdb

格式化 (略)

挂载 (略)

当然也可以按照上面的思路把 /dev/vdb1 加入到 lvm里面去


通过虚拟磁盘恢复虚拟机文件

虚拟机的配置文件/etc/libvirt/qemu

虚拟机磁盘文件/data/kvm


virsh dumpxml saybot > /etc/libvirt/qemu/xcb.xml

相当于备份saybot并重命名xcb.xml

编译刚那个文件

vim /etc/libvirt/qemu/xcb.xml

修改的地方有:名字,uuid,type,file


重新定义xcb文件或者指定文件

virsh define /etc/libvirt/qemu/xcb.xml


调整cpu,内存和网卡

virsh edit saybot

修改cpu和内存直接更改配置文件既可,并吧机器destroy ,最后启动


列出网卡

修改网卡的名字

vi /etc/udev/rules.d/70-persistent-net.rules

查看网卡信息

virsh domiflist saybot

添加一块网卡

virsh attache-interface saybot --type bridge --source br0

virsh dumpxml saybot > /etc/libvirt/qemu/saybot.xml

机器启动的状态,直接添加即可生效


机器关闭的状态,添加网卡

virsh edit saybot

更改的地方有:mac地址,删掉address行

然后启动系统virsh start saybot --console




kvm系统迁移

1.可以拷贝/data/kvm目录下的.qcow2文件

2.拷贝/etc/libvirt/qemu目录下的配置文件.xml


1.机器关机

virsh destroy saybot

2.拷贝文件

virsh dumpxml saybot > /etc/libvirt/qemu/saybot1.xml

3.查看虚拟磁盘在哪里

virsh domblklist saybot

4.拷贝磁盘到远程去

rsync -avp /data/kvm/saybot.qcow2 /data/kvm/saybot1.qcow2

5.编辑配置文件

vim /etc/libvirt/qemu/saybot1.xml

更改的地方:name,uuid,file,

6.定义

virsh define /etc/libvirt/qemu/saybotq.xml

7.开启

virsh start saybot1 --console


注意:如果是迁移到远程上去,则不需要更改配置文件

如果远程机器上有相同名字的,也需要更改。