【报错记录】疯狂踩坑之RockyLinux创建Raid1镜像分区,Raid分区在重启后消失了!外加华硕主板使用Raid模式后,硬盘在系统中无法找到问题

前言

为了摆脱对于专业NAS的依赖,我决定专门使用一台Linux服务器安装NAS程序的方式实现NAS功能,这里就需要用到Raid功能,由于目前我只有3块SSD(256G+500G+500G),在ChatGPT的推荐下还是使用一个256G系统盘+2块500G硬盘组Raid1的方式组成一个阵列,结果坑人的事就来了!

使用mdadm创建的raid阵列在重启后不见了!!然后我所有的数据都找不到了!!而且在/dev中甚至找不到md0这个raid磁盘阵列,这还怎么用,难道组成镜像后就不关机了?这肯定不行啊,然后我就踏上了漫漫踩坑路。

坑的来源

由于ChatGPT的信息可能比较落后,它不知道我这个硬盘是GPT分区,组成Raid后会导致分区表出问题,因此给我的答案是:

我说重启后分区找不到了,ChatGPT给我的答复是要在/etc/fstab中增加一条信息:

/dev/md0    /mnt/raid    ext4    defaults    0    0

我还以为这就能把这问题解决了,结果是压根不能解决,因为分区表问题,连md0这个Raid磁盘阵列都不见了,然后开机卡了半天,就是因为这个/dev/md0无法加载成功,我也是等了半天进了系统后才发现的。

然后我怀疑是我心急,没等

cat /proc/mdstat

执行到100%就重启服务器了,然后我借助吃饭时间足足等了1个小时啊!!等它磁盘镜像全部同步完了,再去重启,结果还是老样子,磁盘分区丢失!!这可把我给气坏了!!

解决方法

节约大家时间,我先把解决方法说明吧,后面再将华硕主板Raid的问题

ChatGPT犯了一个严重错误——不能直接对/dev/sdb、/dev/sda这两个磁盘进行操作,而需要对它们各自创建的分区进行操作才可以!!

也就是说先要给/dev/sdb和/dev/sda两个磁盘进行分区后才能执行Raid操作,这是ChatGPT它自己都不知道的事。

执行过程如下:

查看分区情况

先需要lsblk一下,查看自己服务器的磁盘分区情况,我这边是这样的:

/dev/sda:256GB,RockyLinux系统安装盘,包括挂载了根目录和用户目录

/dev/sdb:500GB数据盘

/dev/sdc:500GB数据盘

执行分区操作

fdisk /dev/sdb

建议按一下m,然后回车,查看fdisk的功能

我个人建议先按一下d,然后按一下w

注意!!!!!这一步会清空盘内所有数据,请谨慎操作!!

此步的作用是删除该盘内的分区(特别是只有一个分区的情况会删除所有的内容)

然后再执行

fdisk /dev/sdb

进入fdisk功能后执行

g,然后按n,最后按w

按n的时候需要指定分区大小,我这边直接全部回车过去了,创建的分区大小等于我的磁盘大小。然后就能得到/dev/sdb下又多了一个/dev/sdb1这么一个分区。

同样的对/dev/sdc也执行同样的操作,最后得到如图所示的分区信息:

创建Raid阵列

 剩下的步骤就和ChatGPT说的一样了,只不过命令需要改一下

执行的是:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 /dev/sdc1

这里用到的是/dev/sdb1和/dev/sdc1!!而不是整个磁盘,这就是问题的关键所在,被ChatGPT坑了4个小时!!

后续操作

后续的操作为:

# 查看Raid磁盘同步进度
cat /proc/mdstat# 将Raid阵列格式化为ext4分区
mkfs.ext4 /dev/md0# 由于我不想将这个分区藏太深,直接在根目录创建了一个/data目录
mkdir /data# 将Raid阵列分区挂载到/data路径下
mount /dev/md0 /data# 将Raid信息写入/etc/mdadm.conf中
mdadm --detail --scan | sudo tee -a /etc/mdadm.conf

最后需要将分区信息填入/etc/fstab中

vi /etc/fstab

在最后一行输入:

/dev/md0    /data    ext4    defaults    0    0

然后按:wq保存

