kvm虚拟化入门 原

时间:2022-06-19
本文章向大家介绍kvm虚拟化入门 原,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

kvm简介

  • kvm是以色列初创公司Qumaranet开发,2008年9月被RedHat收购;
  • kvm是Linux内核的一个模块,它把Linux内核变成一个hypervisor;
  • kvm是完全开源的,RedHat基于kvm的虚拟化解决方案叫做RHEV (收费);
  • kvm在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得kvm能使用Linux内核的已有功能;
  • 只有一个kvm内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样;
  • QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所有的硬件,但性能不强;
  • kvm基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM;
  • 磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来的;
  • KVM和QEMU-KVM通信是通过/dev/kvm实现的;
  • libvirt是用来管理KVM虚拟机的API,其命令为virsh

Centos7上安装KVM

  • 前提是CPU支持虚拟化;
  • 安装虚拟化组件 $ yum install -y virt-* libvirt bridge-utils qemu-img

配置网卡

网络连接类型:nat模式、桥接模式

选用桥接模式,需要先配置一块虚拟(桥接)网卡:

$ cd /etc/sysconfig/network-scripts/
$ cp ifcfg-ens32 ifcfg-br0

$ vim ifcfg-br0 
TYPE=Bridge
BOOTPROTO=none
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=172.16.180.131  # 注意此处使用原ens32的ip地址
NETMASK=255.255.255.0
PREFIX=24
GATEWAY=172.16.180.2
DNS1=119.29.29.29
DNS2=114.114.114.114

$ vim ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=none
NAME=ens32
DEVICE=ens32
ONBOOT=yes
BRIDGE=br0  # 指定桥接网卡

启动kvm服务

  • 检查kvm模块是否加载 $ lsmod |grep kvm kvm_intel 183621 0 kvm 586948 1 kvm_intel irqbypass 13503 1 kvm
  • 启动libvirtd服务 $ systemctl start libvirtd
  • 查看桥接网卡信息 $ brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29a20bcb no ens32 virbr0 8000.52540036fd27 yes virbr0-nic

创建虚拟机&&安装centos7

$ virt-install --name vm01 --memory 512,maxmemory=1024 --vcpus 1,maxvcpus=2 --os-type linux --os-variant rhel7 --location /tmp/CentOS-7-x86_64-Minimal-1810.iso --disk /kvm_data/vm01.img,size=10 --network bridge=br0 --graphics none --console pty,target_type=serial --extra-args "console=tty0 console=ttyS0"

参数解析:
--name:要创建的虚拟主机名称
--memory:虚拟内存大小,maxmemory表示最大内存,单位M
--vcpus:虚拟CPU个数,最大为2核
--os-variant:系统类型
--location:系统镜像位置
--disk:指定存储的各种选项
--network:配置客户机网络接口
--graphics:配置客户机显示设
--console:配置文本控制台连接主机与客户机

开始安装后,根据提示信息配置语音、时区、安装位置、root密码等,具体如下:

================================================================================
================================================================================
Installation

 1) [x] Language settings                 2) [!] Time settings
        (English (United States))                (Timezone is not set.)
 3) [!] Installation source               4) [!] Software selection
        (Processing...)                          (Processing...)
 5) [!] Installation Destination          6) [x] Kdump
        (No disks selected)                      (Kdump is enabled)
 7) [ ] Network configuration             8) [!] Root password
        (Not connected)                          (Password is not set.)
 9) [!] User creation
        (No user will be created)
  Please make your choice from above ['q' to quit | 'b' to begin installation |
  'r' to refresh]: 1
================================================================================
================================================================================

安装完成后有如下提示:

Performing post-installation setup tasks
.

Configuring installed system
.
Writing network configuration
.
Creating users
.
Configuring addons
.
Generating initramfs
.
Running post-installation scripts
.
        Use of this product is subject to the license agreement found at /usr/share/centos-release/EULA

        Installation complete.  Press return to quit
  • 按 "回车" 会启动创建好的虚拟机
  • 按 "^]" 会退出安装过程

管理虚拟机

  • 查看虚拟机 $ virsh list --all Id 名称 状态 ---------------------------------------------------- 2 vm01 running # --all:查看所有虚拟机,包括为启动的,不加该参数只显示已经启动的虚拟机
  • 启动某虚拟机 $ virsh start vm01 说明: 一个虚拟机只能登陆一个virsh用户
  • 访问某虚拟机 $ virsh console vm01
  • 设置网络:和物理服务器安装系统是配置方式一致,配置完网络后可以通过终端登陆!
  • 退出虚拟机 $ exit 如果是在安装完系统后直接通过"回车"进入的虚拟机,在执行 exit 退出终端后,还需要执行 "^]" 退出系统登陆界面。
  • 其他管理命令: # 关闭虚拟机 $ virsh shutdown vm01 # 启动虚拟机 $ virsh start vm01 # 强制停止虚拟机,类似于stop $ virsh destroy vm01 # 彻底销毁虚拟机,会强制删除虚拟机配置文件,再执行'virsh list --all'就看不到该虚拟机了 $ virsh undefine vm01 # 查看虚拟机配置文件 $ ls /etc/libvirt/qemu/ # 设置虚拟机随宿主机开机启动 $ virsh autostart vm01 # 取消开机自启 $ virsh autostart --disable vm01 # 挂起 $ virsh suspend vm01 # 恢复 $ virsh resume vm01 # 更多管理命令,可查看 $ virsh --help

(adsbygoogle = window.adsbygoogle || []).push({});