RedHat9 | RAID配置与管理

一、实验环境

1、RAID简介

RAID(Redundant Array of Independent Disks),即独立磁盘冗余阵列,是一种数据存储技术。它通过将多个独立的磁盘驱动器组合起来,形成一个逻辑上的整体,从而提高数据存储的性能、容量和数据冗余性。

RAID的基本原理

  1. 数据分割:RAID将待存储的数据分割成较小的块,然后按照某种规则(如磁盘驱动器的序号)逐个块地存储在多个磁盘上。
  2. 数据分发:根据所采用的RAID级别,RAID会将不同块的数据分散存储在不同的磁盘上。例如,在RAID 0中,数据被均匀地分布在所有磁盘驱动器上;而在RAID 5中,数据被分布在多个磁盘驱动器上,并添加了奇偶校验信息。
  3. 冗余备份:某些RAID级别(如RAID 1)提供了冗余备份功能,以增加系统的可靠性。通过同时将相同的数据保存在两个或多个磁盘驱动器上,当其中一个磁盘发生故障时,数据仍然可从另一个磁盘访问。
  4. 并行数据存取:由于数据被分散存储在多个磁盘上,因此RAID可以同时读取或写入多个磁盘的数据,从而提高了系统的整体性能。

RAID的级别

RAID主要分为基本RAID级别(如RAID 0、RAID 1、RAID 5和RAID 6)和跨区RAID级别(如RAID 10、RAID 50和RAID 60)。不同的RAID级别具有不同的性能和冗余特性,用户可以根据其需求选择适合的RAID级别。

RAID的优势

  1. 提高性能:通过数据分割和并行数据存取,RAID可以显著提高数据的读写速度。
  2. 增加容量:通过组合多个磁盘,RAID可以提供更大的存储容量。
  3. 提高数据冗余性:某些RAID级别(如RAID 1、RAID 5和RAID 6)通过冗余备份或奇偶校验信息来提高数据的可靠性

2、RAID0(带区卷)

RAID0,又称为Stripe或Striping,是一种在RAID(冗余阵列的独立磁盘)技术中的级别,它代表了所有RAID级别中最高的存储性能。

工作原理

RAID0的工作原理是将连续的数据分散到多个磁盘上进行存取。当系统有数据请求时,多个磁盘可以并行执行,每个磁盘处理它负责的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,从而显著提高磁盘整体存取性能。

性能特点

  1. 高性能:由于数据是在多个磁盘上同时读写,因此RAID0提供了非常高的数据传输速率。理论上,一个由n块磁盘组成的RAID0,它的读写性能是单个磁盘性能的n倍,但实际性能提升可能因总线带宽等多种因素而略低于理论值。
  2. 无数据冗余:RAID0并不提供数据冗余或校验功能。这意味着它没有任何容错能力,一旦阵列中的任何一块硬盘发生故障,将会导致整个阵列的数据丢失。
  3. 100%存储空间利用率:由于没有冗余数据,RAID0可以充分利用所有磁盘的存储空间。

适用场景

RAID0特别适用于对性能要求较高,但对数据安全不太在乎的领域,如图形工作站、视频编辑等。对于个人用户来说,如果追求硬盘存储性能的提升,RAID0也是一个选择。然而,由于它不提供数据冗余,因此在企业环境中,RAID0通常不会单独使用,除非对数据安全性要求不高或采取了其他备份措施。

RAID0以其高性能和存储空间的有效利用而著称,但缺乏数据冗余和容错能力使其在高可靠性要求的环境中不适用。在选择使用RAID0时,应充分考虑数据的重要性和可恢复性。

3、RAID1(镜像卷)

RAID1(Redundant Array of Independent Disks Level 1)是RAID技术中的一个级别,也被称为镜像RAID或RAID Mirroring。RAID1通过数据的完全冗余备份来提供数据的安全性,基本思想是将同一份数据同时写入两块或多块硬盘中,以确保在某一硬盘出现故障时,系统能够无缝地从另一块硬盘中读取数据,保证数据的完整性和业务的连续性。

工作原理

在RAID1中,数据被同时写入到两个或更多的硬盘中。每一个硬盘都包含完全相同的数据集,因此,即使其中一个硬盘发生故障,数据也不会丢失,因为可以从另一个硬盘中恢复数据。这种技术提供了数据的冗余性,增加了数据的可靠性和可用性。

