【kvm企业级虚拟化】之初级篇

目录

  • 一、kvm介绍
  • 二、kvm软件安装
  • 三、GuestOS安装
    • 第一种方式:图形化安装
    • 第二种方式:命令行模式安装
  • 四、GuestOS升级配置
  • 五、KVM存储
  • 六、磁盘格式
  • 七、创建磁盘文件
  • 八、KVM基本管理
  • 九、虚拟机克隆
  • 十、虚拟机快照
  • 十一、KVM网络管理
    • 1、kvm修改virbr0地址段:
    • 2、kvm虚拟机配置固定ip
    • 3、kvm新建一个虚拟网卡
    • 3、kvm虚拟机桥接网络

实验环境:redhat:9

一、kvm介绍

KVM(Kernel-based Virtual Machine)是一个基于 Linux 内核的开源虚拟化解决方案。它允许在同一台物理主机上运行多个虚拟机,每个虚拟机都可以运行自己的操作系统。KVM 利用了 Linux 内核中的虚拟化扩展(如 Intel VT-x 或 AMD-V 技术),使得它能够提供高性能的硬件辅助虚拟化。
kvm优势:

  • 高性能:KVM 利用硬件辅助虚拟化技术,因此能够提供接近原生性能的虚拟化体验。
  • 支持多种操作系统:KVM 可以运行各种不同类型的客户操作系统,包括 Linux、Windows、BSD 等。
  • 安全性:由于 KVM 是基于 Linux 内核的,因此能够受益于 Linux 的安全性特性,并且能够利用诸如 SELinux 等安全模块来增强虚拟化环境的安全性。
  • 灵活性:KVM 提供了丰富的管理工具和 API,使得用户能够轻松地管理虚拟化环境。
  • 成本效益:作为开源软件,KVM 没有额外的许可费用,并且能够充分利用现有的 Linux 基础设施。

KVM 被广泛应用于数据中心、云计算和虚拟化环境中,它已经成为许多企业和组织的首选虚拟化解决方案之一。

二、kvm软件安装

1、查看CPU是否支持VT技术
diff 命令可以查看两个配置文件的区别

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

2、清理环境:卸载KVM

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

3、安装软件

yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libguestfs-tools

解释:

qemu-KVM: 主包,是由两个组件构成,kvm实现cpu,内存的虚拟化,qemu实现i/o的虚拟化
libvirt:API接⼝,管理虚拟机的

4、启动服务

systemctl start libvirtd

5、查看KVM模块加载

lsmod | grep kvm

三、GuestOS安装

“Guest OS” 是指在虚拟化环境中安装在虚拟机上的操作系统。在虚拟化技术中,物理服务器上的虚拟化软件(比如 KVM、VMware、VirtualBox 等)可以创建和管理多个虚拟机,每个虚拟机都运行着一个独立的操作系统,这些操作系统就是虚拟机的 “Guest OS”。

第一种方式:图形化安装

virt-manager      #调出图形化界面

第二种方式:命令行模式安装

虚拟机的组成部分:

1、虚拟机配置⽂件

[root@ctrol ~]# ls /etc/libvirt/qemu
centos7.0.xml  networks

2、储存虚拟机的介质

[root@ctrol ~]# ls /var/lib/libvirt/images/
centos7.0.qcow2

模板镜像+配置⽂件 ⽅式创建虚拟机

