ZFS 가져 오기에서 풀을 찾을 수 없습니다


11

FreeBSD 서버에서 실행되는 ZFS 풀 (2 개의 vdev를 포함하는 미러)이있었습니다. 이제 미러에서 하나의 디스크 만 가지고 있으며 파일을 복구하려고합니다.

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

1
이것이 올바른 포럼이 아닌 것에 대해 옳을 수도 있습니다. 그리고 네, -dand -D옵션을 사용해 보았습니다 .
오징어

1
-d <파티션을 포함한 디스크 개발 경로>로 시도했지만 표시되지 않으면 illumos OS에서 모든 것을 다시 시도하십시오. 그래도 볼 수 없으면 아이디어가 없습니다. 데이터에 금전적 가치가있는 경우 데이터 복구 전문가를 고용하거나 illumos 파생 상품을 사용하는 동안 코드 (src.illumos.org)를보고 zpool 가져 오기 명령을 추적하여 어떤 경로를 사용하고 시도하는지 확인할 수 있습니다. 수영장이 보이지 않는 이유를 알아 내기 위해
Nex7

2
@ GrahamPerrin 나는 결국 작동하게되었습니다. FreeBSD 설치에서 ZFS 소스를 편집하여 모든 완전성 검사를 무시했습니다. 그것들을 충분히 비활성화 한 후, 나는 수영장을 수입 할 수있었습니다. 누군가 내 위생 검사를 우회
했어야했는데

답변:


6

나중에 참조 할 수 있도록 zpool import -a (모두 검색)를 수행하면 일반적으로 zpool / zfs fs가 인식되지 않을 때 도움이됩니다.


나는 심지어 캐시에서 내 것을 보았지만 이것을 시도해도 효과가 없었습니다. 캐시 파일을 백업하고, 캐시 파일을 사용하거나 사용하지 않고 시도하고, Graham이 위에서 제안한 내용을 확인하는 등의 작업을 수행합니다.
브라이언 토마스

4

해설에서 (오프닝 포스터에서) :

FreeBSD 설치에서 ZFS 소스를 편집하여 모든 완전성 검사를 무시했습니다. 그것들을 충분히 비활성화 한 후, 나는 수영장을 수입 할 수있었습니다.


1

어떻게 든 ZFS 구성을 망쳤습니다. 불행히도 나는 내가 한 일을 정확히 기억하지 못합니다 (하드웨어를 바꾸어 엉망이되었습니다. 나와 같이하지 마십시오!). XigmaNAS (nas4free)를 사용하고 있으며 아래의 모든 명령은 터미널을 통해 발행됩니다.

내가 한 일과하지 않은 일에 대한 모호한 기억 :

  • 풀을 내 보내지 않았습니다
  • 풀을 삭제 (파기)했을 수 있습니다.

조짐:

  1. Web GUI에서 디스크를 자동으로 가져 와서 zpool (포맷되지 않거나 UFS 등)로 인식 할 수 있습니다.
  2. 그러나 GUI ZFS 섹션은 zpool을 감지 할 수 없습니다. 따라서 단순히 버튼을 눌러 풀을 가져올 수 없습니다. 강제 수입도 작동하지 않았습니다.
  3. 이 디스크에 대한 SMART 정보는 GUI에서 잘 보입니다. 디스크가 물리적으로 손상되었다고 생각하지 않습니다.
  4. GUI 정보 섹션에서 디스크를로 표시합니다 da1. 이것은 터미널에 가기 전에 필요한 정보입니다.
  5. 다른 사용자에게 경고 : GUI 관련 문제가 발생하면 즉시 파괴적인 작업을 중지하십시오. 새 vdev를 만들거나 다른 디스크 형식으로 시도하는 등의 작업. 터미널로 이동하십시오.
  6. 터미널에서 시도한 명령과 결과는 다음과 같습니다.

    • zpool import -a 말한다 no pool available to import
    • zpool status말한다 no pools available(깨진 언어? lol.)
    • gpart list -a 표시하지 않습니다 da1
    • gpart list da1 말한다 gpart: no such geom: da1
    • zpool list 말한다 no pools available
    • glabel list -a 수영장을 표시하지 않습니다 da1
    • zdb -l /dev/da1에 두 개의 레이블을 인쇄 할 수 da1있으므로 디스크가 죽지 않았습니다
    • zpool import -D수영장 da1이 파괴되어 가져올 수 있다고 말합니다.

해결책:

실행으로 zpool import -D -f (poolname)문제가 해결되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.