玩玩虚拟化-KVM

news/2024/10/10 19:25:27/文章来源:https://www.cnblogs.com/KingArmy/p/18456963

1、讲在前面(玩这个的心历路程)

最近一段时间想玩一些集群之类的东西,学习搞一下K8s,集群啥的,但是我没有多台服务器,如果购买云服务器成本太高,后来想到了买台台式机弄点虚拟机来玩,于是我就在某鱼上淘了台二手台式机(24核+32G+512G+4G显卡),价格1280。后来想到要装虚拟机,我就想到了现在经常用到的云平台,于是在网上找了一些开源云平台,于是找了一些开源云平台

2、最终选择KVM的原因

最开始选择的是FreeVM,纯国产化安全虚拟化平台,直接有一体包安装简单,纯中文界面,对于国人相对友好,另外看了介绍操作比较简单并且开源(企业版功能基本上用不到),所以我就使用了这个,官网有一体包,直接下载ISO镜像,像装操作系统一样的,根据官网流程安装很简单。最终舍弃的原因是,不稳定,短短一个星期我云平台重装了两次(可能是我的硬件也太垃圾,或者搭建好之后我总是能精确命中系统bug,总之我的感觉就是不稳定),果断舍弃。

舍弃FreeVM我又查了一下最稳定和历史悠久的要属于OpenStack,一个开源的云计算管理平台项目。OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。当时追求稳定性,没有考虑安装复杂度和配置问题,直接开始找各种教程开始干,趁周末从早上搞到晚上才搞好,最终发现不适用于我这种情况,OpenStack相对来说较重,里面各种组件有十几个,整个服务启动起来,直接把我内存吃完了。于是我果断放弃了

后来想通了,如果想搭建一个即稳定又实用的云平台靠这一台机器这点资源很难实现,于是我就考虑到了最笨的方式,使用虚拟机(类似于VMware)。因为我的原系统定位就是Centos,经过查询之后找到了KVM(一个开源的系统虚拟化模块)。虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化

3、说干就干,开始安装(Centos系统)

我是直接用yum装的,现在因为Centos已经停止维护,yum源可以用阿里源或者腾讯源,阿里源有个问题,使用在虚拟机上时间久了容易被封掉IP,导致你的IP无法再用(当时因为这个让我排查了好久)。如果遇到yum源的问题,可以直接换源解决问题。毕竟都不是慈善家,免费的东西咱也不好说啥。

安装命令步骤直接在下面:

# 构建虚拟机的命令行工具
yum -y install virt-install# 网络支持工具, 默认已安装
yum -y install bridge-utils # 安装虚拟机管理工具
yum -y install libvirt libvirt-devel libvirt-daemon-kvm libvirt-client
yum -y install virt-manager# 开启 libvirtd KVM服务,以开启相关支持:
systemctl start libvirtd
systemctl enable libvirtd --now# 安装其它工具包:
yum install libvirt-python python-virtinst virt-install virt-viewer –y
yum install libguestfs-tools -y

截止上面最后一步,KVM已经安装好了

这些都是相关的一些命令,看着很多实际上用到的也就两三个(因为我目前只用了两三个)。virsh、virt-install、virt-manager

4、使用kvm创建虚机,virt-install命令

​ 上面已经安装好了KVM,接下来要开始用KVM创建虚机,虚机需要有镜像,这里用还是用Centos来做例子,我是在阿里云的下载的:https://mirrors.aliyun.com/centos/7/isos/x86_64

# 下载镜像
wget https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso# 把镜像放到你的自定义位置
mv CentOS-7-x86_64-DVD-2009.iso /data/iso/# 创建一个名称为master 内存8196M 8个C 的虚机 存储卷在/var/lib/libvirt/images/master.qcow2
virt-install --name=master --memory=8196 --vcpus=8 --os-type=linux --location=/data/iso/CentOS-7-x86_64-DVD-2009.iso --disk /data/vmdisk/images/master.qcow2,device=disk,bus=virtio,size=80 --network network=default --network bridge=virbr0 --nographics --extra-args='console=tty0 console=ttyS0,115200n8 serial'

virt-install命令相关