1.拷⻉模板镜像和配置⽂件
[root@ctrol ~]# cp /var/lib/libvirt/images/centos7.0.qcow2 /var/lib/libvirt/images/vm1.img
[root@ctrol ~]# cp /etc/libvirt/qemu/centos7.0.xml /etc/libvirt/qemu/vm1.xml2.修改配置文件
[root@ctrol ~]# vim /etc/libvirt/qemu/vm1.xml
修改的主要参数是:name,uuid,source位置,以及mac地址,mac地址前24位是厂商标识,不能修改,修改后24位。memory,currentMemory保持一致
[root@ctrol qemu]# diff vm1.xml centos7.0.xml 
9,10c9,10
<   <name>vm1</name>
<   <uuid>6818b9a0-45a7-4896-b43e-97afcfcf468e</uuid>
---
>   <name>centos7.0</name>
>   <uuid>6818b9a0-45a7-4786-b43e-97afcfcf468e</uuid>
16,17c16,17
<   <memory unit='KiB'>1008576</memory>
<   <currentMemory unit='KiB'>1008576</currentMemory>
---
>   <memory unit='KiB'>1048576</memory>
>   <currentMemory unit='KiB'>1048576</currentMemory>
44c44
<       <source file='/var/lib/libvirt/images/vm1.img'/>
---
>       <source file='/var/lib/libvirt/images/centos7.0.qcow2'/>
100c100
<       <mac address='52:54:00:58:45:9b'/>
---
>       <mac address='52:54:00:58:45:9a'/>3.创建虚拟机
[root@ctrol qemu]# virsh define /etc/libvirt/qemu/vm1.xml 
Domain 'vm1' defined from /etc/libvirt/qemu/vm1.xml4.重启一下
[root@ctrol qemu]# systemctl restart libvirtd5.宿主机开启路由转发功能
[root@ctrol qemu]# vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
[root@ctrol qemu]# sysctl -p6、去虚拟机ping www.baidu.com
如果ping不通,但是ip能通,去/etc/resolve中写dns解析额地址

四、GuestOS升级配置

以下配置就是手动写配置文件添加磁盘
1、修改配置⽂件(⽐如添加磁盘,那就添加如下配置)

需要主要的是:dev='vdb' ,slot='0x00',添加source镜像存放目录<disk type='file' device='disk'>
<       <driver name='qemu' type='qcow2'/>
<       <source file='/var/lib/libvirt/images/centos7.0-1.qcow2'/>
<       <target dev='vdb' bus='virtio'/>
<       <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
<     </disk>

2、创建新的空磁盘卷

qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.0-1.qcow2 1G

3、重新定义

 virsh define /etc/libvirtd/qemu/centos7.0.xml

五、KVM存储

概念:
KVM必须要配置⼀个目录当作他存储磁盘镜像(存储卷)的⽬录,我们称这个目录为存储池。
默认存储池:

/var/lib/libvirt/images/

1、存储池管理

1.创建基于⽂件夹的存储池(⽬录)mkdir -p /data/vmfs
2.定义存储池与其⽬录virsh pool-define-as vmdisk --type dir --target /data/vmfs    #vmdisk是池的名字
3.创建已定义的存储池
(1) 创建已定义的存储池virsh pool-build vmdisk
(2) 查看已定义的存储池,存储池不激活⽆法使⽤
#virsh pool-list --all
4.激活并⾃动启动已定义的存储池
virsh pool-start vmdisk
virsh pool-autostart vmdisk
这⾥vmdisk存储池就已经创建好了,可以直接在这个存储池中创建虚拟磁盘⽂件了。
5.在存储池中创建虚拟机存储卷
virsh vol-create-as vmdisk oeltest03.qcow2 20G --
format qcow2
注1:KVM存储池主要是体现⼀种管理⽅式,可以通过挂载存储⽬录,lvm逻辑卷的⽅式创建存储池,虚拟机存储卷创建完成后,剩下的操作与⽆存储卷的⽅式⽆任何区别了。

2.存储池相关管理命令

(1)在存储池中删除虚拟机存储卷
virsh vol-delete --pool vmdisk oeltest03.qcow2
(2)取消激活存储池
virsh pool-destroy vmdisk
(3)删除存储池定义的⽬录/data/vmfs
virsh pool-delete vmdisk
(4)取消定义存储池virsh pool-undefine vmdisk

六、磁盘格式

raw:原始格式,性能最好
qcow2:性能上还是不如raw,但是raw不⽀持快照,qcow2⽀持快照。

七、创建磁盘文件

创建磁盘⽂件
#qemu-img create -f qcow2 test.qcow2 20G
建⽴raw格式磁盘⽂件:
qemu-img create -f raw test.raw 20G
查看已经创建的虚拟磁盘⽂件:
qemu-img info test.qcow2

