KVM创建和调整虚拟机

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即可。

你可能感兴趣的:(KVM创建和调整虚拟机)