#虚拟机镜像文件默认路径:/var/lib/libvirt/images/
磁盘镜像文件以qcow2、img、raw等格式后缀磁盘镜像文件格式:虚拟机磁盘文件有raw、qcow2格式和qed(这种已经不用了)。qcow2格式是kvm支持的标准格式,raw格式为虚拟磁盘文件通用格式。raw格式性能最好,速度最快,其缺点是不支持一些新的功能,如镜像,Zlib磁盘压缩、AES加密、快照等,另外raw格式文件比qcow2格式文件大很多,将近15倍吧。而qcow2格式是支持快照模式,做快照要把它转换成qcow2格式。#命令创建虚拟机示例
virt-install \        #创建命令 
-n kvm1 \          #虚拟机显示名(非虚拟机主机名)
-r 4096 \          #虚拟机内存大小 
--vcpus 2 \          #虚拟机cpu个数 
--disk path=/var/lib/libvirt/images/kvm1.qcow2,size=50,format=qcow2,bus=virtio \     #指定硬盘路径,大小,格式为qcow2,总线类型为virtio 
--location /root/iso/CentOS-7-x86_64-Minimal-2009.iso \    #系统安装iso路径 
--nographics \                    #不调用图形化界面 
--network network=default \                #网卡1指定网桥 
--network bridge=br0 \                #网卡2指定网桥 
--console pty,target_type=serial \          #console控制通道 
--extra-args 'console=ttyS0,115200n8 serial'      #文本输出 或者vnc方式连接安装virt-install \
--name=kvm001 --ram 1024 --vcpus=1 \
--disk path=/home/raw/kvm001.raw,size=10,format=raw,bus=virtio \
--cdrom=/mnt/CentOS-7-x86_64-Minimal-1810.iso --network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole参数说明:--name    #虚拟机名称
--ram     #分配给虚拟机的内存,单位MB
--vcpus   #分配给虚拟机的cpu个数
--cdrom   #指定CentOS镜像ISO文件路径
--disk    #指定虚拟机raw文件路径size    #虚拟机文件大小,单位GBbus     #虚拟机磁盘使用的总线类型,为了使虚拟机达到好的性能,这里使用virtiocache   #虚拟机磁盘的cache类型
--network bridge    #指定桥接网卡model            #网卡模式,这里也是使用性能更好的virtio
--graphics          #图形参数 

5、虚机管理 virsh

虚拟机状态维护

virsh list --all                 #查看所有虚拟机
virsh dominfo 虚拟机名或虚拟机ID    #查看虚拟机信息概览
virsh console 虚拟机名或虚拟机ID    #进入虚拟机
快捷键: ctrl+]   								 #退出虚拟机
virsh shutdown 虚拟机名或虚拟机ID   #关闭虚拟机 
virsh destroy 虚拟机名或虚拟机ID    #强制关闭虚拟机 
virsh start 虚拟机名或虚拟机ID      #开机虚拟机  
virsh suspend 虚拟机名或虚拟机ID    #挂起虚拟机 
virsh resume 虚拟机名或虚拟机ID     #恢复虚拟机 
virsh reset 虚拟机名或虚拟机ID      #重置虚拟机 
virsh undefine 虚拟机名或虚拟机ID   #删除虚拟机
virsh autostart 虚拟机名或虚拟机ID  #设置虚拟机自动启动
virsh autostart --disable 虚拟机名 #关闭虚拟机自动启动
virsh dumpxml 虚拟机名或虚拟机ID    #查看虚拟机配置文件 
virsh edit 虚拟机名或虚拟机ID       #修改虚拟机配置,必须关机
virsh snapshot-create-as 虚拟机名 快照名   #创建虚拟机快照
virsh snapshot-list 虚拟机名       #查看虚拟机快照列表  
virsh snapshot-revert 虚拟机名 虚拟机快照名   #恢复虚拟机快照
virt-clone -o 源虚拟机名 -n 新虚拟机名 -f 存储新虚拟机的文件路径 #克隆虚拟机

KVM存储池管理

virsh pool-list --all    #查看当前存储池列表 
virsh pool-info 存储池名     #查看存储池信息 
virsh  pool-dumpxml 存储池名    #查看存储池信息  注:存储池的配置信息也是xml的格式,存放在/etc/libvirt/storage中
virsh pool-destroy vmdisk   #取消激活存储池
virsh pool-undefine vmdisk    #取消定义存储池
virsh pool-delete vmdisk    #删除存储池定义的目录#创建本地存储池,存储池所在的目录
mkdir -p /data/vmfs     # 存储池所在的目录
virsh pool-define-as vmdisk --type dir --target /data/vmfs/   #定义存储池
virsh pool-build vmdisk     #创建已定义的存储池
virsh pool-start vmdisk     #激活并启动已定义的存储池,存储池不激活是无法使用的
virsh pool-autostart vmdisk #激活并自动启动已定义的存储池,存储池不激活是无法使用的