查看虚拟机磁盘:

[root@ctrol qemu]# virsh domblklist vm1目标   源
-----------------------------------------vda    /var/lib/libvirt/images/vm1.imgsda    -

八、KVM基本管理

查看 启动 关闭 重启 重置 查看

查看虚拟机:
virsh list --all
查看KVM虚拟机配置⽂件:
virsh dumpxml vm1
修改配置⽂件:
virsh edit vm1 
如果直接⽤vim编辑器修改配置⽂件的话,需要重启libvirtd服务(这种方式就不需要)
暂停虚拟机:virsh suspend vm_name
恢复虚拟机:virsh resume vm_name
关闭: virsh shutdown vm1
虚拟机开机⾃动启动: virsh autostart vm1
删除虚拟机开机自启:virsh autostart --disable vm1
查看所有开机自启的虚拟机:virsh list --all --autostart   #会生成你一个autostart的目录,/etc下
重启:virsh reboot vm1
删除虚拟机: virsh undefine vm2

查看虚拟机的VNC端口
虚拟机的vnc端口默认从5900开始,每个虚拟机分配一个端口;

[root@ctrol qemu]# virsh vncdisplay vm1
127.0.0.1:0

查看虚拟机的网络地址

virsh domifaddr vm1

九、虚拟机克隆

1、图形化界面
2、字符命令克隆

virt-clone -o vm1 -n vm2 --auto-clone    # -n 的参数是取名字   -o 是源镜像virt-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.img   #-f  是使用现有的镜像克隆

十、虚拟机快照

查看镜像文件格式:
qemu-img info /var/lib/libvirt/images/vm1.img 把raw格式转换成qcow2格式:
qemu-img convert -f raw -o qcow2 /var/lib/libvirt/images/vm8.img /var/lib/libvirt/images/vm8_qcow2.img

给虚拟机vm1创建第⼀个快照

virsh snapshot-create-as vm1 vm1.snap

查看虚拟机的快照

virsh snapshot-list vm1

恢复到第⼀个快照

 virsh snapshot-revert vm1 vm1.snap

删除虚拟机快照

virsh snapshot-delete --snapshotname vm1.snap vm1

十一、KVM网络管理

KVM虚拟网络介绍:
libvirt服务安装后,默认会安装一块virbr0的虚拟网卡(虚拟交换机),libvirt在创建KVM虚拟机后,默认使用了一个名为default的nat网络。地址段为192.168.122.0/24,为虚拟机提供网络服务。
dhcp分配到虚拟机的ip列表在以下文件查看:
cat /var/lib/libvirt/dnsmasq/default.conf

查看网卡

virsh net-list

1、kvm修改virbr0地址段:

可以修改网段,也可以用默认网段,如需修改通过如下方式:

virsh net-edit default 

然后再重新定义网络,default网络的配置文件:

virsh net-define /etc/libvirt/qemu/networks/default.xml 

停止网卡(关闭虚拟机)

virsh net-destroy default

启动网卡:

virsh net-start default

重启libvirtd:

systemctl restart libvirtd

2、kvm虚拟机配置固定ip

cd /etc/sysconfig/network-scripts/  #找到网卡编辑
把dhcp改为none,添加IPADDR,NETMASK,GATEWAY,DNS1等
然后systemctl restart network

3、kvm新建一个虚拟网卡

一、图像化方式
二、命令行方式

virsh net-dumpxml default > /etc/libvirt/qemu/networks/net1.xml   #创建一个net1网卡的配置[root@ctrol ~]# cat  /etc/libvirt/qemu/networks/net1.xml 
<network><name>net1</name><uuid>243f2a7c-696c-4834-81d1-bca8e7d8878b</uuid><forward mode='nat'><nat><port start='1024' end='65535'/></nat></forward><bridge name='virbr1' stp='on' delay='0'/><mac address='52:54:01:12:2e:9b'/><ip address='192.168.100.1' netmask='255.255.255.0'><dhcp><range start='192.168.100.2' end='192.168.100.254'/></dhcp></ip>
</network>
需要注意的是name,uuid,网桥名,mac地址,改哈ip就行virsh net-create /etc/libvirt/qemu/networks/net1.xml  #根据配置文件进行创建
virsh net-list --all   #查看网卡[root@ctrol ~]# virsh net-autostart net1  #开机自启
网络net1标记为自动启动给vm1虚拟机修改网卡:
virsh edit vm1
然后再启动该虚拟机

