ZFS导入无法找到任何池


11

我有一个ZFS池-包含2个vdev的镜像-在FreeBSD服务器上运行。现在,我只有镜像中的一个磁盘,而我正试图从镜像中恢复文件。

ZFS数据位于磁盘上的GPT分区中。

当我尝试导入池时,根本没有迹象表明它存在。我尝试了多种方法,但是没有任何反应。

我已经zdb -lu在分区上运行了,而且看起来标签还不错。

# zpool import
# zpool import -D
# zpool status
no pools available
# zpool import -f ztmp
cannot import 'ztmp': no such pool available
# zpool import 16827460747202824739
cannot import '16827460747202824739': no such pool available

分区信息:

# gpart list da0
Geom name: da0
modified: false
state: OK
fwheads: 255
fwsectors: 63
last: 3907029134
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: da0p1
   Mediasize: 65536 (64K)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   rawuuid: d7a10230-8b0e-11e1-b750-f46d04227f12
   rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
   label: (null)
   length: 65536
   offset: 17408
   type: freebsd-boot
   index: 1
   end: 161
   start: 34
2. Name: da0p2
   Mediasize: 17179869184 (16G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 82944
   Mode: r0w0e0
   rawuuid: d7aa40b7-8b0e-11e1-b750-f46d04227f12
   rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b
   label: (null)
   length: 17179869184
   offset: 82944
   type: freebsd-swap
   index: 2
   end: 33554593
   start: 162
3. Name: da0p3
   Mediasize: 1905891737600 (1.7T)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 82944
   Mode: r0w0e0
   rawuuid: d7b6a47e-8b0e-11e1-b750-f46d04227f12
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: (null)
   length: 1905891737600
   offset: 17179952128
   type: freebsd-zfs
   index: 3
   end: 3755999393
   start: 33554594
Consumers:
1. Name: da0
   Mediasize: 2000398934016 (1.8T)
   Sectorsize: 512
   Mode: r0w0e0

ZFS标签:

--------------------------------------------
LABEL 0
--------------------------------------------
    version: 5000
    name: 'ztmp'
    state: 0
    txg: 0
    pool_guid: 16827460747202824739
    hostid: 740296715
    hostname: '#############'
    top_guid: 15350190479074972289
    guid: 3060075816835778669
    vdev_children: 1
    vdev_tree:
        type: 'mirror'
        id: 0
        guid: 15350190479074972289
        whole_disk: 0
        metaslab_array: 30
        metaslab_shift: 34
        ashift: 9
        asize: 1905887019008
        is_log: 0
        create_txg: 4
        children[0]:
            type: 'disk'
            id: 0
            guid: 3060075816835778669
            path: '/dev/gptid/d7b6a47e-8b0e-11e1-b750-f46d04227f12'
            phys_path: '/dev/gptid/d7b6a47e-8b0e-11e1-b750-f46d04227f12'
            whole_disk: 1
            DTL: 5511
            resilvering: 1
        children[1]:
            type: 'disk'
            id: 1
            guid: 3324029433529063540
            path: '/dev/gptid/396a2b11-cb16-11e1-83f4-f46d04227f12'
            phys_path: '/dev/gptid/396a2b11-cb16-11e1-83f4-f46d04227f12'
            whole_disk: 1
            DTL: 3543
            create_txg: 4
            resilvering: 1
    features_for_read:
    create_txg: 0
Uberblock[0]
    magic = 0000000000bab10c
    version = 5000
    txg = 0
    guid_sum = 1668268329223536005
    timestamp = 1361299185 UTC = Tue Feb 19 10:39:45 2013

(其他标签为准确副本)

这个旧线程中有一个类似问题的讨论。我尝试运行Jeff Bonwick的labelfix工具(博文中有更新),但似乎无法解决问题。

有任何想法吗?


2
驱动器是从镜像分离的,而不是分开的。看来这是问题的原因。不幸的是,镜子的其余部分不存在。
squidpickles

1
我不知道这是个合适的论坛,因为对该问题的“答案”涉及大量的试验和错误。现在,尝试“ zpool import -d </ dev / path / to / disk>”。-D列出已销毁的池,-d接受要查看的磁盘位置的参数,并且可以在命令行上多次指定(但在您的情况下,仅需要一个磁盘,而一个磁盘则需要一次) 。看看有什么用。
Nex7 2014年

1
您可能认为这不是正确的论坛是正确的。是的,我尝试了-d-D选项,但无济于事。
squidpickles

1
如果您尝试使用-d <包括分区的磁盘开发路径,但未显示,请在illumos操作系统上重试所有内容。如果仍然看不到,那我就没主意了。如果数据具有货币价值,您可能需要聘请数据恢复专家,或者在使用illumos派生工具时开始查看代码(src.illumos.org),并使用zpool import命令dtrace查看其采取的路径并尝试弄清楚为什么看不到您的游泳池。
Nex7年

2
@GrahamPerrin我确实使它工作了。我在FreeBSD安装上编辑了ZFS源文件,并使其绕过所有健全性检查。禁用了足够多的这些之后,我设法导入了池。一定有人绕过了我自己的理智检查...
squidpickles

Answers:


6

为了将来参考,仅在不识别zpool / zfs fs的情况下,简单地执行zpool import -a(将搜索所有内容)通常也会有所帮助。


我什至在缓存中看到我的,但是尝试没有用。我正在备份我的缓存文件,尝试使用和不使用它,并强制执行该操作,等等。
布赖恩·托马斯

4

从评论(从开幕海报):

我在FreeBSD安装上编辑了ZFS源文件,并使其绕过所有健全性检查。禁用了足够多的这些之后,我设法导入了池。


1

我以某种方式搞砸了我的ZFS配置。不幸的是,我不记得自己到底做了什么(我一直在更换一些硬件,所以我搞砸了;别像我一样!),但这对我有用。我正在使用XigmaNAS(nas4free),下面的所有命令都是通过终端发出的。

关于我做过(和没有做过)的一些模糊记忆:

  • 没有导出任何池
  • 可能已删除(销毁)池

症状:

  1. 在Web GUI中,可以自动将磁盘导入并识别为zpool(不是未格式化或UFS等)。
  2. 但是,GUI ZFS部分无法检测到zpool。因此,我不能仅通过单击按钮来导入池。强制导入也不起作用。
  3. 关于此磁盘的SMART信息在GUI中看起来还可以。我认为磁盘没有物理损坏。
  4. 在GUI Information(GUI信息)部分中,磁盘显示为da1。这是我在进入终端之前所需的足够信息。
  5. 对其他用户的警告:如果GUI出现问题,请立即停止任何破坏性操作。例如创建新的vdev或尝试使用其他磁盘格式。转到终端。
  6. 在终端中,这是一些尝试的命令和结果。

    • zpool import -ano pool available to import
    • zpool statusno pools available(语言中断?大声笑)。
    • gpart list -a 不显示 da1
    • gpart list da1gpart: no such geom: da1
    • zpool listno pools available
    • glabel list -a 不显示任何池 da1
    • zdb -l /dev/da1能够打印中的两个标签da1,所以我的磁盘没有死
    • zpool import -D表示池da1已被破坏,并且可能能够导入

解:

运行zpool import -D -f (poolname)解决了这个问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.