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. Ubuntu 18.04 + pip3 install virtualenvwrapper 找不到virtualenvwrapper.sh

    Reference Ubuntu 18.04 只自带python3.6.5, 因此不想装python2了, 但通过apt install 装virtualenvwrapper时发现必须得装python ...

  2. super fast sort algorithm in js

    super fast sort algorithm in js sort algorithm Promise.race (return the fast one) Async / Await // c ...

  3. js group objects in an array

    js group objects in an array js group objects in an array var groupBy = function(xs, key) { return x ...

  4. Taro UI

    Taro UI 一套基于 Taro 框架开发的多端 UI 组件库 https://github.com/NervJS/taro-ui-demo https://taro-ui.aotu.io/#/do ...

  5. css var & auto width css triangle

    css var & auto width css triangle https://codepen.io/xgqfrms/pen/PooeEbd css var https://codepen ...

  6. js in depth & prototype & __proto__

    js in depth & prototype & proto 实例的 proto 与 父类的 prototype,同时指向 父类的构造函数: https://hackernoon.c ...

  7. js showOpenFilePicker showSaveFilePicker showDirectoryPicker API

    选择文件,获取文件句柄 btn.addEventListener("click", async (e) => { try { const hFiles = await win ...

  8. 华盛顿金融等多家媒体报道VAST超高价值!

    近日,华盛顿金融时报联合洛杉矶商业报等多家媒体就即将推出的VAST进行了专题报道. 华盛顿金融时报专栏记者福吉瑞斯问到,之前有报道称NGK官方将全力支持算力市场,那么现在官方有什么计划可以透露一下吗? ...

  9. 精密进近OCH的计算

    一.计算步骤 以I类精密进近为例,运行标准的制定大致分为以下几个步骤: 1)确定精密航段的超高障碍物. 2)计算当量高 3)计算高度损失 4)当量高与高度损失相加得到超障高OCH 5)对复飞段障碍物进 ...

  10. 内存包装类 Memory 和 Span 相关类型

    1. 前言 2. 简介 3. Memory<T>和Span<T>使用准则 3.1. 所有者, 消费者和生命周期管理 3.2. Memory<T> 和所有者/消费者模 ...