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 #虚拟机文件大小,单位GB
bus #虚拟机磁盘使用的总线类型,为了使虚拟机达到好的性能,这里使用virtio
cache #虚拟机磁盘的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

玩玩虚拟化-KVM的更多相关文章

  1. 使用虚拟化KVM安装RHEL7系统

    使用虚拟化KVM安装RHEL7系统 作者:Eric 微信:loveoracle11g 检查真实物理机是否支持虚拟化功能 [root@server ~]# grep vmx /proc/cpuinfo ...

  2. 云计算与虚拟化KVM深度实践

    徐亮伟, 江湖人称标杆徐.多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作.擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作. 个人博客"徐亮伟架构师之路&quo ...

  3. KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  4. 烂泥:虚拟化KVM安装与配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近打算把公司的服务器全部做成虚拟化,一是跟有效的利用了服务器,二也是对自己是一个学习的机会. KVM的安装与配置步骤如下: 1. 查看是否支持虚拟化 ...

  5. 开源虚拟化KVM(二)管理虚拟存储

    五,管理虚拟存储 5.1 虚拟磁盘概述 5.1.1 虚拟化项目中存储的注意事项 [x] 存储的性能几乎总是虚拟化的瓶颈 [x] 通过多个硬盘驱动以分布磁盘I/O来实现存储解决方案 [x] 考虑部署集中 ...

  6. 开源虚拟化KVM(一)搭建部署与概述

    一,KVM概述 1.1 虚拟化概述 在计算机技术中,虚拟化意味着创建设备或资源的虚拟版本,如服务器,存储设备,网络或者操作系统等等 [x] 虚拟化技术分类: 系统虚拟化(我们主要讨论的反向) 存储虚拟 ...

  7. 虚拟化 - kvm安装

    vmware centos6.5 64位 kvm虚拟化安装配置 安装 centos 64位 1.推荐配置 内存 2G 硬盘50G,或者再单独分一个磁盘,用来存储虚拟机文件 最关键的一步,在创建虚拟机时 ...

  8. Linux实战教学笔记54:开源虚拟化KVM(二)管理虚拟存储

    五,管理虚拟存储 5.1 虚拟磁盘概述 5.1.1 虚拟化项目中存储的注意事项 [x] 存储的性能几乎总是虚拟化的瓶颈 [x] 通过多个硬盘驱动以分布磁盘I/O来实现存储解决方案 [x] 考虑部署集中 ...

  9. Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述

    一,KVM概述 1.1 虚拟化概述 在计算机技术中,虚拟化意味着创建设备或资源的虚拟版本,如服务器,存储设备,网络或者操作系统等等 [x] 虚拟化技术分类: 系统虚拟化(我们主要讨论的反向) 存储虚拟 ...

  10. VMware虚拟化kvm安装部署总结

    虚拟化 1.环境 Centos7.3 关闭selinux,关闭防火墙 2.虚拟化环境配置 2.1 kvm部署安装 1. VMware 配置桥接模式 2.bios开启虚拟机,以本地台式机为例, 重启动电 ...

随机推荐

  1. docker dockerfile基础指令

    dockerfile是用来构建docker镜像文件!命令参数脚本 构建步骤 1.编写一个dockerfile文件 2.dockerbuild构建成为一个镜像 3.docker run运行镜像 4.do ...

  2. 【Java】树状节点结构的数据

    数据库的菜单,权限表是具有多层级结构,有ID和PARENT_ID两个关键性的字段 通过PARENT_ID和ID相等构建层级结构: 然后需要在Java中构建出层级的数据结构,然后输出成JSON返回给前端 ...

  3. 国产AI训练卡,对标美国NVIDIA公司的A100,华为昇腾Atlas 300T A2(Ascend 910B4)高性能GPU/NPU/AI推理/国产计算/信创训练卡 —— 电商平台已开售

    China has successfully achieved the localization of AI chips, breaking through the technological res ...

  4. gpg 密钥的导入、导出

    参考: gpg 密钥生成.导入.导出.自动输入密码 How do I delete secret subkeys correctly? 注意: 本文不对GPG的操作做详细介绍,有深入了解者自行参考:g ...

  5. 【转载】failed to open /dev/dri/renderd128 permission denied

    原文地址: https://juejin.cn/s/failed%20to%20open%20%2Fdev%2Fdri%2Frenderd128%20permission%20denied ===== ...

  6. C语言编写Linux终端环境下无缓冲键盘输入 ,并识别上下左右光标键

    自己重构了游戏<2048>并且重构了它的最好启发式AI解法,并上传到了Gitee中的 鬼&泣 / 2048-heuristic的devilmaycry分支,在这个过程中编写了一个C ...

  7. ComfyUI插件:ComfyUI-BrushNet节点

    前言: 学习ComfyUI是一场持久战,而ComfyUI-BrushNet是最近的局部重绘节点,其包含BrushNet和Powerpaint两个主要节点,其中BrushNet有SD1.5和SDXL两个 ...

  8. # Apache SeaTunnel 究竟是什么?

    作者 | Shawn Gordon 翻译 | Debra Chen 原文链接 | What the Heck is Apache SeaTunnel? 我在2023年初开始注意到Apache SeaT ...

  9. 代码随想录Day12

    二叉树遍历 分为前序.中序.后续.层序四种 其中前中后序属于深度优先搜索,层序属于广度优先搜索 前序遍历顺序: 根节点->左子树->右子树 中序遍历顺序: 左子树->根节点-> ...

  10. String究竟能存储多少字符?

    能存储多少字符,通过以下步骤来看 首先String的length方法返回是int.所以理论上长度一定不会超过int的最大值. 编译器对字符串字面量长度的限制源自Java编译器(如javac)在处理常量 ...