업그레이드 된 Ubuntu, 하나의 zpool에있는 모든 드라이브를 사용할 수 없음으로 표시


8

방금 Ubuntu 14.04를 업그레이드했으며 서버에 두 개의 ZFS 풀이 있습니다. ZFS 드라이버 및 커널 버전과 싸우는 데 약간의 문제가 있었지만 지금은 해결되었습니다. 하나의 수영장이 온라인 상태가되어 정상적으로 설치되었습니다. 다른 사람은 그렇지 않았습니다. 이 도구의 주요 차이점은 하나는 디스크 풀 (비디오 / 음악 저장소)이고 다른 하나는 raidz 세트 (문서 등)였습니다.

나는 풀을 내보내고 다시 가져 오려고 시도했지만 아무 소용이 없으면 가져 오려고하면 다음과 같이됩니다.

root@kyou:/home/matt# zpool import -fFX -d /dev/disk/by-id/
   pool: storage
     id: 15855792916570596778
  state: UNAVAIL
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:

        storage                                      UNAVAIL  insufficient replicas
          raidz1-0                                   UNAVAIL  insufficient replicas
            ata-SAMSUNG_HD103SJ_S246J90B134910       UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523  UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969  UNAVAIL

그들에 대한 심볼릭 링크 /dev/disk/by-id도 존재합니다 :

root@kyou:/home/matt# ls -l /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910* /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51*
lrwxrwxrwx 1 root root  9 May 27 19:31 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910 -> ../../sdb
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part9 -> ../../sdb9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 -> ../../sdd
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part9 -> ../../sdd9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 -> ../../sde
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1 -> ../../sde1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part9 -> ../../sde9

/dev/sd*나열된 다양한 장치를 검사하면 올바른 장치 인 것으로 보입니다 (raidz 어레이에있는 3 개의 1TB 드라이브).

내가 실행 한 zdb -l파일에 덤핑 및 DIFF를 실행, 각 드라이브에. 3의 유일한 차이점은 guid 필드입니다 (필자는 가정합니다). 각 레이블은 기본적으로 동일하며 다음과 같습니다.

version: 5000
name: 'storage'
state: 0
txg: 4
pool_guid: 15855792916570596778
hostname: 'kyou'
top_guid: 1683909657511667860
guid: 8815283814047599968
vdev_children: 1
vdev_tree:
    type: 'raidz'
    id: 0
    guid: 1683909657511667860
    nparity: 1
    metaslab_array: 33
    metaslab_shift: 34
    ashift: 9
    asize: 3000569954304
    is_log: 0
    create_txg: 4
    children[0]:
        type: 'disk'
        id: 0
        guid: 8815283814047599968
        path: '/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1'
        whole_disk: 1
        create_txg: 4
    children[1]:
        type: 'disk'
        id: 1
        guid: 18036424618735999728
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1'
        whole_disk: 1
        create_txg: 4
    children[2]:
        type: 'disk'
        id: 2
        guid: 10307555127976192266
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1'
        whole_disk: 1
        create_txg: 4
features_for_read:

어리석게도, 나는이 풀의 최근 백업이 없습니다. 그러나 재부팅하기 전에 풀이 정상적으로 작동했으며 Linux에서 디스크가 올바르게 작동합니다 (smartctl을 실행하여 이중 검사를 수행했습니다).

요약하면 다음과 같습니다.

  • Ubuntu를 업그레이드하고 두 zpool 중 하나에 대한 액세스 권한을 잃었습니다.
  • 풀의 차이점은 JBOD이고 다른 하나는 두려워했습니다.
  • 마운트 할 수없는 zpool의 모든 드라이브는 UNAVAIL로 표시되며 손상된 데이터에 대한 메모는 없습니다.
  • 풀은 모두에서 참조 된 디스크로 작성되었습니다 /dev/disk/by-id/.
  • /dev/disk/by-id다양한 /dev/sd장치 에서 심볼릭 링크 가 올바른 것 같습니다
  • zdb 드라이브에서 레이블을 읽을 수 있습니다.
  • 풀을 이미 내보내거나 가져 오려고했으나 다시 가져올 수 없습니다.

