CentOS6.5 x64上安装KVM功能模块步骤操作都以root用户进行。
查看是否支持虚拟技术
cat /proc/cpuinfo | egrep 'vmx|svm'
关掉networkmanager,因为这个会导致虚拟网卡配置冲突
service NetworkManager stop
chkconfig --del NetworkManager
关掉selinux
修改/etc/selinux/config 文件
SELINUX=enforcing改为SELINUX=disabled
启动虚拟化服务并设置开机启动
service libvirtd start
chkconfig --level 3 libvirtd on
检查是否可以使用kvm模块
lsmod | grep kvm
kvm_intel 54285 9
kvm 333172 1 kvm_intel
配置桥接网卡(如果只需要NAT可以不做)
进入网卡配置目录
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0
将eth0的网卡配置和br0的网卡配置修改为如下内容:
[root@test02 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
HWADDR=BC:EE:7B:9A:5E:91
TYPE=Ethernet
UUID=a257d75d-072c-4eac-8daa-b131324fff52
ONBOOT=yes
NM_CONTROLLED=yes
#BOOTPROTO=static
#IPADDR=192.168.0.12
#NETMASK=255.255.255.0
#GATEWAY=192.168.0.1
DNS1=8.8.8.8
BRIDGE=br0
[root@test02 network-scripts]# cat ifcfg-br0
DEVICE=br0
HWADDR=BC:EE:7B:9A:5E:91
UUID=a257d75d-072c-4eac-8daa-b131324fff52
ONBOOT=yes
TYPE=Bridge
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.0.12
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
配置完成后 执行
service network restart 即可看到效果
注:
1.DNS服务器配置随意
2.br0是虚拟网卡,libvirt是安装这个软件后出来的
3.实体网卡去掉相关ip属性,如BOOTPROTO IPADDR NETMASK GATEWAY,虚拟网卡将这些属性补充到自己的网卡配置文件里面去,但其他配置一律不变动,相当于br0变成实体网卡了,但只是相当于而已。
3.虚拟网卡需要将TYPE改为Bridge,证明是使用桥接模式。
安装虚拟机
创建虚拟机磁盘镜像文件
创建磁盘文件不能太小,不然会coredump。
qcow2格式是kvm支持的标准格式,raw格式为虚拟磁盘文件通用格式。有测试数据表明raw格式的I/O性能略高于qcow2格式,但是在加密,容量,快照方面qcow2格式有优势
qemu-img create -f qcow2 test.qcow2 20G //建立qcow2格式磁盘文件
qemu-img create -f raw test.raw 20G //建立raw格式磁盘文件
qemu-img info test.qcow2 //查看已经创建的虚拟磁盘文件
创建并安装虚拟机
以下是ubuntu为例,ubuntu 14
#!/bin/bash
virt-install --name ubuntu \
--boot network,cdrom,menu=on \
--ram 512 --vcpus=1 \
--os-variant=ubuntuquantal \
--cdrom=/app/ftp_data/team/public/system_iso/ubuntu-14.04-desktop-i386.iso \
--disk path=/app/kvm/images/centos.qcow2,size=10,format=qcow2,bus=virtio \
--bridge=br0,model=virtio --keymap=en-us \
--vnc --vncport=5910 --vnclisten=0.0.0.0
以下是centos 6.5为例
cat vir_centos.sh
#!/bin/bash
virt-install --name centos6.5x64 \
--boot network,cdrom,menu=on \
--ram 512 --vcpus=1 \
--os-variant=rhel6 \
--cdrom=/app/ftp_data/team/public/system_iso/CentOS-6.5-x86_64-bin-DVD1.iso \
--disk path=/app/ftp_data/team/public/system_iso/another_CentOS-6.5-x86_64-bin-DVD1.iso,device=cdrom \
--disk path=/app/kvm/images/centos.qcow2,size=10,format=qcow2,bus=virtio \
--bridge=br0,model=virtio --keymap=en-us \
--vnc --vncport=5911 --vnclisten=0.0.0.0
查看 os-variant 都有哪些代号
virsh-install --os-variant list
osinfo-query os
注:
1.disk属性就是指虚拟机使用哪一个磁盘镜像文件作为存储地方,指定刚才创建的镜像文件位置即可,size=10,format=qcow2,bus=virtio分别是指大小,格式(跟镜像格式一致),磁盘总线类型(指Value can be ’ide’, ’scsi’, ’usb’, ’virtio’ or ’xen’,virtio是专门为kvm制定的bus,比较常用),大小需要比镜像文件大小要小,相当于镜像是容器,这个disk是里面的水,水太多就溢出了。
2.bridge=br0,model=virtio --keymap=en-us分别指网卡使用,网卡模式即驱动模式,和键盘制式,桥接模式都使用br0,而虚拟机需要使用virtio这个驱动才能使用虚拟网卡,这个虚拟网卡驱动在linux下支持很好,在windows下支持一般,键盘制式如果不指定的话会出现键位错乱的情况,一般我们使用英式。
3.安装centos6.5的时候我使用了2次disk,原因是因为centos6.5的安装盘启动引导安装有问题,会出现无法查找到安装源的情况,所以特地加载多一个iso,一个作为启动使用,一个作为安装源使用,作为安装源使用的时候是使用磁盘格式存储。
4.vnc相关配置,这个vnc如果配置了的话是virt-tools组件自带的,无需要额外安装vnc服务端,默认绑定127.0.0.1,这里将其改为 0.0.0.0 以便可以通过外部连接,每一台的虚拟机的端口都不能一致,一致就会冲突而造成无法启动安装。
5.如果无须使用图形界面安装,virt-install默认是支持文本模式安装的。
qcow2扩容
安装必备
sudo apt-get install libguestfs-tools
备份文件
sudo virsh shutdown vm-gitlab6
sudo cp /var/lib/libvirt/images/vm-gitlab6/ubuntu-kvm/vm-gitlab6-img1.qcow2 /var/lib/libvirt/images/vm-gitlab6/ubuntu-kvm/vm-gitlab6-img1-back.qcow2
查看虚机分区大小
sudo virt-df -h vm-gitlab6-img1.qcow2
W: kvm binary is deprecated, please use qemu-system-x86_64 instead
Filesystem Size Used Available Use%
vm-gitlab6-img1.qcow2:/dev/sda1 18G 1.1G 16G 6%
创建新的镜像文件vm-gitlab6-img1-big.qcow2,给40G大小(要求不低于30G)
sudo qemu-img create -f qcow2 vm-gitlab6-img1-big.qcow2 40G
下面就是关键的虚拟机扩容
sudo virt-resize --expand /dev/sda1 vm-gitlab6-img1.qcow2 vm-gitlab6-img1-big.qcow2
用vm-gitlab6-img1-big.qcow2替换vm-gitlab6-img1.qcow2即可。
启动虚拟机
sudo virsh start vm-gitlab6
如果一切正常,原来那个vm-gitlab6-img1-back.qcow2就可以删除了。一般不会翻车。翻车就把备份拿出来。
shrink压缩虚拟机
如果新虚拟机文件过大,用下面的命令转存一下,就可以缩小虚拟机文件大小(不是分区大小)。
sudo qemu-img convert -O qcow2 vm-gitlab6-img1-big.qcow2 vm-gitlab6-img1-shrink.qcow2
最后用vm-gitlab6-img1-shrink.qcow2替换vm-gitlab6-img1.qcow2即可。