kvm虚拟化技术

本文详细介绍了KVM(Kernel-based Virtual Machine)虚拟化技术,包括检查CPU是否支持虚拟化、如何启用KVM模块、配置网桥模式、安装及管理KVM虚拟化平台的必备软件。此外,还探讨了KVM虚拟机的组成,如内核模块、QEMU仿真、LIBVIRT管理程序等,并列举了一系列使用virsh命令管理虚拟机的实例。
摘要由CSDN通过智能技术生成
前言

kvm是一种虚拟化技术

使用
概念

kvm是linux内核的模块,它需要CPU支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存的相关技术如Intel的EPT和AMD的RVI,是底层虚拟化内核模块。

  • 检查cpu是否支持虚拟化
]# grep vmx /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm arat pln pts md_clear spec_ctrl intel_stibp flush_l1d
... ...

如果有vmx信息输出,就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机

  • 确保BIOS里开启虚拟化功能,即查看是否加载KVM模块
]# lsmod | grep kvm
kvm_intel             188688  0 
kvm                   636969  1 kvm_intel
irqbypass              13503  1 kvm

如果没有加载,运行以下命令:

]# modprobe kvm
]# modprobe kvm-intel

内核模块导出了一个名为/dev/kvm的设备,这个设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间

]# ll /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 10月 10 14:36 /dev/kvm
  • 配置kvm的网桥模式-桥接网络
yum -y install bridge-utils
systemctl restart network
cd /etc/sysconfig/network-scripts/

编辑br0网桥模式

]# cat ifcfg-br0
TYPE="Bridge"						# 改为Bridge
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="br0"
#UUID="72671f68-e070-4d26-963d-8b65fbc88fb3"	# 此行注释
DEVICE="br0"																# 改为br0
ONBOOT="yes"
]# cat ifcfg-enp3s0 
TYPE="Ethernet"
BRIDGE="br0"															# 添加此行内容
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp3s0"
UUID="72671f68-e070-4d26-963d-8b65fbc88fb3"
DEVICE="enp3s0"
ONBOOT="yes"

重启网卡服务

systemctl restart network

查看网卡

]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.bcee7be0923b	no		enp3s0
							vnet0
							vnet1
							vnet2
virbr0		8000.52540011750e	yes		virbr0-nic
安装kvm虚拟化服务器平台必备软件
  • 1.qemu-kvm:
    为kvm提供底层仿真支持

  • 2.libvirt-daemon:
    libvirtd守护进程,管理虚拟机

  • 3.libvirt-client:
    用户端软件,提供客户端管理命令

  • 4.libvirt-daemon-driver-qemu:
    libvirtd连接qemu的驱动

  • 注:
    1.QEMU是一个虚拟化的仿真工具,通过ioctl与内核kvm的交互完成对硬件的虚拟化支持
    2.Libvirt是一个虚拟化管理的接口和工具,提供用户端程序virsh,virt-install,virt-manager,virt-view与用户交互

kvm虚拟化平台安装
yum -y install qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu virt-manager
systemctl start libvirtd
systemctl enable libvirtd
kvm安装虚拟化服务平台可选软件
  • 1.virt-install:
    系统安装工具
  • 2.virt-manager:
    图形管理工具
  • 3.virt-v2v:
    虚拟机迁移工具
  • 4.virt-p2v:
    物理机迁移工具
kvm虚拟机的组成
  • 1.内核虚拟化模块(KVM)
  • 2.系统设备仿真(QEMU)
  • 3.虚拟机管理程序(LIBVIRT)
  • 4.虚拟机配置声明文件,一个XML文件,位置/etc/libvirt/qemu/
  • 5.虚拟机的硬盘,一个磁盘镜像文件,位置/var/lib/libvirt/images/
kvm管理各虚拟机的命令接口工具virsh
  • 格式
    virsh 控制指令 [虚拟机名称] [参数]

进入virsh模式:直接在终端输入virsh即可进入virsh交互模式,如下

[root@localhost ~]# virsh 
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # 
virsh工具的使用
  • 1.查看KVM节点(服务器)信息:
    virsh nodeinfo
[root@localhost ~]# virsh nodeinfo
CPU model:           x86_64
CPU(s):              4
CPU frequency:       3699 MHz
CPU socket(s):       1
Core(s) per socket:  2
Thread(s) per core:  2
NUMA cell(s):        1
Memory size:         16300764 KiB
  • 2.列出虚拟机:
    virsh list [–all]
[root@localhost ~]# virsh list
 Id    Name                           State
----------------------------------------------------

[root@localhost ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
  • 3.列出虚拟网络:
    virsh net-list [–all]
[root@localhost ~]# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

[root@localhost ~]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes
  • 4.查看指定虚拟机的信息:
    virsh dominfo 虚拟机名称

  • 5.运行|重启|关闭指定的虚拟机:
    virsh start|reboot|shutdown 虚拟机名称

  • 6.强制关闭指定的虚拟机:
    virsh destroy 虚拟机名称

  • 7.将指定的虚拟机设为开机自动运行:
    virsh autostart 虚拟机名称

  • 8.将指定的虚拟机设为开机不自动运行:
    virsh autostart --disable 虚拟机名称

  • 9.连接虚拟机:
    virsh console 虚拟机名称
    退出:ctrl+]

  • 10.管理虚拟交换机
    virsh net-edit 虚拟路由名

  • 11.连接本地:
    virsh connect qemu:///system(直接输入virsh即可,默认)

  • 12.连接远程:
    virsh connect qemu+ssh://user@ip.xx.xx.xx:port/system
    eg:virsh -c qemu+ssh://172.40.61.123/system
    使用virt-manager工具连接远程需要先使用ssh免密码登陆,如没有则需要安装python或ssh相关模块

常用镜像盘类型

虚拟机的磁盘镜像文件格式

  • 1.RAW:
    I/O效率高,占用空间大
  • 2.QCOW:
    KVM默认,I/O效率极高,占用空间小,支持压缩、后端盘复用、快照
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值