当前位置: 首页 > news >正文

关于k8s的pvc存储卷

目录

1.PVC 和 PV 

1.1 PV

1.2 PVC

1.3 StorageClass

1.4 PV和PVC的生命周期

2.实战演练

2.1 创建静态pv

2.2 创建动态pv

3.总结


1.PVC 和 PV 

1.1 PV

PV 全称叫做 Persistent Volume,持久化存储卷。它是用来描述或者说用来定义一个存储卷的,这个通常都是由运维工程师来定义。

1.2 PVC

PVC 的全称是 Persistent Volume Claim,是持久化存储的请求。它是用来描述希望使用什么样的或者说是满足什么条件的 PV 存储。

PVC 的使用逻辑:在 Pod 中定义一个存储卷(该存储卷类型为 PVC),定义的时候直接指定大小,PVC 必须与对应的 PV 建立关系,PVC 会根据配置的定义去 PV 申请,而 PV 是由存储空间创建出来的。PV 和 PVC 是 Kubernetes 抽象出来的一种存储资源。

1.3 StorageClass

上面介绍的PV和PVC模式是需要运维人员先创建好PV,然后开发人员定义好PVC进行一对一的Bond,但是如果PVC请求成千上万,那么就需要创建成千上万的PV,对于运维人员来说维护成本很高,Kubernetes提供一种自动创建PV的机制,叫StorageClass,它的作用就是创建PV的模板。

创建 StorageClass 需要定义 PV 的属性,比如存储类型、大小等;另外创建这种 PV 需要用到的存储插件,比如 Ceph 等。 有了这两部分信息,Kubernetes 就能够根据用户提交的 PVC,找到对应的 StorageClass,然后 Kubernetes 就会调用 StorageClass 声明的存储插件,自动创建需要的 PV 并进行绑定。

PV是集群中的资源。 PVC是对这些资源的请求,也是对资源的索引检查。 

1.4 PV和PVC的生命周期

PV和PVC之间的相互作用遵循这个生命周期:
Provisioning(配置)---> Binding(绑定)---> Using(使用)---> Releasing(释放) ---> Recycling(回收)

●Provisioning,即 PV 的创建,可以直接创建 PV(静态方式),也可以使用 StorageClass 动态创建
●Binding,将 PV 分配给 PVC
●Using,Pod 通过 PVC 使用该 Volume,并可以通过准入控制StorageProtection(1.9及以前版本为PVCProtection) 阻止删除正在使用的 PVC
●Releasing,Pod 释放 Volume 并删除 PVC
●Recycling,回收 PV,可以保留 PV 以便下次使用,也可以直接从云存储中删除

根据这 5 个阶段,PV 的状态有以下 4 种:
●Available(可用):表示可用状态,还未被任何 PVC 绑定
●Bound(已绑定):表示 PV 已经绑定到 PVC
●Released(已释放):表示 PVC 被删掉,但是资源尚未被集群回收
●Failed(失败):表示如果 PV 或 PVC 遇到无法解决的问题,例如配额不足、配置错误或者绑定过程中的异常情况,可能会进入 Failed 状态

一个PV从创建到销毁的具体流程如下:
1、一个PV创建完后状态会变成Available,等待被PVC绑定。
2、一旦被PVC邦定,PV的状态会变成Bound,就可以被定义了相应PVC的Pod使用。
3、Pod使用完后会释放PV,PV的状态变成Released。
4、变成Released的PV会根据定义的回收策略做相应的回收工作。有三种回收策略,Retain、Delete和Recycle。Retain就是保留现场,K8S集群什么也不做,等待用户手动去处理PV里的数据,处理完后,再手动删除PV。Delete策略,K8S会自动删除该PV及里面的数据。Recycle方式,K8S会将PV里的数据删除,然后把PV的状态变成Available,又可以被新的PVC绑定使用。

2.实战演练

2.1 创建静态pv

根据下图创建pv、pvc及配置nfs

配置nfs

192.168.9.116服务器配置nfs,
mkdir -p /data/volumes/v{1..5}
vim /etc/exports
/data/volumes/v1 192.168.9.0/24(rw,sync,no_root_squash)
/data/volumes/v2 192.168.9.0/24(rw,sync,no_root_squash)
/data/volumes/v3 192.168.9.0/24(rw,sync,no_root_squash)
/data/volumes/v4 192.168.9.0/24(rw,sync,no_root_squash)
/data/volumes/v5 192.168.9.0/24(rw,sync,no_root_squash)exportfs -arv



创建pv

