방금 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 ...
데이터 손실없이 실행할 수 있습니까 ? 어쨌든 내 데이터가 사라 졌습니까?
/dev/disk/by-id
이들 드라이브에 대한 심볼릭 링크가 있으며 한 장치의 모든 심볼릭 링크는 동일한/dev/sd*
드라이브를 가리 킵니다 . 그리고 솔루션에 가장 가까운 것은 (zpool replace 사용) 풀을 다시 가져올 수 없으므로 할 수 없습니다.