3、kvm虚拟机桥接网络

在KVM虚拟机中,Bridge (桥接)模式可以让KVM虚拟机和宿主机共享一个物理网络设备来连接网络,这样KVM虚拟机可以访问外部网络,而外部网络也可以直接访问KVM虚拟机,Bridge桥接模式使用非常方便,应用也非常广泛。

查看虚拟机网卡类型
virsh domiflist vm1

在虚拟机中配置桥接网络:

nmcli con add ifname br0 type bridge con-name br0
nmcli con add type bridge-slave ifname ens160 master br0
nmcli con mod br0 ipv4.addresses 192.168.85.200/24 ipv4.gateway 192.168.85.2 ipv4.dns 223.5.5.4 ipv4.method manual autoconnect yes
nmcli con up br0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一面——封装、继承和多态

写前声明&#xff1a;参考链接 C面经、面试宝典 等 ✊✊✊每日一面——封装、继承和多态 一、简述一下什么是面向对象&#xff1f;二、讲一讲封装、继承、多态是什么&#xff1f;三、C的多态怎么实现&#xff1f;四、C中类成员的访问权限和继承权限问题五、C中的重载、重写&…

腾讯云拼了99元服务器老用户能买,续费不涨价!

良心腾讯云推出99元一年服务器&#xff0c;新用户和老用户均可以购买&#xff0c;续费不涨价&#xff0c;续费也是99元&#xff0c;配置为轻量2核2G4M、50GB SSD盘、300GB月流量、4M带宽&#xff1a;优惠价格99元一年&#xff0c;续费99元&#xff0c;官方活动页面 txybk.com/g…

C++类和对象(中篇)

目录 1. 类的6个默认成员函数 2. 构造函数 3.析构函数 4.拷贝构造函数 5.赋值运算符重载 6.const成员 7.取地址及const取地址操作符重载 1. 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#…

OpenMP

介绍 OpenMP 是一个应用程序接口 &#xff08;API&#xff09;&#xff0c;由一组主要的计算机硬件和软件供应商共同定义。OpenMP 为共享内存并行应用程序的开发人员提供了一个可移植、可扩展的模型。该 API 支持各种架构上的 C/C 和 Fortran。 OpenMP是&#xff1a; 一个可…

基于动态内存设计的通讯录

test.c #define _CRT_SECURE_NO_WARNINGS 1 #include"contact.h"void menu(){printf("\n");printf("1.增加联系人\n");printf("2.删除联系人\n");printf("3.查找联系人\n");printf("4.修改联系人\n");printf(&qu…

python学习笔记------字典

字典的定义 字典的定义&#xff0c;同样是使用{}&#xff0c;不过存储的元素是一个个的键值对 基本语法&#xff1a; #定义字典字面量 {key:value,key:value,key:value,......key:value} #定义字典变量 my_dict{key:value,key:value,key:value,......key:value} #定义空…

elasticsearch篇:RestClient操作

1. RestClient ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。官方文档地址&#xff1a;Elasticsearch Clients | Elastic 其中的Java Rest Client又包括两种&#xff1a; Java Low Level Res…

Leetcode 3076. Shortest Uncommon Substring in an Array

Leetcode 3076. Shortest Uncommon Substring in an Array 1. 解题思路2. 代码实现 题目链接&#xff1a;3076. Shortest Uncommon Substring in an Array 1. 解题思路 这一题我的思路上很暴力&#xff0c;就是直接把所有可能的substring全部统计出来放到一起。 然后&#…

windows10+cpu+pycharm跑yolov5