vim demo1-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:      #由于 PV 是集群级别的资源,即 PV 可以跨 namespace 使用,所以 PV 的 metadata 中不用配置 namespacename: pv001
spec:capacity:                               定义存储能力,一般用于设置存储空间storage: 1Gi                          指定大小accessModes:                            定义访问模式- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle 回收策略#storageClassName: slow                 自定义存储类名称,此配置用于绑定具有相同类别的PVC和PVnfs:                                    定义存储类型path: /data/volumes/v1                定义挂载卷路径server: 192.168.9.116                 定义服务器名称
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv002
spec:capacity:storage: 2GiaccessModes:- ReadWriteOnce#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v2server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv003
spec:capacity:storage: 2GiaccessModes:- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v3server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv004
spec:capacity:storage: 4GiaccessModes:- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v4server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv005
spec:capacity:storage: 5GiaccessModes:- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v5server: 192.168.9.116
---kubectl apply -f demo1-pv.yaml

创建pvc

vim demo2-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mypvc001
spec:accessModes:- ReadWriteManyresources:requests:storage: 2Gi#storageClassName: slow
kubectl apply -f demo2-pvc.yaml

kubectl apply -f demo2-pvc.yaml   #再以同样的文件创建pvc
kubectl get pv,pvc
#可以发现即使条件再匹配,也不会与原先处于released状态的pv匹配

vim demo1-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:      #由于 PV 是集群级别的资源,即 PV 可以跨 namespace 使用,所以 PV 的 metadata 中不用配置 namespacename: pv001
spec:capacity:                               定义存储能力,一般用于设置存储空间storage: 1Gi                          指定大小accessModes:                            定义访问模式- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle 回收策略#storageClassName: slow                 自定义存储类名称,此配置用于绑定具有相同类别的PVC和PVnfs:                                    定义存储类型path: /data/volumes/v1                定义挂载卷路径server: 192.168.9.116                 定义服务器名称
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv002
spec:capacity:storage: 2GiaccessModes:- ReadWriteOnce#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v2server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv003
spec:capacity:storage: 2GiaccessModes:- ReadWriteOnce- ReadWriteMany persistentVolumeReclaimPolicy: Recycle     #当设置指定访问策略为 Recycle#storageClassName: slownfs:path: /data/volumes/v3server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv004
spec:capacity:storage: 4GiaccessModes:- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v4server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv005
spec:capacity:storage: 5GiaccessModes:- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v5server: 192.168.9.116
---kubectl apply -f demo1-pv.yaml
kubectl apply -f demo2-pvc.yaml
kubectl get pv,pvc

结合pod,将pv、pvc一起运行

apiVersion: v1
kind: PersistentVolume
metadata:name: pv001
spec:capacity:storage: 1GiaccessModes:- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v1server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv002
spec:capacity:storage: 2GiaccessModes:- ReadWriteOnce#persistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v2server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv003
spec:capacity:storage: 2GiaccessModes:- ReadWriteOnce- ReadWriteManypersistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v3server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv004
spec:capacity:storage: 4GiaccessModes:- ReadWriteOnce- ReadWriteManypersistentVolumeReclaimPolicy: Recycle#storageClassName: slownfs:path: /data/volumes/v4server: 192.168.9.116
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv005
spec:capacity:storage: 5GiaccessModes:- ReadWriteOnce- ReadWriteMany#persistentVolumeReclaimPolicy: Recycle#storageClassName: tannfs:path: /data/volumes/v5server: 192.168.9.116
---kubectl apply -f demo1-pv.yamlvim demo2-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mypvc001
spec:accessModes:- ReadWriteManyresources:requests:storage: 2Gi#storageClassName: tankubectl apply -f demo2-pvc.yaml

vim demo3-pod.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: demo3name: demo3-pod
spec:volumes:                     - name: tan-volpersistentVolumeClaim:claimName: mypvc001         #创建的pvc名称containers:- image: soscscs/myapp:v1name: demoports:- containerPort: 80resources: {}volumeMounts:- name: tan-volmountPath: /mnt/dnsPolicy: ClusterFirstrestartPolicy: Always
status: {}kubectl apply -f demo3-pod.yaml


kubectl delete pod demo3-pod

2.2 创建动态pv

上传nfs-client-provisioner.tar 、nfs-client.zip压缩包到master节点上传nfs-client-provisioner.tar到两个node节点



创建 Service Account,用来管理 NFS Provisioner 在 k8s 集群中运行的权限,设置 nfs-client 对 PV,PVC,StorageClass 等的规则

master节点
kubectl apply -f nfs-client-rbac.yaml
kubectl get serviceaccounts

vim /etc/kubernetes/manifests/kube-apiserver.yaml- --feature-gates=RemoveSelfLink=false       #添加这一行
由于 1.20 版本禁用了 selfLink,所以 k8s 1.20+ 版本通过 nfs provisioner 动态生成 PV 会报错,需要添加
cd /etc/kubernetes/manifests
mv kube-apiserver.yaml /tmp/                #进行重启操作
mv /tmp/kube-apiserver.yaml ./

