KVM高级功能部署

news2024/9/23 7:28:57

kvm虚拟机迁移

静态迁移(拷贝)

  •        关闭虚拟机
  •        拷贝
  •        磁盘镜像  .xml配置文件
  •        操作方便


动态迁移

动态迁移分为基于共享存储的动态迁移和基于数据块的动态迁移
 基于共享存储的动态迁移

  • 利用共享存储,存磁盘镜像,存配置文件
  • 速度快
  • 不用关虚拟机    

基于数据块的动态迁移

  • 不用关虚拟机
  • 不需要共享存储
  • 速度相较于基于共享存储的动态迁移较慢    

本案例环境

案例需求

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

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

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

4)实现 KSM 内存优化。

一:通过VNC Viewer安装虚拟机

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

在源宿主机上准备虚拟机

(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客户机时,如果支持可用kvm或kqemu内核加速能力,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地址是Linux宿主机的IP地址,开放的端口号5901映射到了test01虚拟机。连接成功后,就可以开始安装虚拟机了。

(4)安装后查看

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

(5)启动虚拟机

[root@kvm01 ~]# virsh start test01

备注:

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

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

二:静态迁移

 提取磁盘和配置文件

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

(5)拷贝配置文件和磁盘文件到目标宿主机 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/

在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

备注:

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

4.在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.coloradmin.cn/o/1964385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OCCT使用指南:Foundation Classes

1、介绍 本手册解释了如何使用Open CASCADE Technology (OCCT) Foundation Classes。它提供了关于基础类的基础文档。有关基础类及其应用的高级信息&#xff0c;请参阅我们的电子学习和培训产品。 基础类提供各种通用服务&#xff0c;如自动动态内存管理&#xff08;通过句柄操…

抖店到家外卖重新布局,本地生活服务商创业机遇再现

自抖音平台去年推出团购、外卖、小时达等即时零售业务以来&#xff0c;这一举措不仅重塑了本地生活服务领域的竞争格局&#xff0c;也为众多拥有线下门店的商家开辟了全新的增长路径。众多商家敏锐捕捉到了这一市场机遇&#xff0c;纷纷入驻短视频平台&#xff0c;利用平台的强…

c基础 函数

函数 1.函数基本用法 1.1定义和三要素 函数是一个完成特定功能的代码模块&#xff0c;其程序代码独立&#xff0c;通常要求有返回值&#xff0c;也可以是空值。 三要素&#xff1a;功能 参数 返回值 参数&#xff1a;参数就是在函数声明时和函数调用时定义的变量。它用于传递…

钟氏崛起的奥秘:归隐与清议

话题的主角是钟皓&#xff0c;东汉后期人&#xff0c;颍川钟氏的第十代。他官做的不大&#xff0c;最高职务是一个小县的县长&#xff08;俸禄400石&#xff09;&#xff0c;远远没有父、祖辈高&#xff0c;父亲做到了光禄大夫、太守&#xff08;2000石&#xff09;。然而&…

【数据结构与算法】详解计数排序:小范围整数排序的最佳选择

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​ 目录 一、引言 二、计数排序的基本原理 三、实现步骤 1. 确定数据范围 2. 初始化计数数组…

JavaScript基础——JavaScript调用的三种方式

JavaScript简介 JavaScript的作用 JavaScript的使用方式 内嵌JS 引入外部js文件 编写函数 JavaScript简介 JavaScript&#xff08;简称“JS”&#xff09;是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。它是Web开发中最常用的脚本语言之一&#x…

高清无水印,录屏软件对比盘点

现在生活中不论是想要记录赛事精彩瞬间、制作教学视频&#xff0c;都可以用录屏大师这样的录屏软件来实现。今天我就介绍几款备受好评的录屏工具。 1.福昕录屏大师 链接直达&#xff1a;https://www.foxitsoftware.cn/REC/ 这个软件就是一个专业的录屏工具。它可以控制屏幕…

UltraEdit v27文本代码程序编辑器免费版下载安装教程(亲测可用)

前言 UltraEdit 是一套功能强大的文本编辑器&#xff0c;可以编辑文本、十六进制、ASCII 码&#xff0c;完全可以取代记事本&#xff08;如果电脑配置足够强大&#xff09;&#xff0c;内建英文单字检查、C 及 VB 指令突显&#xff0c;可同时编辑多个文件&#xff0c;而且即使…

OrangePi AI Pro 固件升级 —— 让主频从 1.0 GHz 到 1.6 GHz 的巨大升级

前言 OrangePi AI Pro 最近发布了Ascend310B-firmware 固件包&#xff0c;据说升级之后可以将 CPU 主频从 1.0 GHz 提升至 1.6 GHz&#xff0c;据群主大大说&#xff0c;算力也从原本的 8T 提升到了 12T&#xff0c;这波开发板的成长让我非常的 Amazing 啊&#xff01;下面就来…

【学习日记】U-Boot 环境变量与 U-Boot 命令概述

本文记录了在学习 i.MX6ULL 的 U-Boot 代码时关于环境变量和 U-Boot 命令的一些关键点。 1 环境变量的定义 在 U-Boot 中&#xff0c;使用 #define 和反斜杠 \ 来定义多行字符串。 反斜杠 \&#xff1a; 反斜杠用于指示宏定义在下一行继续。这意味着所有的行将被视为一个连续的…

mqtt协议详解(0)初步认识mqtt

文章目录 1. 介绍2. 主要特性3. 架构1. 介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种构建在TCP/IP协议之上的轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境,例如IOT。 MQTT 协议于 1…

JVM:栈上的数据存储

文章目录 一、Java虚拟机中的基本数据类型 一、Java虚拟机中的基本数据类型 在Java中有8大基本数据类型&#xff1a; 这里的内存占用&#xff0c;指的是堆上或者数组中内存分配的空间大小&#xff0c;栈上的实现更加复杂。 Java中的8大数据类型在虚拟机中的实现&#xff1a;…

【error】ModuleNotFoundError: No module named ‘mmcv.cnn.weight_init‘

from&#xff1a; oduleNotFoundError: No module named ‘mmcv.cnn.weight_init‘_modulenotfounderror: no module named mmcv.cnn-CSDN博客https://blog.csdn.net/qq_36679208/article/details/107815137?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.…

java基础 之 集合与栈的使用(二)

文章目录 List 和 Set的比较Set接口对于set的无序该怎么理解&#xff1f;&#xff08;一&#xff09;实现类&#xff1a;HashSet&#xff08;二&#xff09;实现类&#xff1a;LinkedHashSet【代码部分】HashSet 和 LinkedHashSet浅谈HashSet 和 LinkedHashSet的打印结果 &…

MYSQL-初级-事务篇

目录 概述为什么有事务&#xff1f; 事务操作事务的四大特性&#xff08;AICD&#xff09;原子性&#xff08;Atomicity&#xff09;一致性&#xff08;Consistency&#xff09;隔离性&#xff08;Isolation&#xff09;持久性&#xff08;Durability&#xff09; 并发事务问题…

为虚幻引擎C++项目设置VS开发环境

为虚幻引擎C项目设置VS开发环境 虚幻引擎&#xff08;简称UE&#xff09; 能与 Visual Studio&#xff08;简称VS&#xff09; 完美结合&#xff0c;使你能够快速、简单地改写项目代码&#xff0c;并能即刻查看编译结果。设置Visual Studio以使用虚幻引擎能提高开发者对虚幻引…

rust 桌面 sip 软电话(基于tauri 、pjsip库)

本文尝试下rust 的tauri 桌面运用 原因在于体积小 1、pjsip 提供了rust 接口官方的 rust demo 没编译出来 在git找了个sip-phone-rs-master https://github.com/Charles-Schleich/sip-phone-rs 可以自己编译下pjsip lib库替换该项目的lib 2、创建一个tauri demo 引用 [depe…

操作系统(4)——文件系统

目录 小程一言文件系统管理基础概念&功能基本概念文件的结构和属性文件的操作文件的安全性和权限控制文件系统的实现和分配方式 问题&解答1、文件系统在操作系统中起到什么作用&#xff1f;2、文件的逻辑结构和物理结构有何区别&#xff1f;3、如何理解文件权限控制在操…

时间序列异常值检验替换——基于Hampel滤波器

Hampel滤波器作为一种强大的时间序列异常值处理工具&#xff0c;在数据清洗和分析中发挥着重要作用。本文将深入研究Hampel滤波器的原理和数学推导&#xff0c;并通过实际代码演示其在异常值处理中的应用 1. Hampel滤波器简介 1.1 什么是Hampel滤波器&#xff1f; Hampel滤波…

【达梦数据库】通过线程pid定位会话SQL

【达梦数据库】通过线程pid定位会话SQL 1、查找数据库进程 ps -ef|grep dmserver2、通过进程pid去找对应的线程 top -H -p $pid -------------------- top命令经常用来监控linux的系统状况&#xff0c;是常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用…