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

RAID磁盘阵列管理

一. 什么是RAID

RAID是英文Redundant Array of Independent Disks的缩写,中文翻译过来就是“独立冗余磁盘阵列”。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。从而提供比单个硬盘更高的存储性能和提供数据备份技术。

利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。(并不是所有类型的raid都有这种功能,只有特定的几个有)。

二. RAID各种级别及其作用

1.RAID 0

RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。

RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据(当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中。)

RAID 0不能应用于数据安全性要求高的场合。

特点:高性能,没有冗余,一坏全坏

2.RAID 1

通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据

当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1可以提高读取性能

RAID1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据

(类似于镜像卷,但作用上不止于镜像卷单纯的备份,而是能很好的运用备份中的信息)

特点:提高读取性能,成本较大。

3.RAID 5

N(N>=3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N 份数据在N块盘上循环均衡存储。

N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高。

(N-1)/N磁盘利用率

可靠性高,允许坏1块盘,不影响所有数据

:校验数据起到当一块硬盘挂掉后,其他硬盘可以通过校验数据计算出缺失的数据,起到备份的功能且校验数据循环的在每块硬盘上均衡写入

特点

        1).最少三块磁盘

        2).数据条带形式分布

        3).以奇偶校验作冗余

        4).适合多读少写的情景,是性能与数据冗余最佳的这种方案

4. RAID 6

1.N(N>=4)快盘组成阵列,(N-2)/N磁盘利用率

2.与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用

不同的算法,即使两块磁盘同时失效也不会影响数据的使用

3.相对于RAID5有更大的"写损失",因此写性能较差

5.RAID 10

1.RAID10其实是RAID 1+0

2.N(偶数,N>=4)块盘两两镜像后,再组合成一个RAID0

N/2磁盘利用率,N/2块盘同时写入,N块盘同时读取

3.性能高,可靠性高

6.RAID 1+0

N(偶数,N>=4)块盘两两镜像之后,在组合成一个RAID0

N/2磁盘利用率,N/2块盘同时写入,N块盘同时读取

性能高,可靠性高

RAID 0+1(先做条带,才能做镜像)

读写性能与RAID 10相同

安全性低于RAID 10

特点

        1).最少四块磁盘

        2).先按RAID 0 分成两种,再分别对两组按RAID 1  方式镜像兼顾冗余(提供镜像存储)和性能(数据条带形分布)

        3).在实际应用中较为常用

 三. 案例实施

1. 创建raid

        1.1 创建raid 0

利用磁盘分区新建2个磁盘分区,每个大小为20 GB。用这2个20 GB的分区来模拟1个40 GB的硬盘。

