kvm虚拟化技术

目录

一.kvm架构

二.虚拟机环境准备

三.kvm软件安装

四.GuestOS安装

4.1图形模式安装

4.2命令模式安装

4.3通过飞机驾驶舱安装和管理虚拟机

五.KVM存储

六.KVM的基本管理

七.虚拟机克隆(虚拟机处于关机状态)

7.1图形界面实现

7.2通过字符终端实现

八.快照

8.1图形界面实现

8.2通过命令实现

九.KVM网络管理


一.kvm架构

         KVM 是一个基于 Linux 内核的虚拟化解决方案,由 Avi Kivity 开发并归 Red Hat 拥有。它在 Linux 内核 2.6.20 版本中首次成为主流 hypervisor 的一部分。KVM 支持 x86 架构以及 PowerPC 和 IA64。它最近还添加了对 SMP 主机和来宾的支持,以及企业级功能,如活动迁移。KVM 作为内核模块实现,因此只需加载该模块即可成为 hypervisor。它提供完整的虚拟化,包括对硬件虚拟化指令集的支持,如 Intel VT 和 AMD-V。KVM 还支持准虚拟化来宾操作系统,包括 Linux 和 Windows。KVM 通过两个组件实现,一个是可加载的内核模块,另一个是修改版的 QEMU,用于 PC 平台模拟。来宾操作系统通过 /dev/KVM 设备进行映射,并具有自己的虚拟地址空间,映射到主机内核的物理地址空间。KVM 在 Linux 环境中以主机的方式运行,并且可以支持大量的来宾操作系统,只要底层硬件虚拟化支持。

二.虚拟机环境准备

将虚拟机的内存大小调整为四分之三的主机内存大小12G:

调整处理器参数:

三.kvm软件安装

基于CentOS7的安装:

1.关闭防火墙和selinux

setenforce 0

systemctl stop firewalld

2.查看CPU是否支持VT

cat /proc/cpuinfo | grep -E 'vmx|svm'
 

3.卸载存在的kvm环境

yum remove  `rpm -qa | egrep 'qemu|virt|kvm'` -y
rm -rf /var/lib/libvirt /etc/libvirt 

4.安装kvm环境

yum install *qemu* *virt* librbd1-devel -y

CentOS8安装:

yum install *qemu* *virt* librbd1.x86_64 -y


5.启动服务

 systemctl  start libvirtd
 

6.查看KVM模块加载

[root@bogon ~]# lsmod | grep kvm
kvm_intel             348160  0
kvm                   970752  1 kvm_intel
irqbypass              16384  1 kvm
 

错误1:查看KVM模块加载,没有模块显示

[root@bogon ~]# lsmod | grep kvm

解决:

重新加载模块:

[root@bogon ~]#modprobe kvm

重启服务生效:

[root@bogon ~]#systemctl restart libvirtd

错误2: libvirtd服务器起不来

解决:

#查看系统日志:

[root@bogon yum.repos.d]# tail -f /var/log/messages 

5月 08 10:52:17 bogon libvirtd[70586]: 操作失败: 网络 'default' 已有 uuid fdf8ed3d-65f7-4965-9124-e78d4dc0ad03

删除网络 default:
[root@bogon yum.repos.d]# virsh net-destroy default

重启服务:

[root@bogon ~]# sudo systemctl start libvirtd

[root@bogon ~]# systemctl enable libvirtd
[root@bogon yum.repos.d]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2024-05-08 11:06:43 CST; 6s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 70892 (libvirtd)
    Tasks: 17 (limit: 32768)
   Memory: 12.3M
   CGroup: /system.slice/libvirtd.service
           └─70892 /usr/sbin/libvirtd --timeout 120

5月 08 11:06:43 bogon systemd[1]: Starting Virtualization daemon...
5月 08 11:06:43 bogon systemd[1]: Started Virtualization daemon.
 

四.GuestOS安装

4.1图形模式安装