nfs服务器
vim /etc/exports
/opt/nfs 192.168.9.0/24(rw,sync,no_root_squash)
exportfs -avr
两个node节点检查#创建 NFS Provisionermaster节点
cd /root/day9/pv
vim nfs-client-provisioner.yamlkubectl apply -f nfs-client-provisioner.yaml

创建 StorageClass,负责建立 PVC 并调用 NFS provisioner 进行预定的工作,并让 PV 与 PVC 建立关联

vim nfs-client-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-client-storageclass
provisioner: nfs-tan        #要与 nfs-client-provisioner.yaml中设置的一致
parameters:archiveOnDelete: "true"   #做数据备份kubectl apply -f nfs-client-storageclass.yaml

创建 PVC 和 Pod 测试

vim demo2-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mypvc003
spec:accessModes:- ReadWriteManyresources:requests:storage: 2GistorageClassName: nfs-client-storageclass



测试不备份:

vim nfs-client-storageclass.yamlkubectl delete -f nfs-client-storageclass.yaml && kubectl apply -f nfs-client-storageclass.yaml
kubectl get pv,pvc

vim pod.yaml
apiVersion: v1
kind: Pod
metadata:labels:run: demo3name: dem3-pod
spec:volumes:- name: scj-volpersistentVolumeClaim:claimName: mypvc003containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80resources: {}volumeMounts:- name: scj-volmountPath: /mntdnsPolicy: ClusterFirstrestartPolicy: Always
status: {}kubectl apply -f pod.yaml
kubectl exec -it dem3-pod -- sh
cd /mnt
echo '123456' > tan.txt

kubectl delete pod dem3-pod
kubectl delete pvc mypvc003  #删除查看是否备份


3.总结

存储资源有什么?

pv、pvc

创建PV的方式:
静态PV创建:手动根据PV资源对象的配置文件创建PV资源
动态PV创建:根据PVC的配置通过引用StorageClass(简称SC)资源触发存储卷插件动态的创建PV资源

相关文章:

关于k8s的pvc存储卷

目录 1.PVC 和 PV 1.1 PV 1.2 PVC 1.3 StorageClass 1.4 PV和PVC的生命周期 2.实战演练 2.1 创建静态pv 2.2 创建动态pv 3.总结 1.PVC 和 PV 1.1 PV PV 全称叫做 Persistent Volume,持久化存储卷。它是用来描述或者说用来定义一个存储卷的,…...

【物联网设备端开发】ESP开发工具:QEMU的使用方法

概要 本文提供了一些运行QEMU的ESP特定说明。有关QEMU的一般使用问题,请参阅官方文档:https://www.qemu.org/documentation/. 编译 QEMU 准备工作 在此之前,请查看有关构建先决条件的QEMU文档。如果你在Linux主机上构建QEMU,你…...

c++中std::endl 和“\n“ 这两个换行符有什么区别

std::endl 和 "\n" 都用于在C中生成换行符,但它们之间有一些重要的区别 std::endl: 功能:输出一个换行符,并刷新输出流(即缓冲区)。作用:确保所有数据立即输出到目的地,例…...

http中get和post怎么选

5.4.2.怎么选择1.如果你是想从服务器上获取资源,建议使用GET请求,如果你这个请求是为了向服务器提交数据,建议使用POST请求。2.大部分的form表单提交,都是post方式,因为form表单中要填写大量的数据,这些数据…...

数据分析及应用:快手直播间人员在线分析

目录 0 需求描述 1、进入直播间的高峰期为?(以进入用户数衡量) 2、晚上 11 点,哪个直播间的进入人数最多? 3、20:00-23:00,娱乐类、搞笑类,进入人数最多直播间分别是? 4、娱乐类、搞笑类,人均在线时长(退出时间-进入时间)最长的直播间分别是? 5、同时在线人数…...

【Python】nn.nn.CircularPad1、2、3d函数和nn.ConstantPad1、2、3d函数详解和示例

前言 在深度学习中,尤其是在处理图像、音频或其他多维数据时,数据填充(Padding)是一个常见的操作。填充不仅可以保持数据的空间维度,还能在卷积操作中避免信息丢失。PyTorch提供了多种填充方式,其中nn.Cir…...

LearnOpenGL——混合、面剔除

LearnOpenGL——混合、面剔除 混合 Blending一、丢弃片段 Alpha Test二、混合 Alpha Blending渲染顺序 面剔除一、环绕顺序二、面剔除 混合 Blending OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明的物体可以是完全透明的&#xff0…...