zpool / zfs를 통해 이러한 디스크를 적절한 배열로 다시 가져올 수있는 일종의 흑 마법이 있습니까? zpool create zraid ...데이터 손실없이 실행할 수 있습니까 ? 어쨌든 내 데이터가 사라 졌습니까?

답변:


5

이 특정 오류 메시지에 대한 많은 인터넷 검색 결과가 나타납니다.

root@kyou:/home/matt# zpool import -f storage
cannot import 'storage': one or more devices are already in use

(후손 및 검색 색인에 여기에 포함됨) 나는 이것을 발견했다.

https://groups.google.com/a/zfsonlinux.org/forum/#!topic/zfs-discuss/VVEwd1VFDmc

동일한 파티션을 사용하고 있었고 ZFS가로드되기 전에 부팅하는 동안 mdraid에 추가했습니다.

나는 몇 가지 mdadm 라인을보고 dmesg충분히 기억했다 .

root@kyou:/home/matt# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : active raid5 sdd[2] sdb[0] sde[1]
      1953524992 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

이 드라이브는 옛날에 소프트웨어 raid5 어레이의 일부였습니다. 어떤 이유로 업그레이드 중에 드라이브를 다시 검색하기로 결정하고 드라이브가 한 번 md 어레이의 일부인 것을 확인하고 다시 만들기로 결정했습니다. 이것은 다음으로 확인되었습니다.

root@kyou:/storage# mdadm --examine /dev/sd[a-z]

이 세 가지 드라이브는 많은 정보를 보여주었습니다. 지금은 배열을 중지합니다 :

root@kyou:/home/matt# mdadm --stop /dev/md126
mdadm: stopped /dev/md126

가져 오기를 다시 실행하십시오.

root@kyou:/home/matt# zpool import -f storage

어레이를 다시 온라인 상태로 만들었습니다.

이제 백업을 위해 해당 풀의 스냅 샷을 작성하고 실행 mdadm --zero-superblock합니다.


4

우분투 에는 Red Hat / CentOS에서 볼 수없는 성가신 udev 문제 가있는 것 같습니다 . 가능하면 WWN 기반 장치 이름을 사용하는 것이 좋습니다.

당신은 본 적이 : 왜 내 ZFS 거울의 한쪽 원인 재부팅하면 UNAVAIL가 될 않았다?


2
나는 그것들을 보았고 하나의 스레드를 읽었을 때 문제는 장치의 모든 파티션에 대해 심볼릭 링크를 만들지 않는 것 같습니다. 방금 세 드라이브를 모두 확인했습니다. 이들은 각각 파티션 번호 1과 9를 가지며, /dev/disk/by-id이들 드라이브에 대한 심볼릭 링크가 있으며 한 장치의 모든 심볼릭 링크는 동일한 /dev/sd*드라이브를 가리 킵니다 . 그리고 솔루션에 가장 가까운 것은 (zpool replace 사용) 풀을 다시 가져올 수 없으므로 할 수 없습니다.
매트 시커

2

데비안 위지 (Debian Wheezy)에서 3.13 시리즈 커널로 업그레이드하려고하면서 거의이 정확한 문제가 발생했습니다. 귀하는 귀하의 의견에 옳습니다. 그것은 udev 버그입니다. 불행히도 정렬되지는 않았지만 ZOL 0.6.2 버전과의 호환성을 위해 다른 커널, 특히 3.11 시리즈를 살펴볼 가치가 있습니다. 0.6.3이 나올 때까지 이전 커널을 사용하십시오.


udev가 이런 식으로 깨지는 것은 용납 할 수 없습니다. 나는 우분투를 사용하지 않지만, 이와 같은 것들로 인해 RHEL 제품과 비교할 때 실제로 닦지 않은 것처럼 보입니다.
ewwhite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.