KVM虚拟化

虚拟化概念

KVM虚拟化概念详讲

虚拟化配置

  • 首先开启虚拟化的支持 并且增加一个50g的硬盘

  • free查看内存

  • grep -Ei 'vmx|svm' /proc/cpuinfo查看虚拟机是支持虚拟化

  • lsblk 查看是否增加了一块新的磁盘 这里我们看到新增了一块50g的内存

  • 接下来我们格式化硬盘格式化为ext4格式 mkfs.ext4 /dev/sdb
  • blkid /dev/sdb查看磁盘信息

  • 创建挂载目录 mkdir /kvm_data
  • mount /dev/sdb /kvm_data 挂载到/kvm_data
  • 为使/kvm_data开机自动挂载 需要修改‘/etc/fstab’
    • 添加 /dev/sdb /kvm_data ext4 defaults 0 0
  • 关闭防火墙 和 seLinux

安装KVM

  • yum install -y virt-* libvirt bridge-utils qemu-img

启动KVM

  • 配置网卡 首先复制原先的网卡

  • 接下来修改ifcfg-bro

    • TYPE="Bridge"
      BOOTPROTO="none"
      DEFROUTE="yes"
      NAME="bro"
      DEVICE="bro"
      ONBOOT="yes"
      IPADDR="192.168.207.143"
      NETMASK="255.255.255.0"
      GATEWAY="192.168.207.2"
      DNS1=114.114.114.114
      DNS2=8.8.8.8
  • 修改ifcfg-ens33

    • TYPE="Ethernet"
      NAME="ens33"
      DEVICE="ens33"
      ONBOOT="yes"
      BOOTPROTO="none"
      BRIDGE="bro"
  • systemctl restart network 重启网卡

启动libvirtd服务

首先检查KVM模块是否加载,命令如下(lsmod命令用于显示已载入系统的模块):

  • lsmod|grep kvm

  • systemctl start libvirtd开启libvirtd

  • brctl show 查看有两个网卡

  • 上传Centos7到/tmp/目录下

  • virt-install --name=test --memory=512,maxmemory=1024
    --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7
    --location=/tmp/CentOS-7-x86_64-DVD-1511.iso
    --disk path=/kvm_data/test.img,size=10
    --bridge=br0
    --graphics=none
    --console=pty,target_type=serial
    --extra-args="console=tty0 console=ttyS0"
  • 输入上面的命令开始安装虚拟机

  • 命令解释:

     --name:指定虚拟机的名称。
     --memory:指定分配给虚拟机的内存资源大小。
     maxmemory:指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源。
     --vcpus:指定分配给虚拟机的CPU核心数量。
     maxvcpus:指定可调节的最大CPU核心数量。
     --os-type:指定虚拟机安装的操作系统类型。
     --os-variant:指定系统的发行版本。
     --location:指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL。
     --disk path:指定虚拟硬盘所存放的路径及名称,size则是指定该硬盘的可用大小,单位是G。
     --bridge:指定使用哪一个桥接网卡,也就是说使用桥接的网络模式。
     --graphics:指定是否开启图形。
     --console:定义终端的属性,target_type 则是定义终端的类型。
     --extra-args:定义终端额外的参数。
  • 开机后进入设置界面 对时区 root密码等进行设置

虚拟机管理

  • virsh list 查看虚拟机列表 只能看见已经开启的虚拟机

  • virsh list --all查看所有的虚拟机
  • virsh console test进入指定的虚拟机

vrish常用命令,命令如下:

virsh shutdown test
//关闭虚拟机
virsh start test
//开启虚拟机
virsh destroy test
//类似stop,这个是强制停止
virsh undefine test
//彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all就看不到
virsh autostart test
//宿主机开机该虚拟机也开机
virsh autostart --disable test
//解除开机启动
virsh suspend test
//挂起
virsh resume test
//恢复

克隆虚拟机

  • 克隆虚拟机之前必须要关闭虚拟机

  • virt-clone --original test --name test02 --file

 --original:指定克隆源虚拟机。
 --name:指定克隆后的虚拟机名字。
 --file:指定目标虚拟机的虚拟磁盘文件
  • 查看虚拟机是否增加 test02 ls /etc/libvirt/qemu/

快照

