我如何恢复突然离线并报告“最后由另一个系统使用”的 ZFS 池?

我如何恢复突然离线并报告“最后由另一个系统使用”的 ZFS 池?

总结:我在一台具有 16GB ECC 内存的服务器上运行带有 ZFS 的 FreeBSD 11.2 NAS 服务器。我发现我的主池消失了。ZFS 可以看到该池,但报告故障全自动高速ZFS-8000就是这样cannot import 'tank': pool may be in use from other system, it was last accessed by nasserver (hostid: 0xaaaaaaaa) on Sat Apr 13 04:16:22 2019,但是这个池子有绝不已被其他系统使用,并且nasserver是当前主机。我担心我的池已损坏。我应该怎么做才能尝试恢复它?我有备份,但它们已经过期,因为我必须手动进行备份。我还没有尝试运行zpool import -f tank,因为我想小心谨慎,避免让事情变得更糟。


完整问题:

我正在运行带有 ZFS 的 FreeBSD 11.2 NAS 服务器。我休假回来后发现服务器已启动,但 NAS 卷无法访问。当我通过 ssh 进入服务器时,我发现我的 man 池tank不见了:

root@nasserver:/home/root # zpool status   pool: zroot state: ONLINE status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(7) for details.   scan: scrub repaired 0 in 0h0m with 0 errors on Sat Mar 23 03:01:44 2019 config:


        NAME                                  STATE     READ WRITE CKSUM
        zroot                                 ONLINE       0     0     0
          mirror-0                            ONLINE       0     0     0
            diskid/DISK-XXXXXXXXXXXXXXXXXXX1  ONLINE       0     0     0
            diskid/DISK-XXXXXXXXXXXXXXXXXXX2  ONLINE       0     0     0


errors: No known data errors

这些驱动器似乎可用,我尝试导入它们,但 ZFS 报告它cannot import 'tank': pool may be in use from other system, it was last accessed by nasserver (hostid: 0xaaaaaaaa) on Sat Apr 13 04:16:22 2019。这很奇怪,因为我从未在其他系统上使用过这些磁盘,并且报告的主机名是它们所连接的计算机的主机名:

root@nasserver:/home/root # zpool import
   pool: tank
     id: 12345678901234567901
  state: ONLINE
status: The pool was last accessed by another system.
action: The pool can be imported using its name or numeric identifier and
        the '-f' flag.
   see: http://illumos.org/msg/ZFS-8000-EY
config:


        tank                    ONLINE
          raidz1-0              ONLINE
            gpt/tank-1          ONLINE
            gpt/tank-2          ONLINE
            gpt/tank-3          ONLINE
            gpt/tank-4          ONLINE


root@nasserver:/home/root # zpool import tank
cannot import 'tank': pool may be in use from other system, it was last accessed by nasserver (hostid: 0xaaaaaaaa) on Sat Apr 13 04:16:22 2019
use '-f' to import anyway

我担心我的池可能已损坏。我有备份,但它们有些过时了。我应该怎么做才能恢复我的池?

答案1

zpool import -f tank,就像错误对话框中所显示的那样。

这是一个相当不常见的错误,但我以前见过它发生过(过去十年里,在 100 多台机器上可能出现过一两次);如果出现更改了主机名和其他魔法,zfs由于(可能过度)谨慎,即这可能不是该池所属的机器,因此不会自动导入池。使用-f来覆盖该谨慎,然后,这就是您的池(并且它应该在下一轮中自动导入成功)。

这可能是最多在系统崩溃或断电后,很可能会发生这种情况,导致系统崩溃,并且池在崩溃过程中无法正确导出。

相关内容