![如何恢复重启后错误消失的 ZFS 池](https://linux22.com/image/1147728/%E5%A6%82%E4%BD%95%E6%81%A2%E5%A4%8D%E9%87%8D%E5%90%AF%E5%90%8E%E9%94%99%E8%AF%AF%E6%B6%88%E5%A4%B1%E7%9A%84%20ZFS%20%E6%B1%A0.png)
我有两个 ZFS 池设置了alphapool
镜像sda1
和sdb1
,betapool
就在 上sdb2
。操作系统驻留在 的其他分区上,sda
因此我可以启动、查看日志等。
昨天betapool
开始出现错误。我不知道根本原因,说实话,我很失望 ZFS 对我来说不是即插即用的。当我意识到出了问题时,我照做了,结果sudo zpool status -x
在 中出现了两个错误betapool
:一个指向池中的文件,另一个指向<metadata>
。我尝试进行一些诊断,但我对该池的大多数命令都挂在 中,并显示“D”(不可中断的 IO 等待)ps aux
。sudo 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