其实不用等/proc/mdstat都执行完成就能重启服务器,空的磁盘完全不影响

重启后查看效果

由于重启后各个磁盘的加载顺序是随机的,我这边显示的内容如下:

重启后阵列丢失的问题终于算是解决了!在这种情况下博客是必须要写的,避免以后踩同样的坑。

华硕大坑RAID缺少驱动

当时由于系统内软Raid碰壁了,我就想用华硕主板自带的Raid功能,也就是在主板BIOS中,将SATA类型从AHCI改为RAID,直接搞硬Raid得了。硬Raid可以参考其他同行写得博客吧,我这边就先跳过了。大概的步骤就是

1、在BIOS Advance中将SATA模式从AHCI改成RAID后重启

2、重启后再次进入BIOS,在Advance的最后会多出一个RAID相关设置

3、选择创建阵列后选择需要的磁盘,然后保存即可,最后成果如下:

然后我进入了系统,发现全炸了!直接进入dracut环境了,报

/dev/mapper/rl-root does not exist
/dev/rl/root does not exist
/dev/rl/swap does not exist

也就是我所有分区都丢失了,我通过ls /dev也能看见所有分区都找不到了!我还以为是我分区有问题,或者Raid有问题,我一怒之下在华硕BIOS中将所有分区内容全部删了,重新组Raid,从0开始组,结果我去装RockyLinux时发现进入安装环境后磁盘空空如也,我当时还不信,又拿了一个Windows11的安装包试了一下,发现还是一个磁盘都找不到。

 我当时就怀疑是Raid驱动的问题,即Windows和RockyLinux的安装包中都没有带华硕的Raid驱动,我直接找到了华硕客服,问其缘由,华硕客服很专业啊,直接就说是缺少Raid驱动,让我去华硕官网下驱动,驱动我是找了半天没找到,只能当个伸手党让客服直接发给我。

使用也很简单,将

 解压后放到Windows安装U盘中即可(我的是AMD的主板,这个驱动Intel主板无法使用)

点击“加载驱动程序”,选择目录下的

 

rcraid这个目录即可,加载驱动完成后,我这个Raid分区就出现了,我试了一下也能正常安装Windows11,也能正常重启进入系统

里面的磁盘叫AMD-Raid Array N SCSI Disk Device

本来我想就用硬Raid得了,然后我问华硕客服,这个驱动有CentOS版本的吗,客服说这个驱动没有Linux版本,我当时就长叹一口气,还得去和软Raid较劲,好在最后我还真给搞出来了。

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

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

相关文章

R中当并行运算遇到C++函数时,让foreach+Rcpp一起工作

目录 方案一:C函数在R包中 方案二:C函数在本地,通过Rcpp::sourceCpp("fun_name.cpp")使用 方案三:将C函数写在当前脚本中 题外话:为什么要研究foreachRcpp? 本文参考: 问题:在fo…

Apache Tomcat