性能特点

  1. 数据冗余:RAID1通过数据的完全镜像实现冗余,确保了数据的安全性。
  2. 读取性能:由于数据在多个硬盘上都有备份,因此在进行数据读取时,可以从多个硬盘中并行读取,从而提高了读取性能。
  3. 写入性能:数据写入时需要同时写入到多个硬盘中,这可能会导致写入性能相对于单个硬盘有所下降。
  4. 高可用性:即使其中一个硬盘发生故障,系统仍然可以从另一个硬盘中读取数据,从而保证了业务的连续性。
  5. 空间利用率:RAID1的空间利用率是50%(在只有两个硬盘的情况下),因为每块硬盘都存储了相同的数据。

适用场景

RAID1通常用于对数据安全性要求极高的环境,如金融、医疗等关键业务领域。在这些领域,数据的丢失或损坏可能导致严重的后果,因此,通过RAID1技术来确保数据的完整性和可靠性是非常重要的。

RAID1以其高可靠性和数据冗余性而著称,但相应地,它牺牲了部分存储空间利用率和可能的写入性能。在选择使用RAID1时,应根据具体的应用需求和成本效益进行权衡

4、RAID0+1

RAID0+1,也被称为RAID10,是RAID 0和RAID 1的组合形式。这种RAID级别旨在结合RAID 0的高性能和RAID 1的数据安全性。RAID0+1还有一种叫法RAID10。

工作原理

RAID0+1首先将数据分割成条带(Striping),类似于RAID 0的操作,以提高存取性能。然后,这些条带化的数据会被镜像复制到另一组磁盘上,这是RAID 1的特性,用以确保数据的安全性。

性能特点

  1. 高性能:由于数据被分割成条带并分散在多个磁盘上,因此可以并行读写,显著提高了磁盘的整体性能。
  2. 数据安全性:通过镜像复制,即使某个磁盘或某组磁盘出现故障,数据也可以从镜像磁盘中恢复,确保了数据的安全性。
  3. 磁盘利用率:由于RAID0+1采用了数据镜像,因此其磁盘空间利用率相对较低,与RAID 1相似,只有50%左右。

适用场景

RAID0+1特别适用于对数据安全性和存取性能都有高要求的场景,如服务器、数据库存储以及需要处理大量数据且不能容忍数据丢失的商业应用。

RAID0+1是一种兼顾存储性能和数据安全的解决方案,但相应的存储成本较高。在选择使用RAID0+1时,应根据实际应用需求、预算以及对性能和安全性的权衡来做出决定。

5、RAID5

RAID5是一种存储解决方案,它兼顾了存储性能、数据安全和存储成本。

工作原理

  • 数据条带化:在RAID5中,数据被分割成多个块,并按照固定大小的条带分布在不同的硬盘上。每个条带包含数据块和奇偶校验块。
  • 奇偶校验:奇偶校验块包含对应数据块的校验信息。这些信息是通过对其他硬盘上相同位置的数据块进行异或(XOR)运算得到的。当某个硬盘发生故障时,可以使用剩余的数据块和奇偶校验块重新计算出丢失的数据块。

性能特点

  1. 读取性能:RAID5可以提高数据的读取性能,因为数据读取操作可以并行进行,每个硬盘只需读取自己所负责的数据块,然后组合起来提供完整的数据。
  2. 写入性能:数据写入操作也可以并行进行,但需要额外的计算开销来更新奇偶校验信息,因此写入速度相对于单个磁盘会稍慢。
  3. 数据安全:RAID5通过奇偶校验信息提供了数据安全保障。即使一个硬盘发生故障,也能通过校验信息恢复数据。
  4. 磁盘利用率:由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率高于RAID1,但低于RAID0。

适用场景

RAID5适用于需要兼顾存储性能和数据安全性的场景,同时其成本相对较低,因为可以更有效地利用硬盘容量,减少硬盘数量和成本。它适用于企业级服务器、云存储等需要高可靠性和高性能的应用场景。

故障恢复与热备

在RAID5阵列中,当一个硬盘发生故障时,系统可以利用剩下的数据和奇偶校验信息恢复被损坏的数据。此外,RAID5还支持热备份技术,即当一个硬盘出现问题时,系统可以自动切换至备用硬盘,确保数据的正常访问。

6、mdadm命令语法

常用参数

参数作用
-C创建阵列模式
-v显示执行过程
-l指定RAID设备级别
-n指定RAID活动设备的数量
-r将指定成员移除RAID
-x设置初始RAID设备的备用成员数量(热备盘)
-D显示RAID设备的详细信息
-f将指定的RAID成员设备设置为故障模式
-S停止RAID设备
–zero-superblock清除RAID信息

