fangpsh's blog

威联通RAID1 磁盘数据导出

公司用了多年的TS-651 坏了,修了没跑几天又坏(深圳市南山赛格新联创电脑经营部 👎 ), 最开始搜索qnap 硬盘导出,首先看到smzdm的帖子:

Qnap的磁盘分区采用的是md RAID+LVM2的两层组织结构,即使我使用的是Single模式分区也是一样的结构。

看起来有戏,尝试一下数据导出,主要参考这篇文章Data Recovery from Failed QNAP RAID 1 on a PC using Linux

注意:在QNAP 官网数据迁移兼容性检查工具中,ARM 和x86 的系统是不能互相迁移的,那可能意味着ARM 的磁盘,在x86 的服务器上是不是也不能导出 🤔?

风险提示:硬盘有价,数据无价,以下仅代表个人情况。

公司的磁盘是2块盘,做了RAID1,那么单独一块盘完全是镜像,先拿一块盘做下实验,搞坏的话,还剩余一个再搞个QNAP(QuTScloud) 也能读出来。

同事帮忙弄了一台Dell R430,装了个CentOS7,带的阵列卡是PERC H730 Mini

系统盘在Slot0,Qnap 拆下的磁盘在Slot1,先安装megacli。题外话,上次帮同学折腾才发现新的卡已经要用storcli64 了。

环境准备:安装lvm2mdadm

插入磁盘,再将对应slot 磁盘设置为JBOD:

./MegaCli64 -PDMakeJBOD -PhysDrv[32:1] -a0

fdisk 能看到设备了:

Disk /dev/sdb: 8001.6 GB, 8001563222016 bytes, 15628053168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: gpt
Disk identifier: FDF2182D-83DC-47B6-8B39-01ECAF78BCEC


#         Start          End    Size  Type            Name
 1           40      1060289  517.7M  Microsoft basic primary
 2      1060296      2120579  517.7M  Microsoft basic primary
 3      2120584  15610264109    7.3T  Microsoft basic primary
 4  15610264112  15611324399  517.7M  Microsoft basic primary
 5  15611324408  15628031999      8G  Microsoft basic primary

扫描一下:

mdadm --examine --scan

cat /proc/mdstat

md123 : inactive sdb4[27](S)
      530128 blocks super 1.0

md124 : inactive sdb5[0](S)
      8353780 blocks super 1.0

md125 : inactive sdb3[0]
      7804071616 blocks super 1.0

md126 : inactive sdb1[27](S)
      530108 blocks super 1.0

md127 : inactive sdb2[2](S)
      530124 blocks super 1.0

数据在sdb3/md125。参考smzdm那个教程,执行

mdadm -A --verbose --run ...

记得有个error,提示设备在使用中,还是什么错误(后台在自动挂载了?),手工stop 一下,再挂载就好了:

mdadm --stop /dev/md125
mdadm --run /dev/md125

这个时候再cat /proc/mdstat 能看到active 了。

Personalities : [raid1]
md125 : active raid1 sdb3[0]
      7804071616 blocks super 1.0 [2/1] [U_]

接着执行pvdisplay,但是我并未看到/dev/md125 这个PV,

搜了下,需要执行pvscan --cache (Updates the runtime state for all lvm devices):

  --- Physical volume ---
  PV Name               /dev/md125
  VG Name               vg289
  PV Size               <7.27 TiB / not usable 1.65 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1905290
  Free PE               0
  Allocated PE          1905290
  PV UUID               hkvib9-WQfS-iyOu-b2U9-1LNa-5I2e-O2Vjwb

lvscan 看下:

  inactive          '/dev/vg289/lv546' [74.42 GiB] inherit
  inactive            '/dev/vg289/lv3' [<7.20 TiB] inherit

这个时候尝试去挂载/dev/vg289/lv3 发现设备不存在,需要再执行下:

lvchange -ay /dev/vg289/lv3

mount 就可以了,备份完数据后,卸载的话按 ripcaster 教程文末脚本。

LUKS 加密盘的挂载前面步骤一样,增加一个解密过程: 参考 mount-qnap-encrypted-volume, 文中 storage_util 那个工具是qnap 专有的,可以用openssl 代替:

openssl passwd -1 -salt YCCaQNAP '密码'