​ 快照是在我们使用Vmware的时候,很常用的一个功能。它可以回到之前的某一状态。在KVM中RAW格式的虚拟磁盘不支持做快照,qcow2支持。

  • 创建快照 virsh snapshot-create test

  • qemu-img info /kvm_data/test.img 查看test.img信息 并且同时查看 快照列表

  • virsh snapshot-list test 列出所有快照

  • virsh snapshot-current test 查看当前快照详细信息

  • ls /var/lib/libvirt/qemu/snapshot/test/查看所有快照配置文件

  • 恢复指定快照 virsh snapshot-revert test 1588485687

  • 删除指定快照 virsh snapshot-delete test 1588485687

磁盘格式

  • qemu-img info /kvm_data/test.img 查看磁盘格式信息

  • 创建2 GB的RAW格式磁盘 qemu-img create -f raw /kvm_data/test_1.img 2G

    • -f 指定磁盘类型 后面跟3个参数 磁盘类型、磁盘文件、大小
  • qemu-img convert -O qcow2 /kvm_data/test_1.img /kvm_data/test_1.qcow2 将磁盘转换为qcow2格式

    • convert -O 进行格式转换
  • ls -lh /kvm_data/test_1.img

可以看到qcow2文件比较小,raw文件大小和我们指定空间大小一样是2G raw格式的磁盘性能比qcow2要好,但是raw格式的磁盘无法做快照

  • qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.img 将test02转换为raw格式

  • 更改磁盘格式和文件路径,然后启动test02虚拟机,命令如下: virsh edit test02

    • /找到上面这部分将qcow修改为raw,/kvm_data/test02.img改为

磁盘扩容

  • 首先扩容RAW格式,命令如下: qemu-img resize /kvm_data/test02_2.img +2G

  • qemu-img info /kvm_data/test02_2.img 查看磁盘信息 大小增加了2g

  • 进入虚拟机 virsh console test02 使用 fdisk -l 查看磁盘列表

  • 发现这时虚拟机的磁盘大小还是10g 所以我们需要重新启动虚拟机后 再进行测试

  • 这样我们看到已经变为12g了 接下来对该磁盘进行分区 fdisk /dev/vda

  • 分区完成后 使用p查看磁盘列表:

  • 除了对已有磁盘扩容外,还可以额外增加磁盘,命令如下:

    • qemu-img create -f raw /kvm_data/test02_3.raw 5G 创建一块新的5g的磁盘
  • virsh edit test02 编辑虚拟机test02
  • 主要修改source file名称为/kvm_data/test02_3.raw,target dev改为vdb,slot改为0x09,不与0x06冲突即可。

  • 关闭虚拟机进行测试:

接下来,我们扩容qcow2格式的磁盘,命令如下:

  • qemu-img resize /kvm_data/test.img +2G 若提示qemu-img: Can't resize an image which has snapshots,需要删除快照

  • 使用命令 qemu-img info test.img 查看虚拟机信息

  • 重启虚拟机 进行查看 fdisk -l

调整CPU内存、网卡

  • 查看虚拟机配置信息 virsh dominfo test
  • 修改配置文件 virsh edit test

  • 再次查看配置信息 virsh dominfo test

  • 还可以动态修改 内存和cpu信息 动态修改重启后失效

    • virsh setmem test 800m 修改动态内存
    • virsh setvcpus test 2 修改cpu数 只能增加不能减少
  • 再次查看虚拟机配置信息

  • virsh dumpxml test > /etc/libvirt/qemu/test.xml把配置写到配置文件中

配置网卡

  • virsh domiflist test 列出网卡列表

  • 增加一块新的网卡,并设置为NAT网络模式(virbr0类似VMware的VMnet8),这里如果写--source br0,则网络模式为桥接,命令如下:

    • virsh attach-interface test --type bridge --source virbr0
    • virsh domiflist test

  • virsh dumpxml test > /etc/libvirt/qemu/test.xml把配置文件进行备份

  • 进入虚拟机查看网卡信息 ip a

  • 此方法在重启虚拟机后 网卡自动消失 如果想要网卡永久存在 需要将网卡添加到配置文件中

