百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

你不得不知的云计算与虚拟化基础知识(下)

nanshan 2025-07-01 22:16 3 浏览 0 评论

1.4KVM日常管理

[root@linux-node1opt]# virsh start CentOS-7-x86_64 #启动刚才创建的CentOS7KVM虚拟机

DomainCentOS-7-x86_64 started

[root@linux-node1opt]# virsh list #查看KVM虚拟机是否启动

Id Name State

----------------------------------------------------

3 CentOS-7-x86_64 running

1.4.1CPU扩容

[root@linux-node1opt]# virsh edit CentOS-7-x86_64 #为了实现CPU的热添加,就需要更改Cpu的最大值,当然热添加值不能超过最大值

4 #当前为1,自动扩容最大为4

[root@linux-node1opt]# virsh shutdown CentOS-7-x86_64 #关闭KVM虚拟机

DomainCentOS-7-x86_64 is being shutdown

[root@linux-node1opt]# virsh start CentOS-7-x86_64 #启动KVM虚拟机

DomainCentOS-7-x86_64 started

[root@linux-node1opt]# virsh setvcpus CentOS-7-x86_64 2 --live #热修改为2个cpu(不知减少),高版本自动激活

[root@KVM]#grep processor /proc/cpuinfo |wc -l #通过vnc登录KVM虚拟机查看是否扩容成功

2

在创建虚拟机时指定cpu

[root@linux-node1~]# virt-install --help|grep vcpus

--vcpus VCPUS 为虚拟机配置的 vcpus 数。例如:

--vcpus 5

--vcpus5,maxcpus=10,cpuset=1-4,6,8

--vcpussockets=2,cores=4,threads=2,

1.4.2内存扩容

内存的设置拥有一个气球(balloon)机制,可以增大减少,但是也要设置一个最大值,默认并没有最大值,也可以在安装时指定。

4194304 #修改最大支持内存扩容为4G

1048576 #当前KVM虚拟机内存为1G

重启虚拟机

