值得买科技-分享、推荐高性价品牌产品购物排行榜!

[NAS存储]ZFSmirror磁盘分区损坏后的恢复

生火人 真实性核验

认证:存储设备优质原创作者

发布时间:2021-10-27 15:03 来源:什么值得买

浏览量:2197 876次收藏

分类:存储设备 NAS存储

本文有1221个文字,大小约为5KB,预计阅读时间4分钟

[导读]: ZFSmirror磁盘分区损坏后的恢复创作立场声明:ZFSmirror磁盘分区损坏后的恢复本人致力于搭建出一套稳定、开放的个人云方案。ZFSmirror磁盘分区损坏后的恢复长期的摸索沉淀下一些经验。...

精选评测好文

 

ZFSmirror磁盘分区损坏后的恢复

ZFSmirror磁盘分区损坏后的恢复创作立场声明:ZFSmirror磁盘分区损坏后的恢复本人致力于搭建出一套稳定、开放的个人云方案。ZFSmirror磁盘分区损坏后的恢复长期的摸索沉淀下一些经验。再此分享出来。供大家参考。

笔者最初使用PVE搭建了一套虚拟环境来跑nas服务以及其他self host服务。有两块4T HDD直连在TrueNas虚拟机上。但是PVE上始终未能实现对机器上N卡的直通。ZFSmirror磁盘分区损坏后的恢复遂转向ESXI。转换后顺利实现了显卡直通。回过头来想把那两块硬盘重新挂载上来。这时候发现事情没有想象的那么简单。

首先TrueNas中没有导入现有zpool的功能。只有新建zpool的功能。而新建意味着对硬盘的格式化。ZFSmirror磁盘分区损坏后的恢复另外在探索过程中我曾经尝试用ESXI的数据存储功能将mirror的其中一块磁盘直接纳入到存储空间中。但是由于zfs磁盘有特殊的结构。且ESXI的数据存储也不是解决这种问题的。更要命的是数据存储纳入硬盘时会破坏分区结构。于是这块硬盘就被破坏了。

查阅zfs的文档。发现应该直接使用zpool import不带任何参数进行直接导入。但为保证安全首先需要把硬盘克隆出一个镜像。然后在镜像上进行操作。测试成功后再进行原盘的操作。下面记录一下我的操作过程:

1.安装ddrescue。此处需注意大坑。ddrescue有两个版本。一个是个人(Kurt Garloff)开发的dd_rescue(apt install ddrescue)。目的是加强dd命令。另一个就是GNU ddrescure(apt install gddrescue)。这个工具才是广泛使用的ddrescue命令。另外TrueNas scale的系统是定制的debian。使用的下载源都是TrueNas公司的源地址。不想在这种定制系统上改太多东西。以免发生意想不到的问题。所以我使用另一台ubuntu主机进行备份操作。那么安装命令是:

apt install gddrescue

2.运行fdisk -l查看硬盘信息。信息中用硬盘的名称和文件系统格式锁定到了待拷贝的硬盘以及需要拷入信息的硬盘。下图中可以确定出我们要从/dev/sdb 拷贝到/dev/sdc

3.运行命令ddrescue。进行全盘拷贝。

ddrescue -f -r3 /dev/sdb /dev/sdc mapfile

-f表示覆盖原数据。-r3表示遇到错误时重试3次。mapfile是ddrescue在拷贝过程中使用的记录文件。用来支持断点续传功能。如果不指定则会自动在当前目录创建。ZFSmirror磁盘分区损坏后的恢复单次运行不用太过注意。但如果要多次运行拷贝则需要区分和不同拷贝对应的mapfile。4T的硬盘需要拷贝6到8小时。下图是拷贝中的样子:

ddrescue克隆执行中

4.克隆完硬盘后。ZFSmirror磁盘分区损坏后的恢复将原盘(一块完好的且克隆过的硬盘和一块先前分区被破坏了的硬盘)通过RDM方式直通到TrueNas中。发现已经可以直接在TrueNas的 import功能识别了。当

时没截图。现在已经导入进去就看不到了。

选择pool

但是存储池的状态是DEGRADED(降级)。因为有一块盘是坏的。

降级状态的pool

从存储池状态的报告上可以看到。ZFSmirror磁盘分区损坏后的恢复系统甚至可以识别出那块破坏了分区的硬盘曾经在存储池中的id。

5.既然第二块盘不能用。那么我们就把它从池中释放出来。执行后可以看到。只剩下了一块完好的硬盘。

zpool detach aquar_pool 5776694313143636179

去掉了损坏盘的pool

6.由于被破坏的硬盘仅仅是分区出了问题。硬件本身无问题。所以下一步我们直接重新将有问题的磁盘加入存储池中。让zfs把它当作一个新设备进行数据同步。

zpool attach aquar_pool 94a30883-6ea1-11eb-9c12-ff7f90a40b7e /dev/sda

这条命令的意义是将刚才释放的硬盘(/dev/sda)添加进存储池aquar_pool中。这块磁盘以目前池中那块完好的磁盘(94a30883-6ea1-11eb-9c12-ff7f90a40b7e)为基础进行数据恢复。

挂载了新盘的pool

执行后即可看到存储池的状态变为ONLINE。ZFSmirror磁盘分区损坏后的恢复并提示有设备正在恢复数据。sda的硬盘也出现在了mirror的列表中。不知为何。使用fdisk -l查出来的硬盘id值无法被zpool识别。实际上我也发现第一块完好的硬盘在fdisk -l中的id值与zfs显示的也不一样。而这两个值显然都对应着sdb这块硬盘。

7.接下来等待zfs自行将数据恢复即可。根据status的提示目前改存储池提供的可能是降级服务。为了避免意想不到的问题。我们还是先等待池恢复健康再做其他操作。

TrueNas显示zfs正在恢复

后记:其实zfs在迁移之前是需要先将池离线。将设备导出(export)。再把硬盘插入别的机器中。在目标机器上直接zpool import就可以完成导入了。我由于没看文档。走了很多弯路。不过也了解了如何在硬盘损坏的情况下将存储池恢复的方法。

ZFSmirror磁盘分区损坏后的恢复

其他人还看了

杀疯了!两千元档,N5105、双M2、4盘位、8G内存,绿联DX4600使用体验与评测

绿联DX4600

包括物理黑群迁移、升级、硬解等

遇强越强的绿联私有云DX4600,可兼顾性能与易用

非专业对ikuai和openwrt软交换性能测试

哎呦不错哦,赞!(703)
打赏 打赏打赏给作者

郑重声明:本文“[NAS存储]ZFSmirror磁盘分区损坏后的恢复”,https://nmgjrty.com/cunchusb_228686.html内容,由生火人提供发布,请自行判断内容优劣。

上一篇:[NAS存储]回顾2021威联通新品发布会“安全新境地,AI更懂你”

下一篇:[NAS存储]极空间私有云Z2小魔盒的快速度和大空间

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!
相关推荐


tags标签

返回顶部