当前位置:首页 > NAS > 正文内容

TrueNAS存储池和磁盘降级(DEGRADED)个人处理经验

ym02301年前 (2023-06-25)NAS1270

前言

从去年年初开始折腾NAS并选择了TrueNAS作为系统之后,可以说是历尽艰辛,软件硬件的坑踩了一大堆,但好在大部分在有限的学习和试错成本之后,都解决了,但是从去年年中开始,TrueNAS突然开始报严重错误(Critical),存储池降级,状态为DEGRADED;一块磁盘也显示降级,状态为DEGRADED。因为我做了TrueNAS自带的Raidz1,相当于标准的Raid5,能抗一块硬盘坏的情况,再加上使用正常,无论是系统运行还是存取速度都没有明显变化,我就没理它。

进入2023年,系统突然像抽风一样报DEGRADED的错误,一共四块盘,三块都报DEGRADED错误,最夸张的时候偶尔四块都报,但是存储池还能访问,把我整蒙圈了,但大部分时候都是三块报。怀着惴惴不安的心情,在度娘上搜索数日,也开着翻译软件看了TrueNAS英文论坛里的相关主题,也请教了大厂专业做存储设备的工程师,断断续续折腾一周多,说实话TrueNAS资料实在是少得可怜,大多是教你怎么安装配置初始化的教程,故障处理的基本没有,查资料和尝试的过程无比痛苦。在我最终自行尝试找到一种方法解决了之后,我决定把我的个人经验分享出来,给有同样困惑的朋友提供一点帮助。

问题描述

如本文标题所示,本篇是个人经验,对于存储系统原理、Linux、NAS存储原理和TrueNAS系统,我都还是小白,虽然我找到了一种方法解决了DEGRADED的问题,但不确定它的适用范围,所以我先详细描述一下我的系统条件和遇到的问题。

系统基本情况

TrueNAS版本:TrueNAS-SCALE-22.02.0.1

存储池磁盘:4块4T希捷硬盘

Raid情况:Raidz1

存储池名称:MainData(个人给存储池起的名,非系统术语,仅用于方便理解截图)

系统报错情况

1、首先是TrueNAS系统的报警,提示我自建的“MainData”存储池降级了,一块或以上的磁盘设备遇到了不能修复的问题,这里提示有两块磁盘处于“DEGRADED”状态。

TrueNAS系统警报

2、查看存储池的状态,发现存储池总体是DEGRADED,池内的RAIDZ1阵列也是DEGRADED,下面sdb和sdd这两块磁盘也是DEGRADED。

DEGRADED提示

3、进入TrueNAS的命令行,输入"zpool status MainData"查看MaiData的状态,发现除了DEGRADED提示和之前一样外,这两块盘还提示“too many errors”,即错误过多。

status命令提示

如果你的报错情况和我的一致,可以往下看处理方法。

处理方法

1、首先把DEGRADED磁盘从阵列中离线

在存储池状态里把提示DEGRADED的一块磁盘离线,点击最右侧的三个点,会弹出菜单,选“离线”。这里我操作的磁盘设备是sdb,首先对它进行离线操作。

按钮位置

菜单选离线

确认离线

等待离线

点“确定”之后有个请稍后的提示,根据情况不同时间不同,一般时间不会太久。在这里顺便吐槽一下TrueNAS半生不熟的汉化。

磁盘离线状态

操作完成之后,sdb磁盘状态已经显示为“OFFLINE”了。

2、把离线的磁盘擦除数据

在存储>磁盘里,把离线的这个磁盘擦除数据,我这个就是把sdb擦除数据。

菜单位置

擦除按钮

注意,如果没有提前把磁盘从阵列中离线,那么这里是不会有“擦除”的按钮的。

点“擦除”会有弹窗,直接点“擦除”

擦除弹窗

擦除过程

擦除完成



3、用擦除过的空磁盘替换存储池里原位置的设备

擦除完成后,回到存储池状态界面,可以看到原来磁盘sdb的那一行已经变成了一长串字符串,状态会变成“UNAVAIL”(意思是不可用);点击最右侧三个点,在弹出菜单中选择“更换”,在弹出的界面中选择sdb。这里因为我只操作了一个磁盘,所以只有一个待选项,如果你同时操作了多个磁盘,这里可能会有多个磁盘的选项,因为都是空的,理论上选哪个都行,当然最好是和原来的位置对应选。

磁盘擦除后的状态显示

更换菜单位置

更换弹窗

更换过程



4、阵列重建

替换完磁盘后,阵列会自动进行重建,最上面一行“RESILVER”,翻译过来就是重建的意思(再次吐槽TrueNAS半生不熟的界面汉化)。阵列重建的意思就是按照raid的规则,把数据分布在所有磁盘上的意思。比如原来有4块盘,我做的是raid5,每块盘都按raid5的规则存储了实际数据和校验数据,这些校验数据保证了在损失一块盘的情况下,数据不会丢失。当其中一块盘被更换成空盘之后,raid就会按照规则,通过计算把实际数据和校验数据重新写到空盘里,来实现数据的完整保护机制。更详细的可以自己百度,有很多通俗易懂的解释。

阵列重建

阵列重建是最消耗时间的,消耗的时间和数据量大小有关,而且每进行一次替换硬盘的操作,就要重建一次,我这个阵列数据量只有2T多点,一次重建时间1个多小时,还可以接受;数据量大的可能就得7、8个小时甚至更多,好在是个自动过程,不需要干预,不做高吞吐量操作的话,也不影响NAS使用。重建完成后,磁盘的状态就会变成“ONLINE”了,再把其他DEGRADED状态的磁盘按这个步骤逐一操作,全部磁盘都操作完毕后,阵列的状态也就正常了,不会再有DEGRADED的提示了。



恢复正常



我遇到的问题

我在操作时,遇到一个情况,就是擦除磁盘后,在存储池状态里,sdb磁盘没有变成一长串字符串,还是显示sdb,此时做“更换”操作会报错,提示磁盘非空,存在分区(如下图),原因未知;后来偶尔发现,重启TrueNAS后,存储池状态里,sdb磁盘就变成长串字符串了,就可以正常更换硬盘了。

更换磁盘报错



我遇到的那些坑

由于资料太少,网上能找到和能问到的每一种方法我几乎都试了一下,白干了不少事儿,还好没造成啥可怕的影响,这里把我趟过的主要的坑给大家列一下。

超级无敌巨坑:磁盘DEGRADED

一般来讲,对于各类raid磁盘阵列,除了raid0,DEGRADED这种状态是形容阵列总体状态的,用以形容阵列的数据保护级别降低了,原因也确实和TrueNAS提示的一样,一般是某块硬盘坏了,需要更换。但TrueNAS给硬盘也搞了个DEGRADED的状态,这就导致我在网上提问和请教专家的时候,别人都以为是阵列的状态,给的答复都是需要更换硬盘,网上能查到的资料,包括英文资料,也说要更换磁盘。但我把磁盘拆下来用diskgen查看了smart信息,做了全盘扫描,都没有问题,实在看不出来磁盘哪里坏了。说实话我到现在也不明白单个磁盘DEGRADED到底是啥意思,TrueNAS官网我看着也说的模棱两可,当然也可能是英文我不是很懂,总之这个错位的理解使我走了绝大多数的弯路。

无效方法:磁盘取下删除分区后再装上

大厂专门做存储的朋友给我提供的方法,让我把磁盘取下来,在Windows上用工具删掉所有分区,再装回去,系统就会认为安装了新盘,会自动重建阵列,并消除错误。但实际上我装回去之后,存储池状态里会出现类似磁盘擦除数据后的样子,但选择“更换”时,会提示磁盘非空,不允许选这块盘,报错和“我遇到的问题”那一节的截图一样。后来我发现,TrueNAS的这个软raid和真正的硬raid还是有区别的,有些在硬raid上可用的方法,在TrueNAS的raidz体系里不一定能行。

无效方法:存储池校验

网上有种说法是手动执行存储池校验(英文是scrub),校验完了只要没错误就会把磁盘状态修正为“ONLINE”,实测无论是通过UI界面还是命令行,执行校验后均不会修正磁盘状态,能看到进行了重建,但重建完了阵列和磁盘的DEGRADED状态不变。