[root@linux-node1~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon #查看当前KVM内存大小

balloon:actual=1024

[root@linux-node1~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd balloon #热添加

unexpected end of expression

[root@linux-node1~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info balloon #在次查看 balloon: actual=2001

1.4.3硬盘管理

更改虚拟机中存储,硬盘设置(不建议生产环境使用硬盘的扩大收缩模式,很容易产生故障)

[root@linux-node1~]# qemu-img --help |grep -i "formats:"

Supportedformats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppyhost_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftphttps http cloop bochs blkverify blkdebug

硬盘格式都可以通过qeum-img管理,具体qemu-img --help

全镜像格式(代表raw):设置多大就是多大,写入速度快,方便的转换为其他格式,性能最优,但是占用空间大。 稀疏格式(代表qcow2):支持压缩,快照,镜像,更小的存储空间(即用多少占多少)

1.4.4网络管理

默认情况KVM的网络是NAT模式,但是在生产情况,用的多的都是网桥模式。

修改eth0(这里CentOS7的eth0在装机时就指定了,那如果没指定怎么办?

[root@linux-node1~]# brctl addbr br0 #添加一个网卡

[root@linux-node1~]# brctl show #查看网卡信息

bridgename bridge id STP enabled interfaces

br0 8000.000000000000 no

virbr0 8000.5254009f0311 yes virbr0-nic

[root@linux-node1~]# brctl addif br0 eth0 && ip addr del dev eth0 192.168.56.111/24&&ifconfig br0

192.168.56.111/24 up && route add default gw192.168.56.2 && iptables -F #把eth0加入网桥,使用桥接模式,给br设置ip,添加路由网关,关闭防火墙

[root@linux-node1~]# ifconfig br0 #查看网桥的IP

br0:flags=4163 mtu 1500

inet 192.168.56.111 netmask 255.255.255.0 broadcast 192.168.56.255

inet6 fe80::20c:29ff:fe5d:cc27 prefixlen 64 scopeid 0x20

ether 00:0c:29:5d:cc:27 txqueuelen 0 (Ethernet)

RX packets 4813 bytes 472527 (461.4 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 2705 bytes 510369 (498.4 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@linux-node1~]# virsh edit CentOS-7-x86_64 #编辑虚拟机的网络配置使用br0网桥模式

#虚拟机网络连接方式

#为虚拟机分配MAC地址,务必唯一,如果是dhcp获得同样IP会引起冲突

#当前主机网桥名称

#然后配置静态IP地址,重启网卡,即可以通过xshell连接上KVM虚拟机了。

1.5KVM常用管理

[root@linux-node1~]# virt-install #建立kvm虚拟机

[root@linux-node1~]# virsh list #查看正在运行的KVM虚拟机

[root@linux-node1~]# virsh list --all #查看所有KVM虚拟机

[root@linux-node1~]# virsh start name #启动KVM虚拟机

[root@linux-node1~]# virsh shutdown name #正常关闭KVM虚拟机

[root@linux-node1~]# virsh destroy name #强制关闭KVM虚拟机(类似于直接断电)

[root@linux-node1~]# virsh suspend name #挂起KVM虚拟机

[root@linux-node1~]# virsh resume name #恢复挂起的KVM虚拟机

[root@linux-node1~]# virsh dumpxml name #查看KVM虚拟机配置文件

[root@linux-node1~]# virsh edit name #编辑KVM虚拟机的xml配置文件

[root@linux-node1~]# virsh undefine name #彻底删除KVM虚拟机,不可逆,如果想找回来,需要备份/etc/libvirt/qemu的xml文件)

1.6KVM性能优化

1.6.1CPU优化

inter的cpu的运行级别,按权限级别高低Ring3->Ring1->Ring0(Ring2和Ring1暂时用不上)Ring3为用户态,Ring0为内核态

Ring3的用户态是没有权限管理硬件的,需要切换到内核态Ring0,这样的切换(系统调用)称为上下文切换,物理机到虚拟机多次的上下文切换,势必会导致性能出现问题。对于全虚拟化,inter实现了技术VT-x,在CPU硬件上实现了加速转换,CentOS7默认是不需要开启的。

1.6.2内存优化

宿主机虚拟内存-> 宿主机物理内存

虚拟机的虚拟内存 -> 虚拟机的物理内存

VMM通过采用影子列表解决内存转换的问题,影子页表是一种比较成熟的纯软件的内存虚拟化方式,但影子页表固有的局限性,影响了VMM的性能,例如,客户机中有多个CPU,多个虚拟CPU之间同步页面数据将导致影子页表更新次数幅度增加,测试页表将带来异常严重的性能损失。如下图1-1为影子页表的原理图

在此之际,Inter在最新的Core I7系列处理器上集成了EPT技术(对应AMD的为RVI技术),以硬件辅助的方式完成客户物理内存到机器物理内存的转换,完成内存虚拟化,并以有效的方式弥补了影子页表的缺陷,该技术默认是开启的,如下图1-2为EPT技术的原理。

1.6.3磁盘IO优化

1、Noop Scheduler:简单的FIFO队列,最简单的调度算法,由于会产生读IO的阻塞,一般使用在SSD硬盘,此时不需要调度,IO效果非常好

2、Anticipatory IO Scheduler(asscheduler)适合大数据顺序顺序存储的文件服务器,如ftp server和web server,不适合数据库环境,DB服务器不要使用这种算法。

3、Deadline Schedler:按照截止时间的调度算法,为了防止出现读取被饿死的现象,按照截止时间进行调整,默认的是读期限短于写期限,就不会产生饿死的状况,一般应用在数据库

4、Complete Fair Queueing Schedule:完全公平的排队的IO调度算法,保证每个进程相对特别公平的使用IO [root@linux-node1~]# dmesg|grep -i "scheduler" #查看本机Centos7默认所支持的调度算法

[ 1.332147] io scheduler noop registered

[ 1.332151] io scheduler deadline registered(default)

[ 1.332190] io scheduler cfq registered

临时更改某个磁盘的IO调度算法,将deadling模式改为cfq模式

[root@linux-node1~]# cat /sys/block/sda/queue/scheduler

noop[deadline] cfq

[root@linux-node1~]# echo cfq >/sys/block/sda/queue/scheduler

[root@linux-node1~]# cat /sys/block/sda/queue/scheduler

noopdeadline [cfq]

[root@linux-node1~]# vim /boot/grub/menu.lst #使更改的IO调度算法永久生效,需要更改内核参数

kernel/boot/vmlinuz-3.10.0-229.el7 ro root=LABEL=/ elevator=deadline rhgb quiet

1.7虚拟化镜像制作

1.在开始创建过虚拟磁盘,并命名为CentOS-7.1-x86_64.raw,这个是虚拟机镜像。

[root@linux-node1~]# ll /opt/

total5203344

-rw-r--r-- 1 qemu qemu 4310695936 12月 28 04:46CentOS-7.1.iso

-rw-r--r--.1 qemu qemu 10737418240 12月 28
08:55CentOS-7.1-x86_64.raw

2. 分区的时候,只分一个/分区(不需要swap分区)。

3. 删除网卡里面{UUID,MAC}

4. 如果有
/etc/udev/rules.d/70-persistent-ipoib.rules 则删除。

5. iptables关闭、selinux关闭

6.安装基础软件包。(net-tools lrzsz screen tree vim wget)

2016革新之年,双节同庆惊喜不断!

本站文章除注明转载外,均为本站原创或翻译

相关推荐

爬虫基础之自动化工具 DrissionPage 的使用

概述前三期文章中已经介绍到了Selenium与Playwright、Pyppeteer的使用方法,它们的功能都非常强大。而本期要讲的DrissionPage更为独特,强大,而且使用更为方...

你不得不知的云计算与虚拟化基础知识(下)

1.4KVM日常管理[root@linux-node1opt]#virshstartCentOS-7-x86_64#启动刚才创建的CentOS7KVM虚拟机DomainCentOS-7-x86...

Linux 终端复用神器 Tmux 使用详解

Tmux是TerminalMultiplexer的简称,它是一款优秀的终端复用软件,类似GNUscreen,但比screen更出色。tmux来自于OpenBSD,采用BSD授权。使用它最直...

Java快速开发框架若依(RuoYi)centos7.6部署

RuoYi是一个JavaEE企业级快速开发平台,基于经典技术组合(SpringBoot、SpringSecurity、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单...

推荐一款Linux的进程管理利器——Supervisor

一、supervisor简介项目中需要将一些自己开发的服务放到系统进程中在后台运行。一开始使用的是screen工具配合写了一个shell脚本,基本实现了启动、重启、停止操作,但是对于进程守护方面不是太...

读红蓝攻防:技术与策略34日志分析

1.日志分析1.1.要调查安全问题,通常需要查看来自不同供应商和不同设备的多种日志1.2.一旦了解了如何读取日志,在多个供应商产品的日志之间切换就会变得更容1.3.许多工具可以自动执行日志聚合...

Dify存储告急别焦虑!6步迁移教程,系统无缝切换,流畅度暴涨!

小王最近愁坏了--用Dify搭建的公司知识库因频繁导入行业文档,旧服务器硬盘红灯频闪,每次跑模型训练都弹出"存储空间不足"报错,甚至有两次差点弄丢用户对话历史数据!而某初创...

解决CentOS 中显示乱码问题(centos编码)

解决CentOS中显示乱码问题vi/etc/sysconfig/i18nLANG="en_US.UTF-8"SUPPORTED="en_US.UTF-8:en_US:e...

Tmux——超越screen的终端工具(tmux操作)

我们都知道,远程会话如果连接中断了,当前的进程任务也会中断,虽然说可以把任务放在后台,但显示不是很直观。以前linux系统常带的终端工具screen,我们今天介绍比screen更强大的工具...

MySQL如何找到使用的是哪个配置文件?

一个正在运行的MySQL实例,如何查看对应的配置文件用的是哪一个?如果存在多个文件,生效的顺序是怎么样的?1.方法一首先可以先选择查看MySQL进程信息来判断使用了哪个配置文件,例如:ps-au...

MySQL合集-基于MHA搭建高可用架构

MHA架构介绍MHA是MasterHighAvailability的缩写,它是目前MySQL高可用方面的一个相对成熟的解决方案,其核心是使用perl语言编写的一组脚本,是一套优秀的作为MySQL高...

mysql8版本的卸载、安装、升级(mysql8卸载如何彻底删除)

mysql的卸载yumremovemysql-community-client-plugins-8.0.42-1.el7.x86_64yumremovemysql-community-comm...

如何用MySQL设计一个分布式锁?(mysql分布式数据库+分布式存储)

前言分布式锁想必大家都不陌生,可以用来解决在分布式环境下,多个用户在同一时间读取/更新相同的资源带来的问题。比如秒杀场景下的库存问题、rediskey失效情况下请求直接打到MySQL中造成MySQL...

QT 5.12.11 编译MySQL 8 驱动教程- 1.01版

安装编译环境:qt5.12.11mysql8.0.28修改mysql.pro工程文件,编译生成动态库mysql.pro文件位置:D:\Alantop_Dir\alantop_sde\Qt\Qt5....

MySQL中exists和in的区别(exists在sql中的用法)

在MySQL中,EXISTS和IN用于在查询中检查某个值是否存在于某个集合或表中。exists在MySQL中,EXISTS是一个布尔操作符,用于在SELECT查询中检查子查询是否返回任何行。如果子查询...

取消回复欢迎 发表评论: