KVM高级功能部署

KVM(Kernel-based Virtual Machine)是一个在Linux内核中实现的全虚拟化解决方案。除了基本的虚拟化功能外,KVM还提供了许多高级功能,以增强其性能、安全性和灵活性。以下是一些KVM的高级功能:

  • 硬件加速

    • Intel VT-x和AMD-V:KVM利用现代处理器提供的硬件虚拟化扩展,如Intel VT-x和AMD-V,提高虚拟机的性能和隔离性。
    • I/O虚拟化:通过Intel VT-d和AMD-Vi(IOMMU),可以直接将设备分配给虚拟机,提高I/O性能。
  • 内存管理

    • 内存过量使用(Memory Overcommitment):允许在物理内存不足的情况下创建和运行更多的虚拟机。
    • 内存气球(Memory Ballooning):动态调整虚拟机的内存使用,释放或分配内存给其他虚拟机。
    • 透明大页(Transparent Huge Pages, THP):提高内存访问性能,通过使用大页减少页表查找开销。
  • 网络虚拟化

    • 虚拟网络接口(Virtio-net):提供高效的网络通信,减少虚拟化开销。
    • 桥接(Bridging)NAT(Network Address Translation):支持多种网络配置模式,满足不同的网络需求。
    • **SDN(Software-Defined Networking)**集成:与Open vSwitch等SDN解决方案集成,实现复杂的网络拓扑和高级网络功能。
  • 存储虚拟化

    • 虚拟硬盘(Virtio-blk和Virtio-scsi):提供高效的磁盘I/O。
    • 精简配置(Thin Provisioning):减少实际存储使用量,仅在需要时分配存储空间。
    • 快照(Snapshots):支持对虚拟机的状态进行快照,方便备份和恢复。
  • 高可用性和容错

    • 实时迁移(Live Migration):在不停止虚拟机的情况下,将其从一台主机迁移到另一台主机。
    • 故障转移(Failover):在主机发生故障时,自动将虚拟机迁移到其他可用主机。
  • 安全性

    • 安全虚拟化扩展(Secure Virtualization Extensions):如Intel SGX和AMD SEV,提供更强的隔离和加密功能。
    • SELinux和AppArmor:结合KVM使用,增强虚拟机的安全性。
    • 虚拟机内存加密(VM Memory Encryption):保护虚拟机内存中的数据不被外部攻击者窃取。
  • 性能调优

    • CPU和I/O调度:提供多种调度器和参数,优化虚拟机的性能。
    • NUMA(Non-Uniform Memory Access)优化:在多处理器系统上优化内存和CPU的使用,提高性能。
  • 管理和自动化

    • libvirt:一个用于管理KVM虚拟机的API和工具集,支持脚本化和自动化管理。
    • 云平台集成:与OpenStack等云平台集成,实现大规模虚拟机管理和调度。

案例需求

1)通过静态迁移实现 KVM 虚拟机的迁移。

2)通过基于共享存储的动态迁移方式实现 KVM 虚拟机的迁移。

3)通过基于数据块的动态迁移方式实现 KVM 虚拟机的迁移。

4)实现 KSM 内存优化。

案例实现思路

1)通过拷贝磁盘文件和配置文件的方式实现静态迁移。

2)通过配置 NFS 共享服务,实现基于共享存储的动态迁移。

3)通过基于数据块的方式实现动态迁移。

4)针对同类型 KVM 虚拟机和应用使用 KSM 来优化内存。

案例实施

一:利用VNC安装kvm虚拟机

先将CentOS-7-x86_64-DVD-2009.iso拷贝到/opt下

1. 通过VNC Viewer安装虚拟机

在源宿主机上准备虚拟机

(1)用virt-install 命令安装虚拟机并设置VNC Viewer连接端口

[root@kvm01 ~]# systemctl stop firewalld

[root@kvm01 ~]# systemctl disable firewalld

[root@kvm1 ~]# mkdir -p /data_kvm/store

[root@kvm01 ~]# virt-install -n test01 -r 1024 --vcpus=1 --disk path=/data_kvm/store/test01.qcow2,size=10 -w bridge:br0 --virt-type=kvm --accelerate --autostart -c /opt/CentOS-7-x86_64-DVD-2009.iso --vnc --vncport=5901 --vnclisten=0.0.0.0

备注:

-n:指定虚拟机的名字。

-r:指定内存大小。

--vcpu:指定虚拟 CPU 个数。

--disk:指定磁盘文件放置位置及大小。

-w:制定所使用的网桥。

--autostart:设置虚拟机在宿主机开机时启动。

-c:指定镜像文件。

--vncport:通过 vnc viewer 连接的端口。

--vnclisten:通过 vnc

--accelerate:当安装qemu客户机时,如果支持可用kvmkqemu内核加速能力,KVM加速器

备注:

执行此命令时会有报错提示,如下所示,使用文本方式安装会有这个提示。意思是告诉用户没有图形界面,

可以使用VNC远程连接过来进行安装,

ERROR

unsupported format character '(0xffffffe7) at index 47

域安装失败,您可以运行下列命令重启您的域:

'virsh start virsh --connect qemu:///system start test01'

否则请重新开始安装。

(2)在windows宿主机上安装VNC Viewer

(3)打开VNC Viewer,新建一个连接,连接上后,安装虚拟机,

注意:填写的IP地址(192.168.10.201)是Linux宿主机的IP地址,开放的端口号5901映射到了test01虚拟机。连接成功后,就可以开始安装虚拟机了。

(4)安装后查看

[root@kvm01 ~]# virsh list --all

(5)启动虚拟机

[root@kvm01 ~]# virsh start test01

备注:

安装完后,虚拟机是关闭的状态

(6)在vnc终端上再次连接test01虚拟机并登录系统

二:静态迁移

2. 提取磁盘和配置文件

(1)查看虚拟机 test01 当前状态

[root@kvm01 ~]# virsh list --all

(2)关闭虚拟机 test01

[root@kvm01 ~]# virsh shutdown test01

[root@kvm01 ~]# virsh list --all

(3)导出虚拟机 test01 的 xml 配置文件

[root@kvm01 ~]# virsh dumpxml test01 > test01.xml

[root@kvm01 ~]# ll

(4)定位虚拟机 test01 的磁盘文件

[root@kvm01 ~]# virsh domblklist test01

  1. 拷贝配置文件和磁盘文件到目标宿主机 kvm02 上

现在kvm02上创建目录

[root@kvm2 ~]# mkdir -p /data_kvm/store

到kvm01上拷贝文件到kvm02上

[root@kvm01 ~]# scp test01.xml 192.168.10.202:/etc/libvirt/qemu/

[root@kvm01 ~]# scp /data_kvm/store/test01.qcow2 192.168.10.202:/data_kvm/store/

3. 在kvm02上配置和启动目标虚拟机

(1)查看被迁移过来的配置文件和磁盘文件

[root@kvm02 ~]# ls -l /etc/libvirt/qemu

[root@kvm02 ~]# ls -l /data_kvm/store/

(2)重新定义虚拟机 test01

[root@kvm02 ~]# virsh list --all

[root@kvm02 ~]# virsh define /etc/libvirt/qemu/test01.xml

[root@kvm02 ~]# virsh list --all

(3)启动虚拟机 test01

[root@kvm02 ~]# virsh start test01

[root@kvm02 ~]# virsh list --all

(4)连接虚拟机 test01 ,查看主机名

[root@kvm02 ~]# virt-manager

打开虚拟机管理器,查看虚拟机的运行

三:基于共享存储的动态迁移

1. 配置 NFS 共享存储

(1)打开一个新的服务器kvmnfs ,在 kvmnfs 服务器上面安装 NFS 服务

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# hostnamectl set-hostname kvmnfs

[root@localhost ~]# bash

[root@kvmnfs ~]# yum -y install nfs-utils

备注:

两台kvm主机的selinux的状态要一致。

(2)配置共享目录

[root@kvmnfs ~]# mkdir /data

[root@kvmnfs ~]# chown -R 777 /data/

[root@kvmnfs ~]# vim /etc/exports

/data 192.168.10.0/24(rw,sync,no_root_squash)

(3)启动并查看 NFS 服务

[root@kvmnfs ~]# systemctl enable nfs

[root@kvmnfs ~]# systemctl enable rpcbind

[root@kvmnfs ~]# systemctl start nfs

[root@kvmnfs ~]# systemctl start rpcbind

[root@kvmnfs ~]# showmount -e localhost

2. 挂载 NFS 目录

(1)源宿主机 kvm01 上查看 NFS 共享目录

[root@kvm01 ~]# showmount -e 192.168.10.101

(2)源宿主机 kvm01 和kvm02上创建 kgc 目录

[root@kvm01 ~]# mkdir /data_kvm/kgc

[root@kvm02 ~]# mkdir /data_kvm/kgc

(3)源宿主机 kvm01 和kvm02上都挂载共享目录

[root@kvm01 ~]# mount -t nfs 192.168.10.101:/data /data_kvm/kgc

[root@kvm01 ~]# mount

[root@kvm02 ~]# mount -t nfs 192.168.10.101:/data /data_kvm/kgc

[root@kvm02 ~]# mount

(4)源宿主机 kvm01 上设置自动挂载

[root@kvm01 ~]# vim /etc/fstab

192.168.10.101:/data /data_kvm/kgc nfs defaults 0 0

3:通过现有的磁盘文件生成虚拟机

(1)拷贝qcow2磁盘文件

将实验用到的系统镜像上传到KVM主机的root家目录中。这里直接使用CentOS官方提供的qcow2格式的系统镜像(CentOS-7-x86_64-GenericCloud-2009.qcow2),这个镜像可以直接部署到kvm或openstack的平台中。

[root@kvm01 ~]# cp /opt/CentOS-7-x86_64-GenericCloud-2009.qcow2 /data_kvm/store/test02.qcow2

(2)部署虚拟机

[root@kvm01 ~]# yum -y install libguestfs-tools

备注:

该工具提供了virt的高级命令,其中有一个virt-customize命令,可以为系统镜像设置密码。

[root@kvm01 ~]# virt-customize -a /data_kvm/store/test02.qcow2 --root-password password:aptech

[root@kvm01 ~]# virt-install \

--name=test02 \

-r 1024 \

--vcpus=1 \

--disk device=disk,bus=virtio,path='/data_kvm/store/test02.qcow2',size=10 \

-w bridge:br0 \

--virt-type=kvm \

--boot hd

备注:

--disk:指定存储设备及其属性

device:设备类型,如cdrom、disk或floppy等,默认为disk;

bus:磁盘总线类型,其值可以为ide、scsi、usb、virtio或xen

--virt-type:使用的hypervisor(虚拟机监视器),如kvm、qemu、xen等

--boot cdrom,hd,network:指定引导次序;

(3)登录测试

备注:

如果觉得慢,此处可以将原有的虚拟机克隆出来

[root@kvm01 ~]# virt-clone -o test01 -n test02 -f /data_kvm/kgc/test02.qcow2

[root@kvm01 ~]# virsh list --all

[root@kvm01 ~]# virsh domblklist test02

4. 动态迁移

(1)查看 kvm01 和 kvm02 两台宿主机上虚拟机的运行状态

[root@kvm01 ~]# virsh list --all

[root@kvm02 ~]# virsh list --all

(2)在源宿主机 kvm01 上执行迁移命令

[root@kvm01 ~]# virsh shutdown test02

[root@kvm01 ~]# virsh edit test02

添加红色部分

<devices>

<emulator>/usr/libexec/qemu-kvm</emulator>

<disk type='file' device='disk'>

<driver name='qemu' type='qcow2' cache='none'/>           

<source file='/data/kgc/test02.qcow2'/>

<target dev='vda' bus='virtio'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>

[root@kvm01 ~]# virsh start test02

Domain test02 started

[root@kvm01 ~]# virsh list --all

[root@kvm01 ~]# virsh migrate --live --verbose test02 qemu+ssh://192.168.10.202/system tcp://192.168.10.202

备注:

migrate :迁移

--verbose :显示迁移的进度

--live:实时迁移

(4)查看迁移后虚拟机的状态

[root@kvm01 ~]# virsh list --all

[root@kvm02 ~]# virsh list --all

迁移之后源宿主机 kvm01 上虚拟机 test02 被关闭,目标宿主机 kvm02 上虚拟机 test02

处于启动状态

5. 生成配置文件

(1)创建虚拟机 test02 配置文件

[root@kvm02 ~]# ls -l /etc/libvirt/qemu

[root@kvm02 ~]# virsh dumpxml test02 > /etc/libvirt/qemu/test02.xml

[root@kvm02 ~]# cd /etc/libvirt/qemu/

[root@kvm02 qemu]# ll

(2)定义虚拟机 test02 配置文件

[root@kvm02 qemu]# virsh define /etc/libvirt/qemu/test02.xml

四: 基于数据块的动态迁移

1. 在kvm01和kvm02上安装依赖包

设置好阿里的yum源

[root@kvm02 ~]# yum -y install centos-release-qemu-ev

[root@kvm02 ~]# vim /etc/yum.repos.d/CentOS-QEMU-EV.repo

[centos-qemu-ev]

name=CentOS-$releasever - QEMU EV

#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=virt-kvm-common

baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/virt/$basearch/kvm-common/

gpgcheck=1

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization

[root@kvm02 ~]# yum -y install qemu-kvm-ev

安装后重启系统

重启后注意检查防火墙的状态,要处于关闭状态

2. 迁移前准备工作

(1)源宿主机 kvm01 上的准备

[root@kvm01 ~]# vim /etc/hosts

192.168.10.201 kvm01

192.168.10.202 kvm02

[root@kvm01 ~]# virsh list --all

[root@kvm01 ~]# virsh shutdown test01

[root@kvm01 ~]# virt-clone -o test01 -n test03 -f /data_kvm/store/test03.qcow2

(2)目标宿主机 kvm02 上的准备

[root@kvm02 ~]# vim /etc/hosts

192.168.10.201 kvm01

192.168.10.202 kvm02

备注:

要确保kvm02主机没有同名的虚拟机

以下步骤是为了确保kvm02上没有同名的虚拟机,如果确定没有,就忽略

[root@kvm02 ~]# virsh list --all

[root@kvm02 ~]# virsh undefine test01

[root@kvm02 ~]# cd /data_kvm/store/

[root@kvm02 store]# ls

[root@kvm02 store]# rm -rf test01.qcow2

[root@kvm02 store]# virsh list --all

3. 在kvm02主机上检查资源池

[root@kvm02 store]# virsh pool-list --all

备注:

如果没有创建存储池,此处可能什么都没有,这是正常的

  1. 在kvm02主机上创建同名磁盘文件

[root@kvm02 ~]# mkdir -p /data_kvm/store

[root@kvm02 store]# qemu-img create -f qcow2 /data_kvm/store/test03.qcow2 20G

5. 在kvm01主机上执行迁移操作

[root@kvm01 ~]# virsh start test03

[root@kvm01 ~]# virsh migrate test03 qemu+ssh://192.168.10.202/system --live --persistent --undefinesource --copy-storage-all --verbose

备注:

--live:实时迁移

--persistent :将域保留为目标主机物理机器的持久性状态

--undefinesource:删除源主机物理机器上的客户机虚拟机

--copy-storage-all :使用全磁盘复制的非共享存储进行迁移

--verbose:显示迁移的进度

备注:

如果提示:

“错误:不支持的配置:Hypervisor 不支持 CPU 型号 Broadwell-noTSX-IBRS“

需要安装软件包如下:

yum -y install centos-release-qemu-ev

yum -y install qemu-kvm-ev

6. 验证迁移结果

[root@kvm01 ~]# virsh list --all

[root@kvm02 store]# virsh list --all

五:KSM

1: KSM 服务介绍

Linux内核特性称为Kernel Shared Memory(基于内核的共享内存)或Kernel Samepage Merging。KSMD作为守护进程,能够合并内存页面来增加并发虚拟机的数量。KSM 适用于宿主机过载的情况下。KSM 通过减少每个虚拟机实际占用的内存数,可以让多个虚拟机分配的内存数量之和大于物理内存数量。而对于相同类型的虚拟机,在物理内存量不变的情况下,可以在一个宿主机中创建更多虚拟机,从而提高虚拟化部署的密度,同时也可以提高物理资源的利用效率。

(1)检查当前 Linux 系统是否支持 KSM

[root@kvm02 ~]# egrep -i ksm /boot/config-3.10.0-1160.el7.x86_64

CONFIG_KSM=y

(2)ksmd服务的配置文件

[root@kvm02 ~]# ls -l /sys/kernel/mm/ksm/

备注:

KSM 的常用配置的作用分别如下所示。

  • max_page_sharing:设置每个 KSM 页面允许的最大共享数量。这个配置设置了重复数据删除限制,以避免虚拟内存 rmap 列表变得太大。max_page_sharing 最小值为 2,因为新创建的 KSM 页面至少有两个共享器。
  • merge_across_nodes:指定是否可以合并来自不同 numa 节点的页面。当设置为 0 时,ksm 只合并物理页面并驻留在同一 numa 节点的内存区域中,可以降低访问共享页面的延迟。
  • pages_to_scan:在 KSM 进程休眠之前会去扫描的内存数量。
  • run:控制 ksmd 进程是否运行,默认值为 0。要激活 ksm 必须设置其值为 1。如果设置为 0,表示停止运行 ksmd, 但会保留已经合并的内存页;如果设置为 1,表示马上运行 ksmd 进程;设置为 2 表示停止运行 ksmd,并分离已经合并的所有内存页,但是保留已经注册为合并的内存区域给下一次使用。
  • sleep_millisecs:设置 ksmd 进程休眠的时间(单位:毫秒),即为 ksmd 进程两次运行之间的间隔。
  • stable_node_chains_prune_millisecs: stable_node“ 中 链 接 的 整 个stable_node“dups”列表被周期性地扫描,以删除陈旧的 stable_nodes。该参数的值用于调节重复扫描的时间(单位:毫秒)。

2:配置 KSM 优化内存

(1)先将虚拟机test01克隆出三份

[root@kvm02 ~]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2

[root@kvm02 ~]# virt-clone -o test01 -n test03 -f /data_kvm/store/test03.qcow2

[root@kvm02 ~]# virt-clone -o test01 -n test04 -f /data_kvm/store/test04.qcow2

注意:

克隆虚拟机,源虚拟机需要关闭状态

(2)开启所有的虚拟机

[root@kvm02 ~]# virsh start test01

[root@kvm02 ~]# virsh start test02

[root@kvm02 ~]# virsh start test03

[root@kvm02 ~]# virsh start test04

(3)查看Linux宿主机的内存使用情况

[root@kvm02 ~]# free

              total        used        free      shared  buff/cache   available

Mem:        3861288     2464360      135440       15208     1261488     1157748

Swap:       4194300           0     4194300

(4)启动 KSM 服务

[root@kvm02 ~]# systemctl start ksm

[root@kvm02 ~]# systemctl start ksmtuned

检查/sys/kernel/mm/ksm/run的值是否为1,如果不是,修改为1

[root@kvm02 ~]# echo 1 > /sys/kernel/mm/ksm/run

(5)再次查看Linux宿主机的内存使用情况

[root@kvm02 ~]# free

              total        used        free      shared  buff/cache   available

Mem:        3861288     2449008      103556       15212     1308724     1173004

Swap:       4194300           0     4194300

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

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

相关文章

基于Deap遗传算法在全量可转债上做因子挖掘(附python代码及全量因子数据)

原创文章第604篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 在4.x的时候&#xff0c;咱们分享过deap遗传算法挖掘因子的代码和数据&#xff0c;今天我们来升级到5.x中。 源码发布Quantlab4.2&#xff0c;Deap因子挖掘|gplearn做不到的咱们也…

全新微软语音合成网页版源码,短视频影视解说配音网页版系统-仿真人语音

源码介绍 最新微软语音合成网页版源码&#xff0c;可以用来给影视解说和短视频配音。它是TTS文本转语言&#xff0c;API接口和PHP源码。 这个微软语音合成接口的源码&#xff0c;超级简单&#xff0c;就几个文件搞定。用的是官方的API&#xff0c;试过了&#xff0c;合成速度…

Datawhale AI夏令营 AI+逻辑推理 Task2总结

Datawhale AI夏令营 AI逻辑推理 Task2总结 一、大语言模型解题方案介绍 1.1 大模型推理介绍 ​ 推理是建立在训练完成的基础上&#xff0c;将训练好的模型应用于新的、未见过的数据&#xff0c;模型利用先前学到的规律进行预测、分类和生成新内容&#xff0c;使得AI在实际应…

力扣SQL50 换座位

Problem: 626. 换座位 &#x1f468;‍&#x1f3eb; 参考题解 Code SELECT(CASEWHEN MOD(id, 2) ! 0 AND counts ! id THEN id 1WHEN MOD(id, 2) ! 0 AND counts id THEN idELSE id - 1END) AS id,student FROMseat,(SELECTCOUNT(*) AS countsFROMseat) AS seat_counts O…

C语言实现三子棋

通过一段时间的学习&#xff0c;我们已经能够较为熟练地使用分支语句&#xff0c;循环语句&#xff0c;创建函数&#xff0c;创建数组&#xff0c;创建随机数等。之前我们做过一个扫雷游戏&#xff0c;今天让我们再尝试创作一个三子棋游戏吧~ 一、三子棋游戏的思路 三子棋的游…

AI Agent调研--7种Agent框架对比!盘点国内一站式Agent搭建平台,一文说清差别!大家都在用Agent做什么?

代理&#xff08;Agent&#xff09;乃一种智能实体&#xff0c;具备自主环境感知与决策行动能力&#xff0c;旨在达成既定目标。作为个人或组织之数字化替身&#xff0c;AI代理执行特定任务与交易&#xff0c;其核心价值在于简化工作流程&#xff0c;削减繁复性&#xff0c;并有…

IoTDB 入门教程 实战篇④——C#示例(开源)

文章目录 一、前文二、新建C#项目三、NuGet安装四、示例源码五、查询数据六、参考 一、前文 IoTDB入门教程——导读 本文详细阐述了如何通过一个C#项目成功连接到IoTDB时序数据库&#xff0c;进而展示了如何向该数据库高效地写入数据以及执行精确的数据查询操作。 此示例旨在为…

Javascript前端面试基础(九)

浏览器缓存 浏览器缓存分为强缓存和协商缓存。当客户端请求某个资源时&#xff0c;获取缓存的流程如下 先根据这个资源的一些http header判断它是否命中强缓存&#xff0c;如果命中则直接从本地获取缓存资源&#xff0c;不会发请求到服务器;当强缓存没有命中时&#xff0c;客户…

【Qt开发】No matching signal for on_toolButton_clicked() 解决方案

【Qt开发】No matching signal for on_toolButton_clicked() 解决方案 文章目录 No matching signal for xxx 解决方案附录&#xff1a;C语言到C的入门知识点&#xff08;主要适用于C语言精通到Qt的C开发入门&#xff09;C语言与C的不同C中写C语言代码C语言到C的知识点Qt开发中…

企业级Linux系统防护

一、企业级Linux系统防护概述 一&#xff09;企业级Linux系统安全威胁 企业级Linux系统安全威胁列表 解决的主要安全威胁安全威胁牵涉到的人员及操作文件系统防护避免有意/无意的文件篡改、越权访问&#xff0c;根用户&#xff08;root&#xff09;权限泛滥企业内部用户误操作、…

UPLOAD-LABS靶场[超详细通关教程,通关攻略]

---------------------------------------- 靶场环境&#xff1a; 下载链接&#xff1a; https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master 使用小皮集成环境来完成这个靶场 将文件放到WWW目录下就可以进行访问 ------------------------------------…

CTF-Web习题:[GXYCTF2019]Ping Ping Ping

题目链接&#xff1a;[GXYCTF2019]Ping Ping Ping 解题思路 访问靶机&#xff0c;得到如下页面&#xff0c;类似于URL参数 尝试用HackBar构造url传输过去看看 发现返回了ping命令的执行结果&#xff0c;可以猜测php脚本命令是ping -c 4 $ip&#xff0c;暂时不知道执行的函数…

学习Numpy的奇思妙想

学习Numpy的奇思妙想 本文主要想记录一下&#xff0c;学习 numpy 过程中的偶然的灵感&#xff0c;并记录一下知识框架。 推荐资源&#xff1a;https://numpy.org/doc/stable/user/absolute_beginners.html &#x1f4a1;灵感 为什么 numpy 数组的 shape 和 pytorch 是 tensor 是…

Ribbon负载均衡与内核原理

什么是Ribbon? 目前主流的负载方案分为两种&#xff1a; 集中式负载均衡&#xff0c;在消费者和服务提供方中间使用独立的代理方式进行负载&#xff0c;有硬件的&#xff08;比如F5&#xff09;&#xff0c;也有软件的&#xff08;Nginx&#xff09;客户端根据自己的请求做负…

FFmpeg研究

1.FFmpeg介绍 FFmpeg的全称是“Fast Forward Moving Picture Expert Group”&#xff0c;组件由命令行应用程序和函数库两部分组成。通俗概括来说&#xff0c;FFmpeg 是一个免费的开源程序库&#xff0c;一个多媒体音视频处理分析工具软件&#xff0c;且提供命令行方式调用&am…

C语言笔记38 •数据结构--队列•

数据结构--队列 1.队列的定义 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有 先 进先出 FIFO(First In First Out). 入队列&#xff1a;进行插入操作的一端称为 队尾 出队列&#xff1a;进行删除操作的…

Jmeter混合压测(2407)

一 压测需求&#xff1a; 电商作为服务端&#xff0c;至少需要满足并发量,QPS:100/s,TPS:20/s。例如场景&#xff1a; 电商交易中&#xff0c;商品图片请求量最多&#xff0c;电商服务端需要满足并发请求查询图片信息。各家可能会并发请求同一家电商商品、订单等内容。 二 压…

基于多种机器学习算法的短信垃圾分类模型

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主导入第三方库读取数据数据预处理数据分析与可视化机器学习建模贝叶斯逻辑回归支持向量机随机森林XGBoost总结每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私…

redis集群三种模式

redis 集群 高可用 redis集群三种模式 主从复制 奇数台 3 一主两从 哨兵模式 3 一主两从 cluser 集群 6 3 3 3 9 主从复制&#xff1a;和mysql的主从复制类似&#xff0c;写入主的数据通过rdb方式把数据同步到从服务器。从不能更新到主&#xff0c;…

未来不会使用 AI 的人真的会被淘汰吗?

AI 是今年大火的一个话题&#xff0c;随着 ChatGPT 之类的一系列大模型开始流行以后&#xff0c;有不少的培训机构宣称这样的口号: “未来不会使用 AI 的人将会被淘汰”。我觉得这个观点本身并没有错&#xff0c;但是关键在于那些培训机构出于自身的利益&#xff0c;故意忽略了…