zoukankan      html  css  js  c++  java
  • 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/p_w_picpaths ; 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_p_w_picpaths dir "/kvm/p_w_picpaths"

            查看存储池:virsh pool-list --all

            建立基于文件夹的存储池:virsh pool-build kvm_p_w_picpaths

            使存储池生效:virsh pool-start kvm_p_w_picpaths

            验证存储池:virsh pool-info kvm_p_w_picpaths

            创建完存储池后,就可以通过创建卷的方法来创建虚拟机的磁盘:

            创建卷:virsh vol-create-as kvm_p_w_picpaths test1.img 10G --format qcow2

            刷新池:virsh pool-refresh kvm_p_w_picpaths

            查看存储池里面的卷信息:virsh vol-list kvm_p_w_picpaths

            查看单个卷的信息:virsh vol-info test1.img kvm_p_w_picpaths

            查看单个卷的详细信息:virsh vol-dumpxml test1.img kvm_p_w_picpaths

        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/p_w_picpaths/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/p_w_picpath/test1-1.img

                    然后将新的磁盘信息录入到test1.xml文件当中(通过命令virsh edit test1来修改为佳):

                        <disk type='file' device='disk'>
                            <driver name='qemu' type='qcow2'/>
                            <source file='/var/lib/libvirt/p_w_picpath/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手册,其中已经提供了非常详细的用法说明。

  • 相关阅读:
    高德地图修改背景色
    shell程序的编写
    WPF程序,运行时,结束时,要运行的操作(自动保存,检查单程序)
    android EditText光标位置(定位到最后)
    字体结构的Baseline/Leading/Ascent/Descent的图示
    Java解析xml(转)
    python常用抽象基类1
    airflow之SubDAGs(转载)
    java解析xml(转)
    python内部类
  • 原文地址:https://www.cnblogs.com/taosiyu/p/14419270.html
Copyright © 2011-2022 走看看