待验证的说法:sata线和电源的影响

网上的资料和我做存储的朋友都提到sata线的质量、接头的接触是否良好,会影响磁盘是否出错。我朋友说“一个写操作没有正常执行,就会产生I/O错误”。此外,网上也有外国人说他更换了450W的电源,然后磁盘的DEGRADED状态消失了,不过阵列重建完了又成DEGRADED了,后续也没看到咋解决的。

对于我的情况,我是6盘位,4HDD+2SSD,200W电源,未更换sata线和电源,按本文的方法解决了问题,因此上述说法未经验证;但有一点是大家公认的,那就是尽量不要非正常关机NAS,容易一次性产生大量逻辑错误。


以上就是我处理TrueNAS存储池和磁盘降级(DEGRADED)的一点个人经验和教训,希望能对大家有所帮助。 

作者:冬天的中午 https://www.bilibili.com/read/cv21112435 出处:bilibili



扫描二维码推送至手机访问。

版权声明:本文由嘉睿博客发布,如需转载请注明出处。

本文链接:https://tius.cc/?id=46

分享给朋友:

“TrueNAS存储池和磁盘降级(DEGRADED)个人处理经验” 的相关文章

快速清理群晖NAS上docker无用的版本文件

快速清理群晖NAS上docker无用的版本文件

     前几天写了一篇文章《在群晖使用Docker安装的容器升级方法》,于是有网友觉得采用我这种办法升级docker容器,系统会留下“垃圾”。那么今天我就教你一招清理docker因升级容器而留下无用的版本文件的方法。1、在电脑上打开SSH软件,我这里使用的是MobaX...

jellyfin豆瓣搜刮插件

jellyfin豆瓣搜刮插件

添加插件仓库的方法适用于V10.6.0以上,还需要梯子才能用,添加方法在下图所示位置存储库名称随便,存储库url:https://raw.githubusercontent.com/Libitum/jellyfin-plugin-douban/master/manifest.json,然后点保存然后...

unraid作为ups主机,虚拟机黑群晖作成ups副机进行nut不间断电源联动详细设置教程

unraid作为ups主机,虚拟机黑群晖作成ups副机进行nut不间断电源联动详细设置教程

教程详情:首先,网上相关UPS设置教程,能找到的群晖和其他系统进行UPS联动的所有教程,都是以群晖作为UPS主机,其他设备作为副机。很多人都是Pve、Unraid、Esxi、Omv等宿主系统,虚拟群晖子机。必须直通USB给群晖,否则不能联动;虚拟群晖如果崩溃或者没有开机,那么宿主系统就连不上UPS了...

黑群晖忘记密码解决办法! 不用重装,不用重置

黑群晖忘记密码解决办法! 不用重装,不用重置

大家都知道,白群晖上有 RESET 按钮,如果忘记密码,只要按住四秒钟直到哔声响将会重设管理者密码,我们很多人装的是黑群晖,根本没有reset键,如果你也没有设置找回邮箱,那忘记密码怎么办?这里我分享一种解决办法,说说原理:修改/etc/shadow文件,此文件也是linux系统上保存账户密码文件,...

群辉SurveillanceStation-x86_64-9.1.1-10728开心办法

群辉SurveillanceStation-x86_64-9.1.1-10728开心办法

[password]方法1、官网下载https://global.synologydownload.com/download/Package/spk/SurveillanceStation/9.1.1-10728/SurveillanceStation-x86_64-9.1.1-10728.spk手...

玩PT,在NAS上如何做种子文件

玩PT,在NAS上如何做种子文件

【写作说明】:刚刚开始玩PT,在NAS上有文件想分享,可是如何做种子呢?不会,在电脑上很容易,但在NAS上,常用的qbittorrent是没有生成种子的菜单的,怎么搞呢,难住我了,好不容易在PT贴吧中找到一个方案,结果贴主写的太简单,对新手来说,交代的不够全面,折腾了好几天,总算搞定了,所以,特意发...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。