二、RAID0的配置与管理

1、实验拓扑

编号磁盘类型磁盘容量服务器盘位用途
01NVMe10GLinux服务器/WindowsServer服务器nvme0n2RAID0
02NVMe10GLinux服务器/WindowsServer服务器nvme0n3RAID0
03NVMe10GLinux服务器/WindowsServer服务器nvme0n4RAID0
04NVMe10GLinux服务器/WindowsServer服务器nvme0n5RAID0

在这里插入图片描述

添加硬盘

在这里插入图片描述
在这里插入图片描述

2、Linux服务器配置步骤

2.1 创建RAID0 磁盘

创建RAID0磁盘

mdadm --create /dev/md0 --level=0 --raid-devices=4 /dev/nvme0n{2..5}
  • –create /dev/md0:创建RAID磁盘,磁盘名为md0
  • –level=0:RAID的级别,这里创建RAID0
  • –raid-device=4:使用4块磁盘来创建RAID
  • /dev/nvme0n{2…5}:创建RAID所使用的磁盘

在这里插入图片描述

查看RAID0磁盘的状态

mdadm -D /dev/md0
mdadm --detail /dev/md0

在这里插入图片描述

格式化磁盘使用

mkfs.xfs /dev/md0

在这里插入图片描述

创建挂载点,挂载到/dev/md0,并测试写入

mkdir /raid0
mount /dev/md0 /raid0
echo clean > /md0/clean.txt
2.2 模拟磁盘故障

将nvme0n5磁盘移除,模拟故障情况

先关闭虚拟机,然后移除磁盘5

在这里插入图片描述

重启开启虚拟机,可以看到RAID0的状态为inactive

在这里插入图片描述

可以看到先前的文件可能丢失也可能存在,就看数据的存储位置,目前是已经丢失

在这里插入图片描述

重新测试写入数据,可以看到数据还可以写入

echo inactive > /raid0/inactive.txt

在这里插入图片描述

重新连接刚刚的移除的硬盘

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择现有磁盘

在这里插入图片描述

选择磁盘的原先存储位置

在这里插入图片描述

在这里插入图片描述

重新查看硬盘的状态,可以发现状态恢复为clean

在这里插入图片描述

2.3 删除RAID0

首先查看是否存在挂载,如果有挂载,需要先卸载

df -hT				# 如果没有写入/etc/fstab文件中,重启后挂载会失效

在这里插入图片描述

停止RAID0

mdadm -S /dev/md0

使用零覆盖RAID设备中的超级块,也就是清除RAID信息

mdadm --zero-superblock /dev/nvme0n{2..5}

在这里插入图片描述

查看磁盘信息,可以看到RAID0已经被清除掉

lsblk

在这里插入图片描述

3、Windows服务器配置步骤

2.1 创建RAID0 磁盘

打开磁盘管理器

在这里插入图片描述

初始化磁盘

在这里插入图片描述

新建带区卷

在这里插入图片描述

选择所有硬盘

在这里插入图片描述

驱动器号保持默认即可

在这里插入图片描述

选择执行快速格式化

在这里插入图片描述

单击【是】,将选中的基本磁盘转换为动态磁盘

在这里插入图片描述
在这里插入图片描述

2.2 删除RAID0

打开磁盘管理器,选择RAID0的成员磁盘,右键单击【删除卷】

在这里插入图片描述

在这里插入图片描述

此时会还原为普通的基本磁盘

在这里插入图片描述

三、RAID1的配置与管理

1、实验拓扑

编号磁盘类型磁盘容量服务器盘位用途
01NVMe10GLinux服务器/WindowsServer服务器nvme0n2RAID0
02NVMe10GLinux服务器/WindowsServer服务器nvme0n3RAID0
03NVMe10GLinux服务器/WindowsServer服务器nvme0n4RAID0
04NVMe10GLinux服务器/WindowsServer服务器nvme0n5RAID0

在这里插入图片描述

2、Linux服务器配置步骤

2.1 创建RAID1 磁盘

创建RAID0磁盘

mdadm --create /dev/md0 --level=1 --raid-devices=4 /dev/nvme0n{2..5}
  • –create /dev/md0:创建RAID磁盘,磁盘名为md0
  • –level=1:RAID的级别,这里创建RAID1
  • –raid-device=4:使用4块磁盘来创建RAID
  • /dev/nvme0n{2…5}:创建RAID所使用的磁盘