存储卷管理

#创建存储卷,在vmdisk存储池中,创建一个容量为80G、格式为qcow2的虚拟机存储卷,名称为master.qcow2
virsh vol-create-as vmdisk master.qcow2 80G --format qcow2   #删除存储卷
virsh vol-delete --pool vmdisk kvm2_2.qcow2   

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

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

相关文章

欢迎加入Web3交流群

加入群聊后先看 群公告,入群二维码会及时更新的哈! 微信内长按二维码图片即可识别入群!

初步认识vue脚手架

初步认识vue脚手架 脚手架的优势统一的项目目录 本地程序调试 热部署 单元测试 集成打包上线 vue脚手架会产生统一的项目目录,能够支持热部署,就是不重新调试也可以更新数据。其他几点我还不是很理解。对脚手架的分析node_modules表示目录包 public 表示静态包 src 为源代码 …

闲话 10.10(有更新)

杂项乱写 10.10想到什么写什么昨晚CTH(大喊):HDK! HDK(大喊):CTH! CTH(愣了一下):干啥?2-SAT 定义 给出若干个形如 \(a\lor b\) 的限制条件,询问是否有满足条件的一组解。 人话:给出 \(n\) 个集合,每个集合两个元素,再给定若干个限制条件 \(\left \langle a,b\…

2024秋软件工程结对作业(第二次)

软件工程 班级链接:https://edu.cnblogs.com/campus/fzu/SE2024作业要求链接 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13281作业目标 开发一套跨专业合作平台,为大学生提供发起和参与跨学科项目的渠道。学号 102201313Github项目地址 https://github.com/KeepUp…

06-蓝图实战(图书数据搜索与查询),编写get和post请求,同时应用WTForms参数验证

需求:之前的路由请求格式,不是通用的请求格式,转化为get 和 post请求之后,可以通过request方法获取其中的参数 参考格式 04-使用 Flask 框架实现 POST和GET接口 - 马铃薯1 - 博客园 (cnblogs.com)@web.route(/book/search/<q>) def search(q):pass 第三方插件库,WT…

2024.9.30 CSP

模拟赛 赛后看着分哗啦啦的往下掉。 T1 median 找中位数,赛时假做法 A 了, 没想到直接搜。。。code #include<bits/stdc++.h> using namespace std; const int N = 1e5+5,mod = 998244353; int n; int a[6][N],ans,f[6][4]; unordered_map<int,bool> mp; int dfs…

VMware Workstation 17.6.1 发布下载,修复 4 个已知问题

VMware Workstation 17.6.1 发布下载,修复 4 个已知问题VMware Workstation 17.6.1 发布下载,修复 4 个已知问题 VMware Workstation 17.6.1 Pro for Windows & Linux - 领先的免费桌面虚拟化软件 基于 x86 的 Windows、Linux 桌面虚拟化软件 请访问原文链接:https://sy…

android开发编译openssl源代码生成libcrypto.so和libssl.so两个动态库用于android ndk项目开发使用

openssl编译本篇文章的操作是在Linux环境之下,在虚拟机ubuntu 20版本上操作的步骤1. openssl下载解压tar包openssl下载地址:https://openssl-library.org/source/下载完解压:tar -zxvf openssl-3.3.2.tar.gz // 我这里下载openssl-3.3.2.tar.gz版本2. 编译openssl库,得到l…

MySQL下载、安装与配置

MySQL下载、安装与配置下载MySQL 1、进入MySQL官网 2、点击 Products,再点击 MySQL Community Server3、选择MySQL版本,点击 Go to Download Page4、点击 Download 下载MySQL安装程序5、点击 No thanks, just start my download,等待下载安装MySQL 1、双击运行下载的安装程序…

web端ant-design-vue Upload 手动实现文件上传使用小节

web端ant-design-vue Upload 手动实现文件上传使用小节。最近在项目开发中用到了手动实现文件上传的组件,之前都是自动上传把返回的文件信息保存到服务器。手动上传相对复杂一下,我把遇到的一些问题整理记录一下,有需要的朋友可以避免走弯路! 1、文件上传需要用formdata格式…

记一次k8s挂载configmap配置文件识别为文件夹的错误

错误表现 挂载.env为配置文件时被识别成一个文件夹而不是一个文件错误原因 创建configmap的时候原始文件使用的是env解决方式 创建configmap的时候需要使用的文件需要修改文件名为挂载的文件名一致 例如本次挂载的文件名是.env则需要在创建configmap的时候原始文件名修改为.evn…