• KVM


    KVM

    目前虚拟化产品

    • 仿真虚拟化(性能最低): VMware, Virtual Box, QEMU(能够模拟整台计算机, 效率很低)
    • 半虚拟化(性能中): Xen(需要修改内核, 在rhel6中使用rpm -ivh kernel-xen-xxx.rpm安装一个新的内核, 注意: Xen只支持和物理机系统一样的操作系统, 因为他是半虚拟化的)
    • 全虚拟化(硬件虚拟化, 性能最高): KVM(Kernel-based Virtual Machine, 它摆脱了Xen不能运行Windows的缺点, KVM可以运行Windows, 要想使用KVM, CPU需要支持Intel VT 或者 AMD V技术), docker

    查看是否只是KVM

    • cat /proc/cpuinfo | grep vmx
    • cat /proc/cpuinfo | grep svm

    KVM提出的新模式

    • 在传统的Linux操作系统上有用户模式与内核模式, 在KVM中增加了第三种模式: 客户模式(有自己的内核和用户模式)

    安装KVM

    • yum install -y qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python tigervnc virt-viewer
    
    1. qemu-kvm: kvm主程序, KVM虚拟化模块
    2. virt-manager: KVM图形管理工具
    3. libvirt: 虚拟化服务
    4. libguestfs-tools: 虚拟机的系统管理工具
    5. virt-install: 安装虚拟机的使用工具
    6. libvirt-python: Python调用libvirt虚拟化服务的API接口库文件
    7. tigervnc: VNC远程桌面客户端
    8. virt-viewer: KVM启动图形界面需要
    
    • systemctl start libvirtd # 启动服务
    • ls mod | grep kvm # 查看是否加载了KVM模块
    • virt-manager # 运行KVM管理器

    配置桥接

    • 配置KVM网络桥接br0, br0就相当于一个二层交换机, 我们需要将eth0物理网卡添加到br0上, 所有计算机的虚拟网卡都在br0上, br0上又有eth0物理网卡, 就可以通过eth0联网了

      • yum install bridge-utils -y
      • cd /etc/sysconfig/network-scripts
      • cp ifconfig-ens33 ifconfig-ens33.bak
      • 编辑ifconfig-ens33
        • 去掉与IPV4有关的条目: IPADDR, NETMASK, GATEWAY, DNS, 为什么? -> 因为创建了br0设备, 计算机就是通过br0通信的, 需要将ens33上的IPV4地址放到br0上, 接下来只要在ens33中告诉计算机ens33的被添加到br0上即可
        • 添加BRIDGE="br0"告诉计算机(bridge-utils工具)ens33被添加到了br0上, IPV4的地址到br0上找即可
      • 创建ifconfig-br0
      
      DEVICE="br0"
      NM_CONTROLLED="yes"
      ONBOOT="yes"
      TYPE="Bridge"
      BOOTPROTO=none
      IPADDR=ens33的ip
      NETMASK=ens33的掩码
      GATEWAY=ens33的网关
      DNS1=ens33指定的DNS
      
      • 重启网络服务: service network restart, 不要使用systemctl restart network, 可能会有问题, 以后凡是与network有关的使用service
      • ifconfig查看是否新添加了br0接口, 发现ens33的ip跑到了br0接口上, br0与ens33的mac地址是一样的, 因为br0底层还是走ens33物理网卡

    KVM文件

    1. KVM会把创建的虚拟机安装到/var/lib/libvirt/images目录下
    2. 配置文件在/etc/libvirt/qemu

    工具

    • virsh

      • list: 查看当前启动了几个虚拟机
      • start: 启动虚拟机
      • shutdown: 关闭虚拟机?
        • CentOS6上shutdown无效解决方案
          • 在安装好的KVM的Linux虚拟机中安装并启动acpid服务, virsh shutdown命令发送acpi指令来控制虚拟机的电源, 而KVM虚拟机最小化安装的CentOS6默认是没有安装acpi服务的, CentOS7的最小化安装是有的
          • 在KVM虚拟机中的CentOS6中配置acpid的yum源, yum install acpid -y
      • autostart: 开机自启动
      • autostart --disable: 取消开机自动启动
      • suspend KVMName: 挂起一个虚拟机
      • resume KVMName: 恢复一个挂起的虚拟机
      • snapshot-create-as KVM虚拟机名 快照名:
        • 在开机的状态下创建快照会慢很多, 因为需要把内存中的内容写到磁盘中, 记录虚拟机当前的状态; 而关机状态下创建快照没有这个过程, 会很快
      • snapshot-list KVM虚拟名: 列出KVM虚拟机有什么快照
      • snapshot-current KVM虚拟机: 查看当前快照
      • snapshot-revert KVMName snapshotName: 恢复快照
      • domstate KVMName: 虚拟机状态
      • snapshot-delete KVMName snapshotName: 删除
    • virt-clone -> KVM虚拟机克隆

      • -n: new

      • -o: old

      • -f: path

      • virt-clone -o oldFileName -n newFileName -f newFileNamePath

      • 注意:

        • 克隆出来的虚拟机的mac地址与被克隆的是不同的, 但是里面的OS的mac地址两者是一样的, 这就导致了克隆出来的虚拟机上的mac地址与os的mac不一致, 在克隆之后需要修改os中的mac地址; 但是在CentOS7下不需要

    虚拟机镜像

    • raw格式: 可以很容易从raw转为其他格式, raw在格式转换时作为中间格式, raw就是dd命令产生的
    • qcow2格式: 支持快照, 支持zlib磁盘压缩, 支持AES加密, 支持创建image镜像
    • vmdk格式: VMware使用的
    • qemu-img info filepath # 查看文件格式

    虚拟机镜像格式的装换

    • qemu-img convert -f [pat] -O [pat] path1 path2

      • -f: 源文件格式
      • -O: 目标文件格式
      • path1是源文件, path2是目标文件
      • qcow2与vmdk可以直接装换
    • 修改虚拟机配置文件

      • virsh edit KVMName, 不要使用vim直接编辑/var/lib/libvirt/qemu目录下的配置文件, 如果使用vim修改了, 还需要重启服务

    字符安装虚拟机

    • virt-install

      • -n NAME
      • -r RAM
      • --vcpus=VCPUS
      • --disk path=, size=几个G
      • -c CDROM
      • --network bridge=br0
      • --graphics vnc
      • --location=yum源, 可选
      • -x "ks=url", 执行ks.cfg文件, 与--location配置无人值守安装
    • 使用virt-viewer或者vncviwer 127.0.0.1连接

  • 相关阅读:
    OpenJudge 2753 菲波那契数列
    Jmeter的介绍、安装及汉化
    spring集成Java性能监控调优工具-Javamelody
    js-xlsx + handsontable + echarts实现excel上传编辑然后显示成图表
    spring mybatis设置SQL语句打印
    Ribbon负载均衡策略详解
    JVM内存结构、Java内存模型以及Java对象模型之间的区别
    Java的自动拆装箱
    elasticsearch集群管理指南
    ElasticSearch最全分词器比较及使用方法
  • 原文地址:https://www.cnblogs.com/megachen/p/10343876.html
Copyright © 2020-2023  润新知