在这里插入图片描述

查看RAID1磁盘状态

mdadm -D /dev/md1

在这里插入图片描述

格式化磁盘

mkfs.xfs -f /dev/md1

在这里插入图片描述

创建挂载点,挂载到/dev/md1,并测试写入

mkdir /raid1
mount /dev/md1 /raid1
echo clean > /raid1/clean.txt

在这里插入图片描述

2.2 模拟磁盘故障

将nvme0n5磁盘移除,模拟故障情况

先关闭虚拟机,然后移除磁盘5

在这里插入图片描述

重新开启虚拟机,可以看到RAID1的状态多了一个【degraded】,同时提示少了一块硬盘

在这里插入图片描述

重新挂载,可以看到之前的内容还存在

mount /dev/md1 /raid1

在这里插入图片描述

尝试写入数据

echo clean,degraded > /raid1/degraded.txt

在这里插入图片描述

关闭虚拟机,再添加一块硬盘

在这里插入图片描述

将新添加的磁盘记载到RAID1中

mdadm /dev/md1 -a /dev/nvme0n5

在这里插入图片描述

查看RAID1的状态

mdadm -D /dev/md1

在这里插入图片描述

2.3 删除RAID1

首先查看是否存在挂载,如挂载提前卸载

df -hT 

停止RAID1

mdadm -S /dev/md1

在这里插入图片描述

清除RAID信息

mdadm --zero-superblock /dev/nvme0n{2..5}

在这里插入图片描述

3、Windows服务器配置步骤

2.1 创建RAID1 磁盘

打开磁盘管理器

在这里插入图片描述

选择任意一个目标磁盘,右键单击,在弹出的选项框中选择【新建镜像卷】

在这里插入图片描述

选择磁盘中,镜像卷只能选择两个同大小的磁盘,其中一个存储数据,一个作为备份盘

在这里插入图片描述

其余选项保持默认即可,勾选【执行快速格式化】

在这里插入图片描述

单击【是】,将选中的基本磁盘转换为动态磁盘

在这里插入图片描述

查看镜像卷

在这里插入图片描述

2.2 删除RAID1磁盘

选中RAID1磁盘的成员磁盘,右键单击,在弹出的选项框中选择【删除卷】

  • 删除镜像:会删除掉两个磁盘之间的镜像关系,也就是复制关系
  • 中断镜像:暂停镜像关系

在这里插入图片描述

单击【是】,即可删除RAID1

在这里插入图片描述

删除掉镜像后,磁盘会转化为基本磁盘

在这里插入图片描述

四、RAID5的配置与管理

1、实验拓扑

编号磁盘类型磁盘容量服务器盘位用途
01NVMe10GLinux服务器/WindowsServer服务器nvme0n2RAID0
02NVMe10GLinux服务器/WindowsServer服务器nvme0n3RAID0
03NVMe10GLinux服务器/WindowsServer服务器nvme0n4RAID0
04NVMe10GLinux服务器/WindowsServer服务器nvme0n5RAID0

在这里插入图片描述

1、Linux服务器配置步骤

2.1 创建RAID5 磁盘

创建RAID0磁盘

mdadm --create /dev/md5 --level=1 --raid-devices=3 -x 1 /dev/nvme0n{2..5}
  • –create /dev/md0:创建RAID磁盘,磁盘名为md0
  • –level=1:RAID的级别,这里创建RAID1
  • –raid-device=4:使用4块磁盘来创建RAID
  • -x 1:创建一块备用盘
  • /dev/nvme0n{2…5}:创建RAID所使用的磁盘

在这里插入图片描述

查看RAID1磁盘状态

mdadm -D /dev/md5

在这里插入图片描述

格式化磁盘

mkfs.xfs -f /dev/md5

在这里插入图片描述

将RAID5配置信息写入到配置文件中,配置文件默认不存在

echo 'DEVICE /dev/nvme0n{2..5}' >> /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf

在这里插入图片描述

创建挂载点,挂载到/dev/md1,并测试写入

mkdir /raid5
mount /dev/md5 /raid5
echo clean > /raid5/clean.txt

在这里插入图片描述

2.2 模拟磁盘故障

将指定RAID设备成员设置为故障模式,模拟磁盘发生故障

mdadm /dev/md5 -f /dev/nvme0n2

在这里插入图片描述

再次查看RAID5的状态,发现热备的磁盘自动替换掉了故障磁盘

mdadm -D /dev/md5

在这里插入图片描述

可以正常写入数据