在Java中,如果您想使用 Apache Tomcat 作为服务器容器,您需要从 Apache Tomcat 官方网站(https://tomcat.apache.org)下载并导入 Tomcat 的相关 JAR 文件。 以下是使用 Tomcat 类创建和配置 Tomcat 服务器的示例代码:…

TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

先来介绍一些osi七层模型 分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。 应用层(数据):确定进程之间通信的性质以及满足用户需要以及提供网络和用户应用,为应用程序提供服务,DNS,HTTP,HTTPS&#xf…

1. 深度学习介绍

1.1 AI地图 ① 如下图所示,X轴是不同的模式,最早的是符号学,然后概率模型、机器学习。Y轴是我们想做什么东西,感知是我了解这是什么东西,推理形成自己的知识,然后做规划。 ② 感知类似我能看到前面有个屏…

axios 介绍

axios 介绍 axios 是一款基于 javascript xhr 进行封装的插件,自己通过 xhr 进行编写 ajax 请求,实现起来逻辑比较复杂,axios 封装后将复杂的逻辑写在插件的内部,我们用户只需要关心如何调用即可。对我们的开发带来了很大的便捷。…

C语言-内存分布(STM32内存分析)

C/C内存分布 一、内存组成二、静态区域文本段 (Text / 只读区域 RO)已初始化读写数据段(RW data -- Initialized Data Segment)未初始化数据段(BSS -- Block Started by Symbol) 三、动态区域堆&#xff08…

C++笔记之rolling counter(滚动计数器)

C笔记之rolling counter(滚动计数器) 一个 rolling counter(滚动计数器)是一个计数器,可以在给定的范围内不断增加,当达到最大值时会从最小值重新开始。 code review! 文章目录 C笔记之rolling counter&…

计算机视觉:深层卷积神经网络的构建

本文重点 上一节课程中我们学习了单卷积层的前向传播,本次课程我们构建一个具有三个卷积层的卷积神经网络,然后从输入(39*39*3)开始进行三次卷积操作,我们来看一下每次卷积的输入和输出维度的变化。 第一层 第一层使用3*3*3的过滤器来提取特征,那么f[1]=3,然后步长s[…

计算机安全学习笔记(III):强制访问控制 - MAC

基本概念 强制访问控制是一种高级访问控制机制,旨在通过强制执行事先定义的安全策略,实现资源和信息的严格保护。与自主访问控制(Discretionary Access Control,DAC)不同,MAC 的控制权不由用户自身决定&am…

基于springboot学生社团管理系统/基于Java的高校社团管理系统的设计与实现

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&…

Stable Diffusion WebUI 整合包

现在网络上出现的各种整合包只是整合了运行 Stable Diffusion WebUI(以下简称为 SD-WebUI)必需的 Python 和 Git 环境,并且预置好模型,有些整合包还添加了一些常用的插件,其实际与手动进行本地部署并没有区别。 不过&a…

【DEVOPS】现状篇

0. 目录 1. 前言2. 现状2.1 需求管理2.2 开发流程2.3 测试流程2.4 部署流程2.5 维护阶段 3. 后记 4. 相关 1. 前言 一直以来,深感内部工程化能力欠缺,急于将事情向前推进,总是希望能够向前走几步,再走几步。 可惜的是&#xff0…

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动 0、背景1、基本环境2、开发环境编译Qt MySql数据库驱动2.1 依赖说明2.2 MySQL驱动编译过程 3、交叉编译Qt MySql数据库驱动3.1 依赖说明3.3.1 如何在交叉编译服务器上找到mysql.h及相关头文件3.3.2 如果…

时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测

时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测 目录 时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现SSA-XGBoost时间序列预测,麻…

【rust/egui】(六)看看template的app.rs:TextEdit

说在前面 rust新手,egui没啥找到啥教程,这里自己记录下学习过程环境:windows11 22H2rust版本:rustc 1.71.1egui版本:0.22.0eframe版本:0.22.0上一篇:这里 TextEdit 文本编辑框 其定义为&#…

Flink CDC数据同步

背景 随着信息化程度的不断提高,企业内部系统的数量和复杂度不断增加,因此,数据库系统的同步问题已成为越来越重要的问题。 缓存失效 在缓存中缓存的条目(entry)在源头被更改或者被删除的时候立即让缓存中的条目失效。如果缓存在一个独立的…

37.RESTful

RESTful RESTful简介 REST:Representational State Transfer,表现层资源状态转移 资源:资源是一种看待服务器的方式,即——将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的…

Springboot使用kafka事务-生产者方

前言 在上一篇文章中,我们使用了springboot的AOP功能实现了kafka的分布式事务,但是那样实现的kafka事务是不完美的,因为请求进来之后分配的是不同线程,但不同线程使用的kafka事务却是同一个,这样会造成多请求情况下的…

QT ListQvector at赋值出错以及解决办法 QT基础入门【QT存储结构】

1、问题 error: passing const QString as this argument discards qualifiers error: assignment of read-only location vec.QVector<int>::at(0) 在Qt中QList,Qvector一般获取元素都是通过at(index)来获取,但是at()的返回是一个const & 常引用,也就是元素不支…

[shell] $@ 与 eval

$ 与 $* $的用法以及与$*的区别可以参考 What does $ mean in a shell script? 测试脚本如下 #!/bin/bashset -e set -xbash -c $ bash -c "$" bash -c $* bash -c "$*"一般情况下&#xff0c;我们可能会这样执行脚本 ./test.sh Y324 X1 echo hello输…