如何恢复重启后错误消失的 ZFS 池

如何恢复重启后错误消失的 ZFS 池

我有两个 ZFS 池设置了alphapool镜像sda1sdb1betapool就在 上sdb2。操作系统驻留在 的其他分区上,sda因此我可以启动、查看日志等。

昨天betapool开始出现错误。我不知道根本原因,说实话,我很失望 ZFS 对我来说不是即插即用的。当我意识到出了问题时,我照做了,结果sudo zpool status -x在 中出现了两个错误betapool:一个指向池中的文件,另一个指向<metadata>。我尝试进行一些诊断,但我对该池的大多数命令都挂在 中,并显示“D”(不可中断的 IO 等待)ps auxsudo reboot也挂了,所以我进行了硬重置。

重启后,其中一个池alphapool挂载正常,而 则betapool消失了。消失了,但还没完全消失...

$ sudo zpool import betapool
cannot import 'betapool': I/O error
    Destroy and re-create the pool from
    a backup source.

代替

$ sudo zpool import smthelse
cannot import 'smthelse': no such pool available`

$ sudo zpool create betapool /dev/sdb2
invalid vdev specification
use '-f' to override the following errors:
/dev/sdb2 is part of potentially active pool 'betapool'
  • 我可以做些什么来尝试恢复并导入我的betapool?(-F没有import帮助)
  • 我怎样才能找出 ZFS 失败的根本原因,因为需要决定是否应该再试一次或采取更保守的方法,尽管我真的很喜欢 ZFS 的简单和灵活性。

PSsmartctl/dev/sdb没有显示错误。

根据评论中的要求更新了命令的输出:

$ sudo zpool import
   pool: betapool
     id: 1517879328056702136
  state: FAULTED
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
    The pool may be active on another system, but can be imported using
    the '-f' flag.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:
    betapool    FAULTED  corrupted data
      sdb2      FAULTED  corrupted data

$ sudo zpool status -v
  pool: alphapool
 state: ONLINE
  scan: scrub repaired 6.15M in 2h36m with 0 errors on Sun May 14 03:00:39 2017
config:
    NAME        STATE     READ WRITE CKSUM
    alphapool   ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sda1    ONLINE       0     0     0
        sdb1    ONLINE       0     0     0
errors: No known data errors

$ sudo zpool online betapool /dev/sdb2
cannot open 'betapool': no such pool

相关内容