echo clean,degraded,recovering > /raid1/degraded.txt

在这里插入图片描述

将坏盘移除

mdadm /dev/md5 -r /dev/nvme0n2

在这里插入图片描述

添加一块新硬盘作为热备盘

mdadm /dev/md5 -a /dev/nvme0n6

在这里插入图片描述

查看RAID5的状态,可以看到新添加的硬盘自动作为了热备盘

mdadm -D /dev/md5

在这里插入图片描述
g&pos_id=img-b2Rj7bOn-1718700829774)

2.3 删除RAID1

首先查看是否存在挂载,如挂载提前卸载

df -hT 

停止RAID1

mdadm -S /dev/md5

在这里插入图片描述

清除RAID信息

mdadm --zero-superblock /dev/nvme0n{2..6}

在这里插入图片描述

3、Windows服务器配置步骤

2.1 创建RAID5 磁盘

打开磁盘管理器

在这里插入图片描述

选择任意一个磁盘,右键单击,在弹出的提示框中选择【新建RAID-5卷】
在这里插入图片描述

将所有的磁盘选中

在这里插入图片描述

其余选项默认下一步即可,勾选【执行快速格式化】

在这里插入图片描述

单击【是】,将选中的基本磁盘转换为动态磁盘

在这里插入图片描述

查看转换后的RAID5卷,等待同步完成即可

在这里插入图片描述

同步完成
在这里插入图片描述

2.3 删除RAID5

单击任意一块成员磁盘,在弹出的对话框中选择【删除卷】

在这里插入图片描述

单击【是】即可删除RAID5
在这里插入图片描述

删除后,磁盘会转化为基本磁盘
在这里插入图片描述

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

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

相关文章

【Redis】数据持久化

https://www.bilibili.com/video/BV1cr4y1671t?p96 https://blog.csdn.net/weixin_54232666/article/details/128821360 单点redis问题: 数据丢失问题:实现Redis数据持久化并发能力问题:搭建主从集群,实现读写分离故障恢复问题&…

数据分析必备:一步步教你如何用matplotlib做数据可视化(13)

1、Matplotlib 文本 Matplotlib具有广泛的文本支持,包括对数学表达式的支持,对光栅和矢量输出的TrueType支持,具有任意旋转的换行符分隔文本以及unicode支持。Matplotlib包含自己的matplotlib.font_manager,它实现了一个跨平台&a…

和GPT-4这些大模型玩狼人杀,人类因太蠢被票死,真·反向图灵测试

「你看,人类一败涂地了」 这是一次「反向图灵测试」,几个全球最先进的大模型坐在一起,坐着火车唱着歌,但其中混进了人类: 而 AI 的任务,是把这个人类揪出来。 最近,一位昵称「Tore Knabe」的网…