迁移虚拟机

  • 迁移虚拟机必须要先关闭

    • virsh domblklist test 查看虚拟磁盘所在目录
  • virsh dumpxml test > /etc/libvirt/qemu/test03.xml 如果是远程虚拟机需要把该文件拷贝到远程上去
  • rsync -av /kvm_data/test.img /kvm_data/test03.img 如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上

  • 因为是迁移到本机,配置文件用的是test子机的配置,不改会有冲突,所以需要修改该文件。如果是远程机器不用修改,命令如下:

    • vi /etc/libvirt/qemu/test03.xml
  • virsh define /etc/libvirt/qemu/test03.xml 定义新的虚拟机

  • virsh list --all查看所有的虚拟机

KVM虚拟化配置的更多相关文章

  1. ESXi 嵌套KVM虚拟化 配置

    VMware ESXi5.x默认不支持嵌套虚拟化,需要修改相关配置才能支持   1.ESXi5.1主机开通ssh,修改VMware ESXi配置文件使之嵌套虚拟化. 在配置文件后面加入如下配置:vhv ...

  2. centos vmware centos6.6 64位 kvm虚拟化安装配置 第四十二节课

    centos vmware centos6.6 64位 kvm虚拟化安装配置     第四十二节课 上半节课 下半节课 f

  3. kvm虚拟化之kvm虚拟机vnc配置

    本文是通过vnc方式访问虚拟主机上的KVM虚拟机.    这里的通过vnc方式访问虚拟机不是在kvm虚拟机安装配置vnc服务器,通过虚拟主机的IP地址与端口进行访问,kvm虚拟化对vnc的支持相对来说 ...

  4. kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  5. 安装配置KVM虚拟化

    安装KVM虚拟化 KVM需要硬件⽀持, 所以需要开启虚拟化⽀持 硬件设备直接在BIOS设置开启CPU虚拟化 个⼈电脑同样进⼊BIOS开启虚拟化⽀持 VM需要找到对应虚拟机开启对应的VT-EPT虚拟化技 ...

  6. Linux中安装配置KVM虚拟化

    KVM 概述: KVM 即 Kernel-based Virtual Machine 基于内核的虚拟机. KVM,是一个开源的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各 ...

  7. 配置基于Devstack的嵌套KVM虚拟化

    本文为minxihou的翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou JmilkFan:minxihou的技术博文方向是 算法&Open ...

  8. kvm虚拟化存储池配置

    1.创建基于文件夹的存储池(目录) 2.定义存储池与其目录 # virsh pool-define-as vmdisk --type dir --target /data/vmfs 3.创建已定义的存 ...

  9. [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化

    KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...

随机推荐

  1. Sentry & React

    Sentry & React https://docs.sentry.io/platforms/javascript/guides/react/ https://docs.sentry.io/ ...

  2. MBP 屏幕分辨率 All In One

    MBP 屏幕分辨率 All In One screen size bug https://stackoverflow.com/questions/65462643/how-to-get-the-rea ...

  3. HTML5 动效

    HTML5 动效 motion graphics toolbelt for the web https://github.com/xgqfrms/mojs A collection of loadin ...

  4. React Hooks: useRef All In One

    React Hooks: useRef All In One useRef https://reactjs.org/docs/hooks-reference.html#useref refs xgqf ...

  5. how to share UI components

    how to share UI components The shared component cloud · Bit https://bit.dev/ A better way to build w ...

  6. ws & websocket & 掉线重连

    ws & websocket & 掉线重连 reconnecting websocket https://github.com/joewalnes/reconnecting-webso ...

  7. JS实现点击加载更多效果

    适用场景:后端直接把所有的文章都给你调出来了,但是领导又让做点击加载更多效果...(宝宝心里苦啊)   点击加载更多效果:         第一个和第二个参数分别是btn和ul的DOM(必填)     ...

  8. NGK——更好的数据与网络

    对于NGK而言,帐本是不可或缺的,所以NGK有独立的共识层,共识层有单独的参与的共识节点.而其余计算都丢给其他的计算资源计算,共识层汇总一个正确的结果即可. 进行大量计算过程的资源是另一种节点,在NG ...

  9. Python元组拆包捡到8倍镜快准狠

    元组拆包 元组是不可变列表,列表是通过索引取值的,元组也是: tuple_test = (1, 2, 3) a = tuple_test[0] b = tuple_test[1] c = tuple_ ...

  10. ImageCombiner - Java服务端图片合成的工具包,好用!

    自己的第一个也是唯一一个开源项目,因为平时比较懒,很少做宣传,今天刚好突破160个star,发到园子里推荐给大家,算是庆祝一下,哈. 项目地址:https://gitee.com/opensource ...