1、安装anaconda和pycharm&#xff0c;安装方法参考&#xff1a; anaconda和pycharm安装&#xff08;windows10 &#xff09;-CSDN博客 2、创建yolov5环境&#xff0c;打开Anaconda Prompt命令打开cmd命令行窗口&#xff0c;如下所示&#xff1a; 输入&#xff1a;conda crea…

android pdf框架-6,文本生成pdf

前文介绍如何使用图片生成pdf,这里介绍如何使用文本生成pdf 使用mupdf生成 mupdf生成的pdf略大,字体可以自定义. 生成的代码不复杂,也有好几种,以story的方式生成为例 fun createPdfFromText(sourcePath: String, destPath: String): Boolean {val text EncodingDetect.rea…

【大模型】Hugging Face下载大模型的相关文件说明

Hugging Face下载大模型文件说明 1.前言 ​ 上图是毛毛张在HuggingFace的官网上的ChatGLM-6B大模型的所有文件,对于初学者来说,对于上面的文件是干什么的很多小伙伴是很迷糊的,根本不知道是干什么的,毛毛张接下来将简单讲述一下上面的每个文件的作用。 2.文件说明 在Hug…

FL Studio21最新官方完整免费版水果音乐制作软件下载

作为音乐制作软件专家&#xff0c;对于FL Studio21这款功能强大的音乐制作软件有着深入的了解&#xff0c;它为用户提供了从创作到后期制作的完整工作流程。以下是对其各项功能的全面、准确且详细的介绍&#xff1a; FL Studio 21 Win-安装包下载如下: https://wm.makeding.c…

vue项目部署服务器,因为跨域设置nginx.config要修改的配置

下面是我在vue项目中vite.config.js设置的配置代理 对于部署项目需要使用nginx进行vue项目的话&#xff0c;需要对nginx的配置文件进行如下修改即可

linux操作系统虚拟机的环境配置

目录 一、虚拟机安装&#xff08;类似硬件的安装&#xff09; &#xff08;1&#xff09;创建虚拟机 &#xff08;2&#xff09;创建虚拟机 二、IP和主机名称配置 1、设置VM上的IP 2、设置我们电脑上VMnet8的IP 3、设置虚拟机上的IP 主机名称映射 以下是设置主机名映射…

linux系统adb调试工具

adb的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用。通过adb可以在Eclipse中通过DDMS来调试Android程序&#xff0c;说白了就是调试工具。 adb的工作方式比较特殊&#xff0c;采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯&#xff0c;默认情况下adb会…

实时工业控制系统的创新整合:PLC4X与CnosDB的高效数据采集与存储

在当代工业自动化系统中&#xff0c;实时监测和数据分析变得至关重要。本文将介绍如何通过集成Apache PLC4X与CnosDB&#xff0c;实现对工业控制系统中的PLC设备进行高效数据采集和存储&#xff0c;为工程师们提供更强大的数据分析和监测工具。 PLC的定义 PLC是可编程逻辑控制…

哈希表|242.有效的字母异位词

力扣题目链接 bool isAnagram(char* s, char* t) {int len_s strlen(s), len_t strlen(t);if(len_s ! len_t) {return false;}int table[26];memset(table, 0, sizeof(table));for(int i 0; i < len_s; i) {table[s[i] - a];}for(int i 0; i < len_t; i) {table[t[i…

Unity中使用代码动态修改URP管线下的标准材质是否透明

//修改为透明 material.SetFloat("_Surface",1.0f); material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); material.Set…

Unity 关节:铰链、弹簧、固定、物理材质:摩檫力、 特效:拖尾、

组件-物理-关节&#xff1a;铰链&#xff08;类似门轴&#xff09; 自动动作、多少力可以将其断开、 弹簧可以连接另一个刚体&#xff08;拖动即可&#xff09; 固定一般是等待一个断裂力&#xff0c;造成四分五裂的效果。 物理材质 设置摩檫力&#xff0c;则可以创造冰面的…

复制表

目录 复制表 将部门 30 的所有员工信息保存在 emp30 表中 将复杂查询结果创建为表 只将 emp 表的结构复制为 empnull 表 从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 复制表 严格来说&#xff0c;复制表不是复制操作&am…