将iso镜像上传到linux环境中:

注意:这里应该手动输入指令,否则会提示

[root@bogon ~]# virt-manager 
bash: virt-manager : command not found...
 

[root@bogon ~]# virt-manager 

其余步骤跟安装虚拟机一样

错误1:

解决:

这里的参数调大,最好3G以上

4.2命令模式安装

1.虚拟机配置文件

[root@bogon ~]# ls /etc/libvirt/qemu
generic.xml  networks

2.存储虚拟机的介质

[root@bogon ~]# ls /var/lib/libvirt/images/
generic.qcow2

根据配置文件创建虚拟机:

1.添加配置文件:

[root@bogon ~]# cd /etc/libvirt/qemu/
[root@bogon qemu]# ls
generic.xml  networks
[root@bogon qemu]# cp generic.xml generic1.xml 

2.添加磁盘镜像文件:

[root@bogon qemu]# cd /var/lib/libvirt/images/
[root@bogon images]# ls
generic.qcow2
[root@bogon images]# cp generic.qcow2 generic1.qcow2 

3.修改配置文件的内容

[root@bogon ~]# vim /etc/libvirt/qemu/generic1.xml 
<name>generic1</name>
<uuid>5f2db9ba-4216-4e58-982a-7dec7be688ae</uuid>
<memory unit='KiB'>1024000</memory>
<currentMemory unit='KiB'>1024000</currentMemory>
<vcpu placement='static'>2</vcpu>
<source file='/var/lib/libvirt/images/generic1.qcow2'/>
<mac address='52:54:00:e0:7d:6f'/>

4.创建虚拟机

[root@bogon ~]# virsh define /etc/libvirt/qemu/generic1.xml 
Domain generic1 defined from /etc/libvirt/qemu/generic1.xml

5.重启服务

[root@bogon ~]# systemctl restart libvirtd

6宿主机开启路由转发