视频网站为何热衷于SCDN

视频网站为何热衷于SCDN?随着互联网技术的飞速发展,视频网站已成为人们日常生活中不可或缺的一部分。无论是观看高清电影、热门剧集,还是直播体育赛事、游戏竞技,视频网站都以其丰富的内容和便捷的访问方式吸引了无数用户。然而&a…...

Redis与DataBase保持数据一致性

文章目录 1. 读取数据2. 写数据2.1 先操作缓存2.2 先操作数据库 在我们系统中缓存最常用的策略是:服务端需要同时维系DB和Cache,并且是以DB的结果为准, Cache-Aside Pattern(缓存分离模式、旁路缓存)。 1. 读取数据 当…...

解决 MacOS 连接公司 VPN 成功但是不能网络的问题

目录 解决办法2024 Mac mini 爆料 解决办法 操作比较简单,修改配置文件即可(如果没有则需要手动创建)。 sudo vim /etc/ppp/options在此文件下,加入 plugin L2TP.ppp: plugin L2TP.ppp如果文件里有l2tpnoipsec&…...

【Kubernetes】k8s集群之Pod容器资源限制和三种探针

目录 一、Pod容器的资源限制 1.资源限制 2.Pod 和容器的资源请求与限制 3.CPU 资源单位 4.内存资源单位 二、Pod容器的三种探针 1.探针的三种规则 2.Probe支持三种检查方法: 一、Pod容器的资源限制 1.资源限制 当定义 Pod 时可以选择性地为每个容器设定所…...

从古代驿站体系看软件安全管控@安全历史04

在古代,车、马都很慢,信息传递很不顺畅,中央的政令又是如何传达至地方的呢?实际上,很多朝代都有专门的驿站制度,可以保障全国各地的信息传递,对于维护统治和稳定有着关键作用。 若将国家比作一个…...

8.8 哈希表简单 1 Two Sum 141 Linked List Cycle

1 Two Sum class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {//给的target是目标sum 要返回vector<int> res(2,0);是在num中找加数//首先假设每个输入都是由唯一的结果&#xff0c;而且不适用相同的元素两次一共有n*(n-1)种…...

动态规划之——背包DP(完结篇)

文章目录 概要说明分组背包模板例题1思路code模板例题2思路code 有依赖的背包问题模板例题思路code 背包问题求方案数模板例题思路code 背包问题求具体方案模板例题思路code 概要说明 本文讲分组背包、有依赖的背包、 背包问题求方案数以及背包问题求具体方案 入门篇(01背包和…...

Advanced IP Scanner - 网络扫描工具介绍

Advanced IP Scanner 是一款免费、快速且用户友好的网络扫描工具。它能够帮助用户扫描局域网&#xff08;LAN&#xff09;中的所有设备&#xff0c;提供详细的设备信息&#xff0c;包括IP地址、MAC地址、设备名称和厂商信息。该工具对IT管理员和普通用户都非常有用&#xff0c;…...

数据库事务的四大特性ACID

数据库事务的四大特性ACID 数据库事务&#xff08;Transaction&#xff09;是数据库管理系统&#xff08;DBMS&#xff09;执行过程中的一个逻辑单位&#xff0c;由一个或多个SQL语句组成&#xff0c;这些语句作为一个整体一起向系统提交&#xff0c;要么全部执行&#xff0c;…...

ELK架构介绍

一、ELK简介 ELK 是由三个开源软件组成的&#xff0c;分别是&#xff1a;Elasticsearch、Logstash和Kibana&#xff0c;这三个软件各自在日志管理和数据分析领域发挥着重要作用。Elasticsearch提供分布式存储和搜索能力&#xff1b;Logstash负责数据收集和处理&#xff0c;而K…...

Vscode下ESP32工程函数定义无法跳转

1.删除.vscode 2.按下 ctrlshiftp&#xff0c;搜索 ESP-IDF:Add vscode Configuration Folder...

liquibase.exception.LockException: Could not acquire change log lock.

项目场景&#xff1a; 启动应用花了好长时间&#xff0c;最后报出异常. 问题描述 启动应用花了好长时间&#xff0c;最后报出异常. 异常&#xff1a; Caused by: liquibase.exception.LockException: Could not acquire change log lock. Currently locked by LAPTOP-OQ9VB…...

【多线程-从零开始-捌】阻塞队列,消费者生产者模型

什么是阻塞队列 阻塞队里是在普通的队列&#xff08;先进先出队列&#xff09;基础上&#xff0c;做出了扩充 线程安全 标准库中原有的队列 Queue 和其子类&#xff0c;默认都是线程不安全的 具有阻塞特性 如果队列为空&#xff0c;进行出队列操作&#xff0c;此时就会出现阻…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...