[leetcode]number-of-longest-increasing-subsequence

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int findNumberOfLIS(vector<int> &nums) {int n nums.size(), maxLen 0, ans 0;vector<int> dp(n), cnt(n);for (int i 0; i < n; i) {dp[i] 1;cnt[i] 1;for (int j 0; j < i…

LangChain结合LLM做私有化文档搜索

我们知道LLM&#xff08;大语言模型&#xff09;的底模是基于已经过期的公开数据训练出来的&#xff0c;对于新的知识或者私有化的数据LLM一般无法作答&#xff0c;此时LLM会出现“幻觉”。针对“幻觉”问题&#xff0c;一般的解决方案是采用RAG做检索增强。 但是我们不可能把…

深入解读一下`android.os.CountDownTimer`

简介 在 Android 开发中&#xff0c;CountDownTimer 是一个非常有用的类&#xff0c;它可以用于倒计时任务&#xff0c;比如倒计时器、限时活动等。CountDownTimer 提供了一个简单的方式来实现定时操作&#xff0c;无需我们手动管理线程和计时器。 本文将深入解析 CountDownT…

Linux核心基础详解(第13天)

系列文章目录 一、Linux基础详解&#xff0c; 二、网编三要素和SSH原理 三、shell编程&#xff08;补充&#xff09; 文章目录 系列文章目录前言一、linux简介二、虚拟机简介1、设置VMware网卡1.1 修改VMware中网络1.2 修改本地net8网卡ip 2、安装命令版裸机3、安装centos操作…

CVPR 2024圆满落幕:海报创意不断,学者穿cos服装讨论学术问题?这届CVPR真是太有趣了

CVPR 2024圆满落幕&#xff1a;海报创意不断&#xff0c;学者穿cos服装讨论学术问题&#xff1f;&#xff01;这届CVPR真是太有趣了 会议之眼 快讯 2024 年 CVPR &#xff08;Computer Vision and Pattern Recogntion Conference) 即国际计算机视觉与模式识别会议&#xff0c…

【python】python入门day1

python入门 Python解析器Python注释Python中的变量&#xff08;重点&#xff09;练习&#xff1a;1、用python的print函数描述一段对话2、与计算机模拟一段对话&#xff0c;并且最终计算机需要将输入的内容全部输出3、模拟两个对话场景(根据提示输入内容&#xff0c;并且在后续…

OpenCV中掩膜(mask)图像的创建和使用

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 功能描述 掩模图像&#xff08;Mask Image&#xff09;是一种特殊类型的形象数据&#xff0c;在图像处理和计算机视觉中扮演着重要角色。它通常是一个二维数组…

Java面试问题(一)

一.Java语言具有的哪些特点 1.Java是纯面向对象语言&#xff0c;能够直接反应现实生活中的对象 2.具有平台无关性&#xff0c;利用Java虚拟机运行字节码文件&#xff0c;无论是在window、Linux还是macOS等其他平台对Java程序进行编译&#xff0c;编译后的程序可在其他平台上运行…

HuatuoGPT2本地运行失败

transformer 版本不能太高 transformer<4.3.32 查看config.json文件 其实 https://huggingface.co/FreedomIntelligence/HuatuoGPT2-7B/blob/main/config.json

2024年03月Python六级真题+答案(中国电子学会 )

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;六级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1.以下选项中&#xff0c;创建类正确的是&#xff1f;&#xff08; &#xff09; A. class test1…

利用opencv自带的Haar级联分类器模型

OpenCV自带的Haar级联分类器模型&#xff1a; haarcascade_eye.xml: 这个模型用于检测眼睛。 haarcascade_eye_tree_eyeglasses.xml: 这个模型用于检测眼镜。 haarcascade_frontalcatface.xml: 这个模型用于检测猫脸。 haarcascade_frontalcatface_extended.xml: 这个模型用…

企业成功的秘诀:全面解读ISO三大管理体系的卓越效益

在现代商业环境中&#xff0c;企业若想在激烈竞争中脱颖而出并保持可持续经营&#xff0c;必须关注质量、环境以及职业健康安全管理。ISO三大管理体系——质量管理体系、环境管理体系和职业健康安全管理体系&#xff0c;为企业提供了实现这一目标的有力工具。本文将详细介绍ISO…

存储故障导致Oracle 19c 数据文件处于recover状态的恢复案例

1.背景 某次平台分布式存储故障&#xff0c;导致数据库出现ORA-00376、ORA-01110数据文件不可读报错&#xff0c;本文将整个恢复过程进行整理记录。 2.报错信息 在进行租户数据库打开操作时&#xff0c;出现了如下报错&#xff1a; ORA-00376: file 17 cannot be read at t…

Vue3抽屉(Drawer)

效果如下图&#xff1a;在线预览 APIs 参数说明类型默认值必传width宽度&#xff0c;在 placement 为 right 或 left 时使用string | number378falseheight高度&#xff0c;在 placement 为 top 或 bottom 时使用string | number378falsetitle标题string | slotundefinedfalse…

《Nest系列 - 4. 听说人人都会CRUD,可是我还不会怎么办???-《4.2结合前端使用实现CRUD》

终于到了这一步&#xff0c;今天我们就将实现一个CRUD&#xff0c;主要是编写nest 部分&#xff0c;前端部分后面可以看git 代码 下面是效果演示&#xff08;大部分是参考满哥实现&#xff0c;&#x1f923;&#x1f923;&#x1f923;&#xff09; 前期准备 前端接口处理 im…

RT-Thread Studio实现动态线程

1创建项目 我的板子为STM32F03ZET6 点击RT-Thread项目 2选择板子&#xff08;根据自己的板子选择&#xff09; 3找到主函数 4编写代码 4-1创建函数入口 // 线程入口函数 static void thread_entry(void *parameter) {rt_uint32_t count 0;while (1){// 线程执行的代码rt_k…

互斥锁并不能保证任务不能被调度

互斥锁不能保证在临界区的时候&#xff0c;不发送任务调度&#xff0c;所以为了保护共享的资源不被调度访问&#xff0c;需要在两个线程都加互斥锁来保证任务不调度 #include <stdio.h> #include <pthread.h> #include <unistd.h> int shared_resource 0;p…