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
注意:如果是迁移到远程上去,则不需要更改配置文件
如果远程机器上有相同名字的,也需要更改。
本文出自 “IT阿宝” 博客,请务必保留此出处http://907832555.blog.51cto.com/4033334/1871580
原文地址:http://907832555.blog.51cto.com/4033334/1871580