zoukankan      html  css  js  c++  java
  • 虚拟化_KVM

    一、KVM介绍

    1、KVM全称kernel vitual machine,是针对包含虚拟化扩展(InterVT或AMD-V)的x86硬件上的完全原生的虚拟化解决方案

    2、KVM是以色列Qumranet开发,基于linux内核,2008年9月4日RedHat公司收购KVM

    3、RHEL5/CentOS5默认是Xen,RHEL6/CentOS6版本默认是KVM

    二、KVM架构

    -KVM驱动:作为linux内核的一个模块,其主要负责虚拟机的创建,虚拟机内存的分配,VCPU寄存器的读写以及VCPU的运行

    -Qemu:用于模拟虚拟机的用户控件组件,提供I/O设备模型,访问外设的途径。

    -Libvirt,virsh:由于Qemu工具效率不高,RedHat为KVM开发了辅助工具,比如libvirt、libguestfs。Libvirt是一套提供多种语言接口的API,为各种虚拟化工具提供一套方便、可靠的编程接口,而且支持Xen宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt不仅提供了API,还自带一套基于文本的管理虚拟机的命令virsh,可以通过使用virsh命令来使用libvirt的全部功能。

    -virt-manager是一套python编写的虚拟机管理图形界面,用户可以通过他只管地操作不同的虚拟机,利用libvirt的API实现的。

    三、kvm创建brigde网络模型的虚拟机

    查看cpu是否支持虚拟化

    # egrep --color=auto "vmx|svm" /proc/cpuinfo

    如果有输出内容intel的cpu会有vmx,AMD的cpu会有svm

    关闭NetworkManager服务

    # /etc/init.d/NetworkManager stop

    # chkconfig --level 2345 NetworkManager off

    检查network服务是否启动

    # chkconfig --list network

    安装虚拟化的软件包:

    # yum -y install kvm virt-* libvirts bridge-utils qemu-img

    说明:

    kvm:软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序

    libvirts:安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机

    bridge-utils:设置网络网卡桥接

    virt-*:创建、克隆虚拟机命令,以及图形化管理工具virt-manager

    qemu-img:安装qemu组将,使用qemu命令来创建磁盘等。

    检查kvm是否安装成功

    # lsmod | grep --color kvm

    如果出现:下列内容则表示安装成功加载kvm模块

    kvm_intel              54285  0

    kvm                   333172  1 kvm_intel

    如果没有成功加载则执行:

    # modprobe kvm_intel

    如果还是没有则reboot

    编辑配置文件

    # vi /etc/libvirt/qemu.conf
    user = "root"
    group = "root"
    dynamic_ownership = 0

    启动服务

    # /etc/init.d/libvirtd start ; /etc/init.d/messagebus start

    配置网络

    修改网络配置文件重启网络服务

    # cd /etc/sysconfig/network-scripts/

    # cp ifcfg-eth0 ifcfg-br0

    # vim ifcfg-br0

    DEVICE=br0

    TYPE=Bridge

    ONBOOT=yes

    NM_CONTROLLED=no

    BOOTPROTO=none

    IPADDR=10.10.10.156

    NETMASK=255.255.255.0

    GATEWAY=10.10.10.1

    DNS1=192.168.1.1

    DNS2=8.8.8.8

    # vim ifcfg-eth0

    DEVICE=eth0

    HWADDR=00:0C:29:29:E5:68

    TYPE=Ethernet

    ONBOOT=yes

    NM_CONTROLLED=no

    BOOTPROTO=none

    BRIDGE=br0

    使用qemu-kvm创建虚拟机

    将qemu-kvm连接到/usr/sbin/下

    # ln -sv /usr/libexec/qemu-kvm /usr/sbin

    利用网络镜像创建虚拟机

    virt-install --name  fansik1 --ram 512 --disk path=/kvm/fansik1.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.7/os/i386/' --extra-args 'console=ttyS0,115200n8 serial'

    选择English然后配置静态ip地址就可以执行安装

    利用光盘镜像创建虚拟机

    # qemu-img create -f qcow2 -o preallocation=metadata /kvm/fansik.qcow2 10G

    通过NFS将光盘文件共享出来,然后通过NFS创建

    # virt-install --name fansik --ram 512 --disk path=/kvm/fansik.qcow2,format=qcow2,size=7,bus=virtio --vcpus 1 --os-type linux --os-variant rhel6 --network bridge=br0 --graphics none --console pty,target_type=serial --location '/mnt/' --extra-args 'console=ttyS0,115200n8 serial'

    NFS设置:

    NFS server name:NFS服务器IP地址

    CentOS directory:/mnt/images/install.img

    NFS mount options (optional):ro

    四、virsh常用操作

    # virsh list --all

    显示所有虚拟机

    # virsh console 名称

    切换到某台虚拟机

    关闭虚拟机需要在虚拟机上(不是宿主机)安装acpid包

    # yum install acpid

    # /etc/init.d/acpid start

    在关闭就可以正常关闭虚拟机了

    # virsh shutdown fansik

    或者可以直接使用destroy选项

    # virsh destroy fansik

    启动虚拟机并进入该虚拟机

    # virsh start fansik --console

    挂起虚拟机

    # virsh suspend fansik

    恢复虚拟机

    # virsh resume fansik

    是虚拟机开机自启动

    # virsh autostart fansik

    关闭虚拟机的开机自启动

    # virsh autostart --disable fansik

    完全删除虚拟机

    # virsh destroy fansik

    # virsh undefine fansik

    # rm -rf /kvm/fansik

    五、kvm克隆

    将fansik虚拟机克隆成fansik2

    # virt-clone --original fansik --name fansik2 --file /kvm/fansik2.qcow2

    进去后修改一下网卡配置即可,和vmware中差不多

    六、创建快照

    创建快照

    # virsh snapshot-create fansik2

    查看快照信息

    # qemu-img info fansik2.qcow2

    磁盘转换

    # qemu-img convert -f raw -O qcow2 fansik1.img fansik1.qcow2

    创建的快照,和转换的磁盘都以xml文件的的形式存储在/etc/libvirt/qemu目录下

    列出快照

    # virsh snapshot-list fansik2

    或者

    # qemu-img info /kvm/fansik2.qcow2

    七、恢复和删除快照

    先列出快照然后选择要恢复的快照名称,恢复快照

    # virsh snapshot-revert fansik2 1461996142

    显示当前虚拟机的快照

    # virsh snapshot-current fansik2

    删除快照

    # virsh snapshot-delete fansik2 1461996142

    快照存储位置/var/lib/libvirt/qemu/snapshot/fansik2/

    八、kvm磁盘扩容

    给fansik2增加5G

    # qemu-img resize /kvm/fansik2.qcow2 +5G

    查看一下

    # qemu-img info fansik2.qcow2

    销毁重启后就可以看到多出来5G啦

    # virsh destroy fansik2

    # virsh start fansik2

    重新分区就可以使用了,注意其实柱面要接着之前的

    将重新分的区添加到逻辑卷中去

    # pvcreate /dev/vda3

    # pvs查看分区情况

    PV         VG       Fmt  Attr PSize PFree

    /dev/vda2  vg_bogon lvm2 a--  9.51g    0

    /dev/vda3           lvm2 a--  5.00g 5.00g

    # vgextend vg_bogon /dev/vda3

    # vgs查看是否添加成功

    VG       #PV #LV #SN Attr   VSize  VFree

    vg_bogon   2   2   0 wz--n- 14.50g 5.00g

    # lvs

    # lvextend -l +100%FREE /dev/vg_bogon/lv_root

    # resize2fs /dev/vg_bogon/lv_root

    九、根据虚拟磁盘恢复虚拟机

    # virsh undefine fansik1

    /etc/libvirt/qemu中的fansik1.xml就会被删除

    # virsh dumpxml fansik > fansik1.xml

    或者

    # cp fansik.xml fansik1.xml

    # vim fansik1.xml编辑配置文件

    修改<name>fansik1</name>

    <uuid>c026536a-8227-bf18-3dd6-e026bd6417b1</uuid>

    <driver name='qemu' type='raw' cache='none'/>

    <source file='/kvm/fansik.img'/>

    定义fansik1

    # virsh define /etc/libvirt/qemu/fansik1.xml

    十、调整cpu、内存、网卡

    调整cpu和内存

    # virsh edit fansik1或者# vim /etc/libvirt/qemu/fansik1.xml

    直接编辑文件即可:

    <memory unit='KiB'>524288</memory>

    <currentMemory unit='KiB'>524288</currentMemory>

    <vcpu placement='static'>1</vcpu>

    列出网卡信息:

    # virsh domiflist fanisk1

    添加网卡(需要虚拟机开机时配置):

    # virsh attach-interface fansik1 --type bridge --source br0

    或者编辑配置文件添加:

    <interface type='bridge'>

      <mac address='52:54:00:42:99:0b'/>

      <source bridge='br0'/>

      <model type='virtio'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

    </interface>

    十一、kvm虚拟机迁移

    # virsh dumpxml fansik > /etc/libvirt/qemu/fansik8.xml

    查看虚拟磁盘位置

    # virsh domblklist fansik

    把虚拟磁盘同步到要迁移的服务器上

    # rsync -avP /kvm/fansik.qcow2 /data/kvm/fansik8.qcow2

    定义虚拟机

    # virsh define /etc/libvirt/qemu/fansik8.xml

    启动虚拟机

    # virsh start fansik8.xml

  • 相关阅读:
    圈水池 nyoj 78 凸包算法
    凸包算法入门
    nyoj 633 幂
    软件下载地址
    概率论与数理统计
    迷宫最短路径 问题
    将项目发布至开发环境测试环境的方法
    一些JavaScript技巧
    随机生成10个不重复的0-100的数字
    Git添加远程库和从远程库中获取(新手傻瓜式教学)
  • 原文地址:https://www.cnblogs.com/fansik/p/5467016.html
Copyright © 2011-2022 走看看