[root@bogon ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

7.测试

[root@bogon ~]# virt-manager

开启新创建的虚拟机:

错误1:

[root@bogon images]# cp generic.qcow2 generic1.qcow2 
cp: error writing ‘generic1.qcow2’: No space left on device
cp: failed to extend ‘generic1.qcow2’: No space left on device

解决:

这是由于内存空间不足导致的,我们除去一些内存过大的文件即可

[root@bogon ~]# rm -rf CentOS-7-x86_64-DVD-2009.iso

4.3通过飞机驾驶舱安装和管理虚拟机


[root@bogon ~]# yum install cockpit -y
[root@bogon ~]# systemctl start cockpit

浏览器访问:

服务器地址:9090

五.KVM存储

概念

        存储池:KVM中用来存储磁盘镜像的目录

默认存储池:

                        /var/lib/libvirt/images/
 

1.存储池管理

1.创建基于文件夹的存储池

[root@localhost ~]# mkdir -p /data/vmfs
 

2.定义存储池与其目录

[root@localhost ~]# virsh pool-define-as vmdisk --type dir --target /data/vmfs/
Pool vmdisk defined

3.创建已定义的存储池

(1)创建已定义的存储池

[root@localhost ~]# virsh pool-build vmdisk 
Pool vmdisk built
 

(2)查看已定义的存储池

[root@localhost ~]# virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       
 root                 active     yes       
 vmdisk               inactive   no    

4.激活并自动启动已定义的存储池

[root@localhost ~]# virsh pool-start vmdisk 
Pool vmdisk started

[root@localhost ~]# virsh pool-autostart vmdisk 
Pool vmdisk marked as autostarted
 

5.在存储池中创建虚拟机存储卷(虚拟磁盘文件)

[root@localhost ~]# virsh vol-create-as vmdisk oe01.qcow2 2G --format qcow2
Vol oe01.qcow2 created

6.存储池的相关管理命令

(1)在存储池中删除虚拟机存储卷

[root@localhost ~]# virsh vol-delete --pool vmdisk oe01.qcow2
Vol oe01.qcow2 deleted
 

(2)取消激活存储池

[root@localhost ~]# virsh pool-destroy vmdisk 
Pool vmdisk destroyed

(3)删除存储池定义的目录

[root@localhost ~]# virsh pool-delete vmdisk 
Pool vmdisk deleted

(4)取消定义存储池

[root@localhost ~]# virsh pool-undefine vmdisk 
Pool vmdisk has been undefined

7.KVM中的磁盘格式

raw:

        原始格式,性能最好

qcow2:

                性能不如raw,raw不支持快照,qcow2支持快照

        

什么叫写时拷贝:

        raw立刻分配空间

        qcow2只在用的时候,才会分配空间

使用场景:

需要快照用qcow2,不需要则使用raw

8.创建磁盘文件

#qcow2格式:

[root@localhost ~]# qemu-img create -f qcow2 test.qcow2 1G

#raw格式:
[root@localhost ~]# qemu-img create -f raw test1.raw 1G

#查看创建的虚拟磁盘文件:
[root@localhost ~]# qemu-img info test.qcow2 
 

9.挂载磁盘

目的:当虚拟机无法启动时,通过挂载虚拟机内部的文件系统到宿主机以便恢复启动

                

查看磁盘镜像的分区信息:

[root@localhost qemu]# virt-df -h -d generic
Filesystem                                Size       Used  Available  Use%
generic:/dev/sda1                        1014M       105M       909M   11%
generic:/dev/centos_bogon/root            2.6G       1.2G       1.4G   47%
 

挂载磁盘镜像分区:

[root@localhost qemu]# guestmount -d generic -m /dev/centos_bogon/root --rw /mnt

取消挂载:

[root@localhost qemu]# guestunmount /mnt
 

查看挂载到/mnt下的文件:

[root@bogon ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  5.9G     0  5.9G   0% /dev
tmpfs                   tmpfs     5.9G     0  5.9G   0% /dev/shm
tmpfs                   tmpfs     5.9G   13M  5.9G   1% /run
tmpfs                   tmpfs     5.9G     0  5.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   14G  3.1G  82% /
/dev/sda1               xfs      1014M  186M  829M  19% /boot
tmpfs                   tmpfs     1.2G   48K  1.2G   1% /run/user/0
/dev/sr0                iso9660   4.4G  4.4G     0 100% /run/media/root/CentOS 7 x86_64
/dev/fuse               fuse      2.6G  1.3G  1.4G  48% /mnt
 

六.KVM的基本管理

查看虚拟机:

[root@bogon ~]# virsh list        #查看正在运行的虚拟机
 Id    Name                           State
----------------------------------------------------
 5     guestfs-szq3g067krjy17b6       running

[root@bogon ~]# virsh list --all        #查看所有虚拟机
 Id    Name                           State
----------------------------------------------------
 5     guestfs-szq3g067krjy17b6       running
 -     generic                        shut off
 -     generic1                       shut off

查看虚拟机的配置文件(了解):

[root@bogon ~]# virsh dumpxml generic
 

将generic的配置文件保存到generic1中(了解):

  [root@bogon ~]# virsh dumpxml generic > /etc/libvirt/qemu/generic1.xml
 

修改generic的配置文件(了解):

[root@bogon ~]# virsh edit generic
 

启动虚拟机:


[root@bogon ~]# virsh start generic
Domain generic started
 

暂停虚拟机:

[root@bogon ~]# virsh suspend generic 
Domain generic suspended
 

恢复虚拟机:

[root@bogon ~]# virsh resume generic 
Domain generic resumed
 

关闭虚拟机:

[root@bogon ~]# virsh shutdown generic 
Domain generic is being shutdown

重启虚拟机:

[root@bogon ~]# virsh reboot generic
Domain generic is being rebooted
 

重置虚拟机(速度上高于reboot):

[root@bogon ~]# virsh reset generic 
Domain generic was reset
 

删除虚拟机:

[root@bogon ~]# virsh undefine generic 
Domain generic has been undefined
注意:必须在关机状态下才能删除

虚拟机开机自动启动:

[root@bogon ~]# virsh autostart generic1 
Domain generic1 marked as autostarted
 

取消开机自动启动:


[root@bogon ~]# virsh autostart --disable generic1 
Domain generic1 unmarked as autostarted
 

查看开机启动的虚拟机:

[root@bogon ~]# virsh list --all --autostart 
 Id    Name                           State
----------------------------------------------------
 

七.虚拟机克隆(虚拟机处于关机状态)

7.1图形界面实现

7.2通过字符终端实现

[root@bogon ~]# virt-clone -o generic1 --auto-clone
-o:指定要克隆的对象

[root@bogon ~]# virt-clone -o generic1  -n generic2 --auto-clone
-n:指定克隆后的虚拟机名称

八.快照

8.1图形界面实现

8.2通过命令实现

创建快照:

[root@bogon ~]# virsh snapshot-create-as generic generic.snap
Domain snapshot generic.snap created
 

查看虚拟机创建的快照:

[root@bogon ~]# virsh snapshot-list generic 
 Name                 Creation Time             State
------------------------------------------------------------
 generic.snap         2024-05-16 12:43:58 +0800 running
 snapshot1            2024-05-15 21:59:12 +0800 shutoff
 

删除虚拟机快照:

[root@bogon ~]# virsh snapshot-delete --snapshotname generic.snap generic 
Domain snapshot generic.snap deleted
 

九.KVM网络管理

网络分类:

nat:支持主机和虚拟机互访,虚拟机可以访问外网,但外网访问不了虚拟机

isolated:隔离网络模式,与VMware中的仅主机模式类似,与外界网络隔离

桥接口:虚拟交换机上规划的一个接口,将其与物理网卡绑定在一起

NAT网络拓扑:

isolated隔开拓扑:

桥接网络拓扑:

显示接口:

[root@bogon ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
virbr0        8000.525400970e01    yes        virbr0-nic
                                                                     vnet0
 

从交换机上把vnet网卡删除:

[root@bogon ~]# brctl delif virbr0 vnet0
 

添加vnet网卡到交换机上:

[root@bogon ~]# brctl addif virbr0 vnet0
 

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它是在Linux内核之上构建的虚拟化基础设施,可以将一台物理服务器分割成多个虚拟机。以下是KVM虚拟化技术的安装部署步骤: 1. 安装KVM软件包和相关工具 首先,需要安装KVM软件包和相关工具,可以使用以下命令在CentOS上安装: ``` yum install -y qemu-kvm libvirt virt-install bridge-utils ``` 2. 配置网络桥接 在使用KVM创建虚拟机时,需要使用桥接方式将虚拟机连接到物理网络中。可以使用以下命令创建一个名为“br0”的网桥: ``` nmcli connection add type bridge autoconnect yes con-name br0 ifname br0 nmcli connection modify br0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual nmcli connection modify br0 ipv4.dns "8.8.8.8, 8.8.4.4" nmcli connection modify br0 bridge.stp no systemctl restart network ``` 3. 启动libvirtd服务 KVM使用libvirt管理虚拟化资源,因此需要启动libvirtd服务。可以使用以下命令启动服务: ``` systemctl start libvirtd systemctl enable libvirtd ``` 4. 创建虚拟机 安装和配置完KVM后,可以使用virt-install命令创建虚拟机,例如: ``` virt-install --name testvm --ram 2048 --vcpus=2 --disk path=/var/lib/libvirt/images/testvm.img,size=20 --network bridge=br0,model=virtio --graphics vnc --console pty,target_type=serial ``` 这将创建一个名为“testvm”的虚拟机,分配2个CPU和2GB的内存,使用20GB的磁盘空间,并连接到名为“br0”的网络桥。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值