3refee 发表于 2016-3-11 13:17:07

KVM虚拟机管理指南(纯命令行模式)

使用KVM需要以下几个前提条件:
    1. CPU必需支持虚拟化,可以在/proc/cpuinfo文件中想找flags,如果是inter的显示为vmx,amd的显示为svm

    2. CPU必需支持64位操作系统,可以在上述文件中查找lm标记,如果有则支持

    3. 系统必需为64为的RHEL,且系统版本为RHEL6.4及以上为最佳

    4. 必需在BIOS里开启CPU的VT功能

KVM虚拟机文件管理:
    默认的KVM虚拟机工作目录为/var/lib/libvirt
    配置文件存在于/etc/libvirt/qemu/目录下,以主机名称+xml结尾的文件即其相关虚拟机的配置文件,需要修改其配置,也可以直接修改xml文件实现(不建议)。其中autostart目录定义的配置文件会随主机一起启动,而network定义了虚拟机使用桥接网络时的网关网卡的相关配置。
KVM配置实例:
    1. 配置安装RHEL6/Centos 6服务器,并安装虚拟化软件
      #yum groupinstall -y "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools"
    2. 添加开机启动,并启动服务

      #chkconfig libvirtd on
      #service libvirtd start
    3. 镜像文件管理--直接创建
      创建一个镜像:# cd /var/lib/libvirt/images ; qemu-img create -f qcow2 test1.img 5G
      更改镜像格式:# qemu-img convert -f raw -o qcow2 test.img test1.img
      增加镜像文件空间: # qemu-img resize test1.img 1G
      查看镜像文件格式:# qemu-img info test1.img
    4. 除了镜像来管理存储,kvm还支持存储池
      定义存储池:virsh pool-define-as kvm_images dir "/kvm/images"
      查看存储池:virsh pool-list --all
      建立基于文件夹的存储池:virsh pool-build kvm_images
      使存储池生效:virsh pool-start kvm_images
      验证存储池:virsh pool-info kvm_images
      创建完存储池后,就可以通过创建卷的方法来创建虚拟机的磁盘:
      创建卷:virsh vol-create-as kvm_images test1.img 10G --format qcow2
      刷新池:virsh pool-refresh kvm_images
      查看存储池里面的卷信息:virsh vol-list kvm_images
      查看单个卷的信息:virsh vol-info test1.img kvm_images
      查看单个卷的详细信息:virsh vol-dumpxml test1.img kvm_images
    5. 使用virt-install初始化安装一个Centos系统
      # virt-install --connect qemu:///system \ #如果使用kvm安装,并且使用的root,默认为此,基于xen或者其它,可参考man virt-install
      --n test1 \    #指定虚拟机的显示名称
      --c /mnt/centos6.4-x86_64.iso    #指定安装镜像,也可以指定cdrom直接安装,如:-c /dev/sr0
      --r 2048 \    #指定内存,默认为MB
      --arch=x86_64 \    #指定arch模型
      --vcpus=2 --check-cpu --cpuset=0-1 \ #指定cpu0,1作为虚拟机的CPU,此处绑定了CPU
      --os-type=linux --os-variant=rhel6 \    #指定系统类型和版本
      --disk path=/var/lib/libvirt/images/test1.img,device=disk,bus=virtio,spare=true -s 10 \ #指定磁盘信息,使用virtio驱动加载
      --network bridge=br0 \    #指定桥接模式,并指定通过br0网卡进行桥接
      --noautoconsol --autostart \ #不自动开启控制台,并且随主机自启动
      --vnc    #提供vnc端口访问,在这里可以设置密码,也可以不设置
      --force
    6. 虚拟机管理--virsh
      虚拟机状态管理:
            开机:virsh start test1
            关机:virsh shutdown test1
            强制关机:virsh destroy test1
            重新启动:virsh reboot test1
            通过配置文档启动主机:virsh create /etc/libvirt/qemu/test1.xml
            查看主机状态:virsh list --all
            停止/挂机虚拟机:virsh suspend test1
            保存虚拟机:virsh save test1
            还原虚拟机:virsh resume test1
      从一个已存在的设备配置文件新建一个虚拟机:
            virsh dumpxml test1 >/etc/libvirt/qemu/test2.xml
            qemu-img create -f qcow2 test2.img 20G
            这时需要对其配置中的uuid,id,name,以及新的硬盘镜像文件,mac地址等信息进行更改,更改完成后,就可以通过下面的命令启动虚拟机的安安
            virsh create /etc/libvirt/qemu/test2.xml
      修改内存/CPU:
            修改内存大小:virsh setmem test1 4G    #默认单位为KB
            设置内存的最大值:virsh setmaxmem test1 8G
            增大VCPU数量:virsh setvcpus test1 8
      添加/删除设备:
            添加一块硬盘:
                首先需要创建一个镜像,但是qemu-img创建的镜像没有被处理过(分区及格式化),因此可以使用libguestfs插件创建一个可以直接使用的磁盘分区:
                  yum install -y libguestfs
                  virt-make-fs -F qcow2 -t ext4 -s 50G /var/lib/libvirt/image/test1-1.img
                然后将新的磁盘信息录入到test1.xml文件当中(通过命令virsh edit test1来修改为佳):
                  <disk type='file' device='disk'>
                        <driver name='qemu' type='qcow2'/>
                        <source file='/var/lib/libvirt/image/test1-1.img'/>
                        <target dev='hdf' bus='virtio' type='virtio'/>
                  </disk>
                最后执行添加设备的命令:
                  virsh attach-device test1 /etc/libvirt/qemu/test1.xml
                如果需要删除此设备,将xml文件中的设备信息删除后,执行以下命令即可:
                  virsh detach-device test1 /etc/libvirt/qemu/test1.xml
      备份/还原:
            备份:virsh save --bypass-cache test1 /var/lib/libvirt/save/test1_1.save --running
            还原:virsh restore /var/lib/libvirt/save/test1_1.save --bypass-cache --running
      快照管理:
            如果要使用kvm的快照功能,就必须使用qcow2的磁盘格式,而raw只支持内存快照,如果不是,请参考第3节内容修改
            查看快照:virsh snapshot-list test1
            创建快照:virsh snapshot-create test1 test1.snap1
            恢复到快照:virsh snapshot-revert test1 test1.snap1
            删除快照:virsh snapshot-delete test1 test1.snap1
    7. KVM虚拟机的迁移
      其实了解了上面的操作之后,就明白,KVM虚拟机依靠两个主要文件来启动,一个是img文件,一个是xml配置文件。因此迁移的时候,可以直接迁移这两个文件就能实现静态迁移。如果img文件存放在共享存储,则更为方便,只用迁移xml配置文件,就可以实现静态迁移。
      当然,virsh命令也可以迁移虚拟机,不过要求目标主机与当前主机的应用环境须保持一致,其命令格式如下:
            virsh migrate --live test1 qemu+tcp//destnationip/system tcp://destnationip

结语:KVM还有许多其它方面的功能,如与VM之间的迁移、windows的扩展支持等功能,如果有兴趣的同学,可以参考man手册,其中已经提供了非常详细的用法说明。


页: [1]
查看完整版本: KVM虚拟机管理指南(纯命令行模式)