- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
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 存储新虚拟机的文件路径 #克隆虚拟机
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的文章就讲到这里了,如果你想了解更多关于玩玩虚拟化-KVM的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在使用自定义 ListView 时遇到了一些问题(滚动 ListView 时内部的复选框丢失了它们的状态)。我可以在不枚举可视化树的情况下禁用 ListView 虚拟化吗?
我有一个 ItemsControl包含我想虚拟化的数据列表,但是 VirtualizingStackPanel.IsVirtualizing="True"似乎不适用于 ItemsControl . 真
有没有人有我可以在 WPF 应用程序中使用的功能虚拟化 WrapPanel? 我已经在 http://virtualwrappanel.codeplex.com/ 下载并尝试了实现.但是,我收到以下异
我试图弄清楚这个虚拟化功能,我不确定我是否理解错误或发生了什么,但我正在使用 ANTS 内存分析器来检查虚拟化 TreeView 中的项目数,它只是不断增加。我有一个包含 1,001 个项目(1 个根
我对虚拟机的 CPU 虚拟化有疑问。我无法理解即时到 native 代码翻译与陷阱和模拟翻译之间的区别。 据我所知,在第一种情况下,假设我从不同的平台模拟二进制代码,如果我有 x86 CPU,代码将转
我们正在尝试想出一种虚拟化 TreeView 的好方法,数据并不是真正的问题,因为它非常轻(每个项目大约 16 字节),问题是我们可能有数万个,虽然实际数据只占用 160 kb 内存,但 TreeVi
我对虚拟机的 CPU 虚拟化有疑问。我无法理解即时到 native 代码翻译与陷阱和模拟翻译之间的区别。 据我所知,在第一种情况下,假设我从不同的平台模拟二进制代码,如果我有 x86 CPU,代码将转
WPF 4 是否还包含一个虚拟化的 WrapPanel,或者从现有面板派生一个是否容易。我想制作一个地址 View ,例如 outlook。 最佳答案 我认为不可能实现具有完全虚拟化(双向)的 Wra
我有一个 VB6 应用程序,我已经销售了 12 年多。有时我的用户很难让应用程序运行。数据写入将进入/My Documents,因此除了安装文件(EXE 等)之外什么都没有进入 C:\Program
我试图将一个新环境的要求放在一起,以包含运行 Sql Server 的 TeamCity、几个构建代理(目前)和一个 SVN 存储库。 目前有 6 个开发人员,将有 5 个活跃的解决方案参与 CI 过
关注 this question和 this question ,现在我有一个带有分层数据的 TreeView,如下图所示: 由于数据量大,我转了Virtualization TreeView 的属性
是否有一种简单的方法可以禁用 ListBox 控件上的 UI 虚拟化?我尝试使用“FindName()”方法在 ListBox 控件中查找控件,但如果该控件明显位于 Web 浏览器窗口之外,则无法找到
我正在尝试将 ListBox 用作包含多个项目的 View ,当然,我需要在其中使用 UI 虚拟化。 问题是只有当我这样声明 ListBox 时虚拟化才有效:
我有一个基于 .NET 4.0 的 Winform 应用程序,我使用 Spoon Virtual Application Studio 2012 对其进行了虚拟化。 当我使用 VS 2010 构建应用
我正在尝试将 ListBox 用作包含多个项目的 View ,当然,我需要在其中使用 UI 虚拟化。 问题是只有当我这样声明 ListBox 时虚拟化才有效:
我正在使用“react-virtualized”中的表。一切都很顺利。 我使用 rowRenderer 自定义了我的行,以添加“react-dnd”并让我的行能够被拖动。 我的问题是关于细胞的。可以定
我正在尝试弄清楚是否可以创建一个 SQL 函数,将参数行视为“鸭子类型”。也就是说,我希望能够传递来自具有某些公共(public)列名的不同表或 View 的行,并在函数内对这些列进行操作。 这里有一
我正在构建一个程序,该程序在主程序文件之外具有多个外部库和扩展。我的项目总大小为 134.2 MB。我想用 Turbo Studio 制作它的便携版本,但我面临一个明显的问题;在捕获文件并构建项目后,
这是我试图通过 WPF 实现的目标。 wrappanel 中作为标题和下方按钮的文本 block 。问题是这需要滚动等。我已经使用 ItemsControl 和每个组的绑定(bind)实现了这一点。我
今天我决定最终尝试虚拟化 TreeView。要做到这一点,绑定(bind)是必需的。所以我决定测试两件事——基于类型的 HierarchicalDataTemplate + 虚拟化。 我为一些数据创建
我是一名优秀的程序员,十分优秀!