[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 19.5G  0 part ├─centos-root 253:0    0 17.5G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   20G  0 disk 
sr0              11:0    1    4G  0 rom  

配置本地YUM安装源,将提供的mdadm_yum文件夹上传至/opt目录,示例代码如下:

[root@localhost ~]# mv /etc/yum.repos.d/* /media/
[root@localhost ~]# vi /etc/yum.repos.d/yum.repo
[mdadm]
name=mdadm
baseurl=file:///opt/mdadm_yum/
gpgcheck=0
enabled=1

 安装工具mdadm,使用已有YUM源进行安装,命令如下:

[root@localhost ~]# yum install -y mdadm 

创建一个RAID 0设备:这里使用/dev/sdb和/dev/sdc做实验。

将/dev/sdb和/dev/sdc建立RAID等级为RAID 0的md0(设备名)。

[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc 
mdadm: chunk size defaults to 512K
mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.mdadm:区块大小默认为512K
mdadm:使用/sys/module/md_mod/parameters/new_array时无法创建md0
mdadm:默认为1.2版元数据
mdadm:array/dev/md0已启动。

查看系统上的RAID,命令及返回结果如下。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid0]                         #阵列类型
md0 : active raid0 sdc[1] sdb[0]                #磁盘的状态,磁盘的数量41908224 blocks super 1.2 512k chunks      
unused devices: <none>个性:[raid0]
md0:活动raid0 sdc[1]sdb[0]
41908224块超级1.2 512k块
未使用的设备:<none>

查看RAID详细信息,命令及返回结果如下。

[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=35792eb3:51f58189:44cef502:cdcee441
(阵列/dev/md0元数据=1.2名称=本地主机。本地域:0 UUID=2816724a:d2525a8b:8eaefd23:7e57f770)
// 解析:
-s :扫描配置文件或/proc/mdstat,得到阵列缺失信息(即缺失或损坏设备的信息)
-D :打印阵列设备的详细信息
[root@localhost ~]# mdadm -D /dev/md0 /dev/md0:Version : 1.2Creation Time : Sat Oct  5 10:21:41 2019Raid Level : raid0Array Size : 41908224 (39.97 GiB 42.91 GB)Raid Devices : 2Total Devices : 2Persistence : Superblock is persistentUpdate Time : Sat Oct  5 10:21:41 2019State : clean Active Devices : 2Working Devices : 2Failed Devices : 0Spare Devices : 0Chunk Size : 512K
Consistency Policy : unknownName : localhost.localdomain:0  (local to host localhost.localdomain)UUID : 35792eb3:51f58189:44cef502:cdcee441Events : 00       8       16        0      active sync   /dev/sdb1       8       32        1      active sync   /dev/sdc

生成配置文件mdadm.conf,命令如下。

[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf 

对创建的RAID进行文件系统创建并挂载,命令如下。

[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0               isize=256    agcount=16, agsize=654720 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25=                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=5120, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /raid0/
[root@localhost ~]# mount /dev/md0 /raid0/
[root@localhost ~]# df -Th /raid0/
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/md0       xfs    40G   33M   40G   1% /raid0

设置成开机自动挂载,命令如下。

[root@localhost ~]# blkid /dev/md0 
/dev/md0: UUID="8eafdcb6-d46a-430a-8004-d58a68dc0751" TYPE="xfs"
[root@localhost ~]# echo "UUID=8eafdcb6-d46a-430a-8004-d58a68dc0751 /raid0 xfs defaults 0 0" >> /etc/fstab// 解析:
/etc/fstab文件的作用:磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。

        1.2 删除RAID操作

[root@localhost ~]# umount /raid0/
[root@localhost ~]# mdadm -S /dev/md0
[root@localhost ~]# rm -rf /etc/mdadm.conf
[root@localhost ~]# rm -rf /raid0/
[root@localhost ~]# mdadm --zero-superblock /dev/sdb
[root@localhost ~]# mdadm --zero-superblock /dev/sdc
[root@localhost ~]# vi /etc/fstab
UUID=8eafdcb6-d46a-430a-8004-d58a68dc0751 /raid0 xfs defaults 0 0  //删除此行(即取消虚拟机的开机自动读取文件形成挂载,前提应该是要保证磁盘的正常)

2. 运维操作

2.1 raid 5运维操作

利用磁盘分区新建4个磁盘分区,每个大小为20 GB。用3个20 GB的分区来模拟raid 5,加一个热备盘。

[root@localhost ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/sdb /dev/sdc /dev/sdd --spare-devices=1 /dev/sde 
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail create md5 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

查看RAID的详细信息,命令如下。

[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:Version : 1.2Creation Time : Sat Oct  5 13:17:41 2019Raid Level : raid5Array Size : 41908224 (39.97 GiB 42.91 GB)Used Dev Size : 20954112 (19.98 GiB 21.46 GB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistentUpdate Time : Sat Oct  5 13:19:27 2019State : clean Active Devices : 3Working Devices : 4Failed Devices : 0Spare Devices : 1Layout : left-symmetricChunk Size : 512KConsistency Policy : unknownName : localhost.localdomain:5  (local to host localhost.localdomain)UUID : f51467bd:1199242b:bcb73c7c:160d523aEvents : 18Number   Major   Minor   RaidDevice State0       8       16        0      active sync   /dev/sdb1       8       32        1      active sync   /dev/sdc4       8       48        2      active sync   /dev/sdd3       8       64        -      spare   /dev/sde
// raid5,它需要校验(同步),就是这个状态:spare rebuilding。等一会,它完成校验了自动就出现active sync

 2.2 模拟硬盘故障

[root@localhost ~]# mdadm -f /dev/md5 /dev/sdb 
-f : 设置某盘为坏盘
mdadm: set /dev/sdb faulty in /dev/md5

 查看RAID的详细信息,命令如下。

[root@localhost ~]# mdadm -D /dev/md5    -D :打印阵列设备的详细信息
/dev/md5:Version : 1.2Creation Time : Sat Oct  5 13:17:41 2019Raid Level : raid5Array Size : 41908224 (39.97 GiB 42.91 GB)Used Dev Size : 20954112 (19.98 GiB 21.46 GB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistentUpdate Time : Sat Oct  5 13:28:54 2019State : clean Active Devices : 3Working Devices : 3Failed Devices : 1Spare Devices : 0Layout : left-symmetricChunk Size : 512KConsistency Policy : unknownName : localhost.localdomain:5  (local to host localhost.localdomain)UUID : f51467bd:1199242b:bcb73c7c:160d523aEvents : 37Number   Major   Minor   RaidDevice State3       8       64        0      active sync   /dev/sde1       8       32        1      active sync   /dev/sdc4       8       48        2      active sync   /dev/sdd0       8       16        -      faulty   /dev/sdb
// 这里的显示信息也与上述不同

从以上结果可以发现原来的热备盘/dev/sde正在参与RAID 5的重建,而原来的/dev/sdb变成了坏盘。

热移除故障盘,命令如下:

[root@localhost ~]# mdadm -r /dev/md5 /dev/sdb 
mdadm: hot removed /dev/sdb from /dev/md5

查看RAID的详细信息,命令如下:

[root@localhost ~]# mdadm -D /dev/md5          
/dev/md5:Version : 1.2Creation Time : Sat Oct  5 13:17:41 2019Raid Level : raid5Array Size : 41908224 (39.97 GiB 42.91 GB)Used Dev Size : 20954112 (19.98 GiB 21.46 GB)Raid Devices : 3Total Devices : 3Persistence : Superblock is persistentUpdate Time : Sat Oct  5 13:35:54 2019State : clean Active Devices : 3Working Devices : 3Failed Devices : 0Spare Devices : 0Layout : left-symmetricChunk Size : 512KConsistency Policy : unknownName : localhost.localdomain:5  (local to host localhost.localdomain)UUID : f51467bd:1199242b:bcb73c7c:160d523aEvents : 38Number   Major   Minor   RaidDevice State3       8       64        0      active sync   /dev/sde1       8       32        1      active sync   /dev/sdc4       8       48        2      active sync   /dev/sdd

格式化RAID并进行挂载,命令如下:

[root@localhost ~]# mkfs.xfs /dev/md5 -f
existing superblock read failed: Input/output error
mkfs.xfs: pwrite64 failed: Input/output error)
meta-data=/dev/md5               isize=256    agcount=16, agsize=654720 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25=                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=5120, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md5 /mnt/
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G  906M   17G   6% /
devtmpfs                 903M     0  903M   0% /dev
tmpfs                    913M     0  913M   0% /dev/shm
tmpfs                    913M  8.6M  904M   1% /run
tmpfs                    913M     0  913M   0% /sys/fs/cgroup
/dev/sda1                497M  125M  373M  25% /boot
tmpfs                    183M     0  183M   0% /run/user/0
/dev/md5                  40G   33M   40G   1% /mnt

相关文章:

RAID磁盘阵列管理

一. 什么是RAID RAID是英文Redundant Array of Independent Disks的缩写&#xff0c;中文翻译过来就是“独立冗余磁盘阵列”。简单的说&#xff0c;RAID是一种把多块独立的硬盘&#xff08;物理硬盘&#xff09;按不同的方式组合起来形成一个硬盘组&#xff08;逻辑硬盘&#…...

利用ffmpeg库实现音频AAC编解码

AAC‌&#xff08;Advanced Audio Coding&#xff09;是一种音频编码技术&#xff0c;出现于1997年&#xff0c;基于MPEG-2的音频编码技术。AAC具有高效的数据压缩能力和较高的音质&#xff0c;适用于各种音频应用场景。例如&#xff0c;在智能设备中&#xff0c;AAC技术被广泛…...

微博ip属地不发微博会不会变

随着社交媒体的普及&#xff0c;微博作为其中的佼佼者&#xff0c;一直备受关注。而且微博上线了显示用户IP属地的功能&#xff0c;这一功能旨在减少冒充热点事件当事人、恶意造谣、蹭流量等不良行为&#xff0c;确保传播内容的真实性和透明度。然而&#xff0c;这也引发了一些…...

appium之Toast元素识别

Appium之Toast元素识别教程与实例 一、Toast简介 Toast是Android系统中的轻量级消息提示框&#xff0c;以浮动形式短暂显示&#xff08;通常2-3秒&#xff09;&#xff0c;无法被点击且不会获取焦点。常见于登录失败、操作提示等场景&#xff0c;如“密码错误”或“网络异常”。…...

「JavaScript深入」WebSocket:高效的双向实时通信技术

WebSocket WebSocket 的特点1. 全双工通信2. 持久连接3. 低延迟4. 二进制和文本支持5. 连接管理6. 二进制数据传输 WebSocket 协议详解1. 握手过程2. 数据帧结构 WebSocket 的实现服务器端实现&#xff08;Node.js ws库&#xff09;1. 基础服务器2. 广播功能实现3. 心跳机制客…...

C#从入门到精通(1)

目录 第一章 C#与VS介绍 第二章 第一个C#程序 &#xff08;1&#xff09;C#程序基本组成 1.命名空间 2.类 3.Main方法 4.注释 5.语句 6.标识符及关键字 &#xff08;2&#xff09;程序编写规范 1.代码编写规则 2.程序命名方法 3.元素命名规范 第三章 变量 &…...

配置阿里云yum源

配置阿里云yum源 修改默认的yum仓库&#xff0c;把原有的移动到创建的目录里&#xff08;踢出国外的yum源&#xff09; # 切换到/ect/yum.repos.d/目录下 cd /etc/yum.repos.d/ # 新建repo目录 mkdir repo # 把原有的移动到创建的目录里 mv ./*.repo ./repo/配置yum源 # 找到…...

头歌实训--Pandas合并数据集--第3关:案例:美国各州的统计数据

任务描述 本关为练习关卡&#xff0c;请按照编程要求完成任务&#xff0c;获取美国各州2010年的人口密度排名。 import pandas as pd import numpy as npdef task3():#********** Begin **********##读取三个csv文件pop pd.DataFrame(pd.read_csv("./step3/state-popula…...

仿“东方甄选”直播商城小程序运营平台

在公域直播流量红利趋于饱和、流量成本大幅攀升的当下&#xff0c;私域直播为企业开辟了新的流量聚集和转化渠道&#xff0c;特别是对于那些希望在私域流量领域取得突破的品牌商家来说&#xff0c;直播场景以其独特的高频互动氛围&#xff0c;相比其他运营方式&#xff0c;展现…...

CentOS 7.9 安装 Python 3.10 详细步骤及常见问题解决

一、环境准备与依赖安装 更新系统与开发工具 sudo yum update -y sudo yum groupinstall "Development Tools" -y sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel \ readline-devel tk-devel libffi-devel gdbm-devel db4-de…...

ORACLE 19.8版本数据库环境EXPDP导数据的报错处理

近期用户在做EXPDP导出时&#xff0c;报错异常termination终止;EXPDP本身是简单的功能并且这个环境也是经常做导出的&#xff0c;到底是什么原因导致了这个问题呢&#xff1f; 导出脚本报错&#xff1a; 分析导出日志&#xff0c;当时系统资源充足但是进程启动失败&#xff0c;…...

LabVIEW运动控制(二):EtherCAT运动控制器的多轴示教加工应用(下)

前面两节课程分别给大家介绍了“控制器连接、定时获取轴状态、轴坐标、控制器型号、轴参数设置、IO控制、Basic文件下载”&#xff08;详情点击→LabVIEW运动控制&#xff08;二&#xff09;&#xff1a;EtherCAT运动控制器的多轴示教加工应用&#xff08;上&#xff09;&#…...

Ubuntu Qt: no service found for - “org.qt-project.qt.mediaplayer“

1、前言 在一次项目过程中&#xff0c;因项目需求&#xff0c;需要将windows开发的Qt项目迁移到ubuntu系统中&#xff0c;且在某个功能项中需要播放音频&#xff0c;在windows系统中能够正常运行&#xff0c;但在ubuntu系统中却显示defaultServiceProvider::requestService(): …...

C++ 各种map对比

文章目录 特点比较1. std::map2. std::unordered_map3. std::multimap4. std::unordered_multimap5. hash_map&#xff08;SGI STL 扩展&#xff09; C 示例代码代码解释 特点比较 1. std::map 底层实现&#xff1a;基于红黑树&#xff08;一种自平衡的二叉搜索树&#xff09…...

纯内网环境安装1Panel面板与商店应用

文章目录 前序准备开始联网机器配置1Panel配置安装所有离线需要的应用导出Docker镜像导出1Panel配置 离线机器配置安装1Panel覆盖配置导入容器镜像重建应用 关于Jar包的运行 前序 之前一篇文章讲解了如何在内网环境下安装1Panel并操作商店应用安装应用程序&#xff0c;但是在一…...

软件工程面试题(三)

1.简单介绍下java&#xff1f;Spring的AOP&#xff0c;IOC的讲述 对struts2的了解&#xff0c;1&#xff0c;2的比较 xml的了解 J2ee的webserviced的协议&#xff1f; Spring AOP:代理机制 Spring提供的自动代理机制 Spring的IoC来实组件之间的依赖关系注入, 使控制层及…...

【 C++】构造函数和成员函数

详细探讨 C 中的构造函数和成员函数&#xff08;方法&#xff09;&#xff0c;并通过代码示例进行说明。 1. 构造函数 (Constructors) 目的&#xff1a; 构造函数是一种特殊的成员函数&#xff0c;其主要目的是在创建对象时初始化对象的数据成员。名称&#xff1a; 构造函数的…...

OpenCV计算摄影学(22)将输入的彩色图像转换为两种风格的铅笔素描效果函数pencilSketch()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 铅笔风格非写实线描图。 该函数通过图像处理技术将输入的彩色图像转换为两种风格的铅笔素描效果&#xff1a; dst1&#xff1a;炭笔效果的灰度图…...

Event driven agentic document workflows 笔记 - 1

1. 课程介绍 主题&#xff1a;与 LlamaIndex 合作构建的事件驱动代理文档工作流讲师&#xff1a;Laurie Voss&#xff08;LlamaIndex 开发者关系副总裁&#xff09; 2. 代理文档工作流简介 定义&#xff1a;基于代理的应用程序&#xff0c;用于自动化端到端文档处理工作流。…...

影响单模光纤耦合效率的分析

影响单模光纤耦合效率的因素 如果想使单模光纤的耦合效率最高&#xff0c;入射光束需要满足以下条件&#xff1a; &#xff08;1&#xff09;入射光束接近高斯光&#xff1b; &#xff08;2&#xff09;入射光束从光纤端面正入射&#xff1b; &#xff08;3&#xff09;入射…...

windows+ragflow+deepseek实战之一excel表查询

ragflows平台部署参考文章 Win10系统Docker+DeepSeek+ragflow搭建本地知识库 ragflow通过python实现参考这篇文章 ragflow通过python实现 文章目录 背景效果1、准备数据2、创建知识库3、上传数据并解析4、新建聊天助理5、测试会话背景 前面已经基于Win10系统Docker+DeepSeek+…...

从“不敢买大”到“按墙选屏”,海信电视如何凭百吋重构客厅?

电视买小了&#xff0c;成为茜茜新房入住后最大的遗憾。 新房装修的时候&#xff0c;茜茜担心电视买大了眼睛看着累&#xff0c;因此把尺寸选在了65吋。结果入住后&#xff0c;孩子看动画片嚷着“画面太小”&#xff0c;老公看球赛吐槽“看不清球员号码”&#xff0c;全家追剧…...

ABAP 长文本编辑器

加个屏幕 *&---------------------------------------------------------------------* *& Report YDEMO2 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------…...

【K8S】ImagePullBackOff状态问题排查。

ImagePullBackOff 是在使用 Kubernetes&#xff08;K8s&#xff09;时经常遇到的一种错误状态&#xff0c;下面为你详细介绍其含义、可能的原因及解决办法。 含义 当你在 K8s 集群中创建一个 Pod 时&#xff0c;Kubelet 会尝试从指定的镜像仓库拉取所需的容器镜像。如果拉取镜…...

Logstash 使用指南

Logstash 是一个开源的数据收集引擎&#xff0c;能够从多种数据源收集数据&#xff0c;进行转换和过滤&#xff0c;并将数据发送到指定的目的地&#xff08;如 Elasticsearch、文件、数据库等&#xff09;。它是 Elastic Stack&#xff08;ELK Stack&#xff09;的重要组成部分…...

Python 位运算符大全

在 Python 中,位运算符用于对整数进行位级别的操作。位运算符直接操作二进制位,适用于处理二进制数据、位掩码、权限控制等场景。Python 提供了多种位运算符,包括按位与、按位或、按位异或、按位取反、左移和右移等。 1. 常见的位运算符 运算符描述示例&按位与a & b…...

MATLAB 调用arduino uno

为了授课&#xff0c;必须重新把arduino用上。 采用MATLAB编码&#xff0c;可以简化相关程序授课部分 1 安装包 MATLAB Support Package for Arduino Hardware - File Exchange - MATLAB Central (mathworks.com) 需要这个插件。 当然也可下载simulink的模块&#xff0c;但…...

Git——分布式版本控制工具使用教程

本文主要介绍两种版本控制工具——SVN和Git的概念&#xff0c;接着会讲到Git的安装&#xff0c;Git常用的命令&#xff0c;以及怎么在Vscode中使用Git。帮助新手小白快速上手Git。如果想直接上手用Vscode操作远程仓库则直接看7和9即可&#xff01; 目录 1. SVN和Git介绍 1.1 …...

HarmonyOS 开发中条件渲染的选择:if/else 与取反操作的对比与实践

在HarmonyOS开发里&#xff0c;if/else 条件渲染和取反操作&#xff08;常借助三元运算符&#xff09;都能根据不同情况设置组件属性值。下面从多个维度分析如何选择&#xff0c;以及各自的利弊&#xff0c;并附上代码示例。 选择方法 简单二元条件&#xff1a;当条件只有两种…...

【数据分析】数据筛选与访问行列元素3

访问元素 .loc属性可以通过传入index的值访问行数据。 .loc属性允许传入两个参数&#xff0c;分别是index的值和columns的值&#xff0c;参数间用“逗号”隔开&#xff0c;这样便可以访问数据中的元素。 1. 访问单个元素 访问单个元素比较简单&#xff0c;只需要通过它的in…...