centos7下kvm安装和使用

kvm简介

KVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。 

kvm.ko(内核模块),只用于管理虚拟 CPU 和内存。IO 的虚拟化,就交给 Linux 内核和qemu来实现。
Libvirt:是 KVM 的管理工具。Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。OpenStack 底层也使用 Libvirt。
Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh
(1)libvirtd是服务程序,接收和处理 API 请求;
(2)API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具,后面我们也会介绍;
(3)virsh 是我们经常要用的 KVM 命令行工具,后面会有使用的示例。作为 KVM 和 OpenStack 的实施人员,virsh 和 virt-manager 是一定要会用的

CPU 的虚拟化技术可以将单 CPU 模拟多 CPU 并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

centos7下 kvm安装

1、安装qemu-kvm(用户态管理工具),libvirt(命令行管理工具),virt-install(安装kvm工具),bridge-utils(桥接设备管理工具)

yum install -y qemu-kvm libvirt virt-install bridge-utils

2、确保加载kvm模块
[root@localhost ~]# lsmod |grep kvm
kvm_intel             174841  0 
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
#如果没有加载,运行一下命令
[root@localhost ~]# modprobe kvm
[root@localhost ~]# modprobe kvm-intel

注意查看你的虚拟机架构支持的是amd还是intel  CPU 虚拟化透传
在宿主机启用 kvm_amd/kvm-intel 模块的嵌套虚拟化功能,并且使透传永久有效
  modprobe kvm-intel/modprobe kvm-amd

modprobe: ERROR: could not insert 'kvm_intel': Operation not supported

解决办法:看下是否开启CPU虚拟化,如果你是用VMware或者virtualbox,它们有各自的CPU虚拟化选项,勾上即可。如果是在物理机上,则需要进入bios了。

启动libvirtd服务

[root@localhost ~]# systemctl enable libvirtd
[root@localhost ~]# systemctl start  libvirtd
[root@localhost ~]# systemctl status  libvirtd 

配置kvm桥接模式

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@localhost network-scripts]# vi ifcfg-br0
NAME=br0
DEVICE=br0
ONBOOT=yes
NETBOOT=yes
IPV6INIT=no
BOOTPROTO=static
NM_CONTROLLED=no
TYPE=Bridge
IPADDR=10.12.104.250
NETMASK=255.255.0.0
GATEWAY=10.12.1.1
DNS1=8.8.8.8

[root@localhost network-scripts]# vi ifcfg-ens32 
NAME=ens33
DEVICE=ens33
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
BRIDGE=br0

查看网桥

[root@localhost ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c29d1267b    no        ens32
virbr0        8000.52540063d8f4    yes        virbr0-nic

删除virbr0

[root@localhost ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c29d1267b    no        ens32
virbr0        8000.52540063d8f4    yes        virbr0-nic
[root@localhost ~]# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

[root@localhost ~]# virsh net-destroy default
Network default destroyed

[root@localhost ~]# virsh net-undefine default
Network default has been undefined

[root@localhost ~]# systemctl restart libvirtd.service
[root@localhost ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c29d1267b    no        ens32

若使用virt-manager管理kvm
由于要用virt-manager图形化安装虚拟机,所以还需要安装桌面,这里只有安装步骤

[root@localhost ~]# yum grouplist
[root@localhost ~]# yum groupinstall "GNOME Desktop" -y

test.sh

grep -E "^[ \t]*export[ \t]+LANG[ \t]*=" /etc/profile&& y="yes" || y="no"
if [[ "$y" = "yes" ]]; then
sed -r -i -e '/^[ \t]*export[ \t]+LANG[ \t]*=/c\export LANG="zh_CN.UTF-8"' /etc/profile
else
echo 'export LANG="zh_CN.UTF-8"' >>/etc/profile
fi
source /etc/profile

提前将ISO系统镜像存放到服务器的一个目录里,比如/data/iso

[root@localhost ~]# mkdir -p /data/{iso,kvmstorage}
[root@localhost ~]# cd /data/iso/
[root@localhost iso]# ll
总用量 4217748
-rw-r--r-- 1 root root  950009856 11月 22 15:24 CentOS-7-x86_64-Minimal-1804.iso
-rw-r--r-- 1 root root 3368962048 3月  23 2012 cn_windows_server_2008_r2.iso

kvm常用命令
KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理

virsh list #在线VM
virsh list --all #所有VM
virsh start #开机
virsh shutdown #软关机
virsh destroy #强制关机
virsh dnmpxml vm_name > name.xml #配置备份,xml配置文件路径 /etc/libvirt/qemu
virsh undefine #删除vm,只是删除配置文件,磁盘文件还在;
virsh define name.xml #导入备份的xml配置
virsh edit vm_name #修改配置文件,带语法检查
virsh domrename oldname newname #重命名,在关机状态修改
virsh suspend #挂起,状态paused
virsh resume #解除挂起
virsh vncdisplayer #查看vnc端口号
virsh autostart name #开机自启动,原理配置软连接实现
virsh autostart --disable name #取消开机启动
virsh console name #ctrl + ] 切换退出,可不通过网络,底层console连接
raw:裸格式,占用空间大,不支持快照,性能好
qcow2:qemu copy on write(qemu写时复制,thin)支持快照,性能较raw稍差
qemu-img info #查看磁盘信息
qemu-img convert -f raw -O qcow2 name.raw name.qcow2 #转换格式,支持vmdk
virsh snapshot-create #快照
virsh snapshot-list #快照列表,快照直接放在虚拟磁盘中
virsh snapshot-delete vmname --snapshotname #删除快照,删除快照文件不会变小
virsh snapshot-revert vmname #还原快照

案例:

安装虚拟机

首先创建存储卷:qemu-img create -f qcow2 /data/kvmstorage/centos71.qcow2 40G

然后使用virt-install创建虚拟机:

virt-install  --name centos --ram 4096 \
  --disk /data/kvmstorage/centos7.qcow2,format=qcow2 \
  --network bridge=br0 \
  --graphics vnc,listen=0.0.0.0 --noautoconsole \
  --os-type=linux --os-variant=rhel7 \
  --location=/data/iso/CentOS-7-x86_64-Minimal-1908.iso

打开VNC Viewer--进行操作系统安装

 

安装完成后,可进行配置备份:virsh dumpxml centos11 > /data/kvmstorage/centos11.xml

对配置备份xml进行克隆同类型的操作系统

virt-clone --original-xml /data/kvmstorage/centos11.xml --name centos12 --file /data/kvmstorage/centos712.qcow2

另外可远程调用和查看:

因为ssh的不能访问 所以使用tcp进行对远程libvirtd进行连接访问(libvirtd 部署在远程)

修改文件vim /etc/sysconfig/libvirtd,用来启用tcp的端口
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"

修改文件vim /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none"

运行 libvirtd

service libvirtd restart

在客户机上安装yum install -y libvirt,就可以远程访问查看

virsh -c qemu+tcp://10.12.104.250/system list

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xianjie0318

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值