ZFS: zpool import - 누락된 장치를 사용할 수 없습니다.

ZFS: zpool import - 누락된 장치를 사용할 수 없습니다.

약 1년 동안 저는 zfs(풀 이름 zdata) 아래의 dm-crypt/luks 암호화된 하드 드라이브, 미러 모드의 8개 하드 드라이브에서 데이터를 실행하는 데비안 서버를 사용했습니다. 따라서 각각 2개의 하드 드라이브가 있는 4개의 미러가 있습니다. 정상 기간 동안의 zpool 상태:

# zpool status  
pool: zdata  
state: ONLINE  
scrub: scrub completed after (blahblah)  
config:  
NAME        STATE     READ WRITE CKSUM  
zdata          ONLINE       0     0     0  
mirror-0       ONLINE       0     0     0  
 dm-name-n8_2  ONLINE       0     0     0  
 dm-name-n8_3  ONLINE       0     0     0  
mirror-1       ONLINE       0     0     0  
 dm-name-n8_0  ONLINE       0     0     0  
 dm-name-n8_1  ONLINE       0     0     0  
mirror-2       ONLINE       0     0     0  
 dm-name-n8_4  ONLINE       0     0     0  
 dm-name-n8_5  ONLINE       0     0     0  
mirror-3       ONLINE       0     0     0  
 dm-name-n8_7  ONLINE       0     0     0  
 dm-name-n8_6  ONLINE       0     0     0  
errors: No known data errors  

(물론 34TB의 원시 데이터는 백업하지 않았습니다. 거의 다 포기할 수도 있었지만, 나에게 소중하다고 생각한 파일이 몇 개 있었습니다.)
2주 전에 Stable로 업그레이드한 후, dm-name-n8_2에서 몇 가지 읽기, 쓰기 및 체크섬 오류가 발생하기 시작했습니다. zfs가 재동기화를 시작했기 때문에 정리가 수행되지 않았지만 계속해서 다시 시작되었기 때문에 종료되지 않았습니다. 미러에 있는 또 다른 하드 드라이브인 dm-name-n8_3에도 동일한 오류가 발생했고, 두 hhd의 각 컨트롤러가 모두 죽어가고 있다는 사실을 깨닫기 시작했습니다.
제가 했던 어리석은 짓들에 비하면 지금은 다 이해할 수 없는 것 같아요(마이닝 풀 역사아무것도 표시되지 않습니다). 무엇보다도 "더 나은" 디스크를 교체하기 시작했습니다. 동시에 나는 정전을 일으킨 결함이 있는 가전제품에 대해 작업하고 있었는데, 이로 인해 셀을 시작한 후 다시 프라이밍할 수 없었습니다. 이제 불량 디스크가 제거되고 교체되었습니다. 결국 풀을 다시 가져올 수 없습니다.

# zpool import -f
pool: zdata
id: 1343310357846896221
state: UNAVAIL
status: One or more devices were being resilvered.
action: The pool cannot be imported due to damaged devices or data.
config:

zdata             UNAVAIL  missing device
mirror-0        DEGRADED
 dm-name-n8_2  UNAVAIL
 dm-name-n8_3  ONLINE
mirror-1       ONLINE
 n8_0          ONLINE
 n8_1          ONLINE
mirror-2       DEGRADED
 dm-name-n8_4  ONLINE
 dm-name-n8_5  UNAVAIL
mirror-3       ONLINE
 n8_7          ONLINE
 dm-name-n8_6  ONLINE

# zpool import zdata -f
cannot import 'zdata': one or more devices is currently unavailable

와 동일zpool import zdata -fnF
변경된 장치 이름을 기록해 두십시오.
수영장은 최소한하나모든 미러의 장치가 온라인 상태인데 왜 장치 누락에 대해 불평합니까?
어떤 장치가 누락되었는지 어떻게 알 수 있나요? 풀을 다시 온라인으로 전환할 수 있는 방법이 있습니까? 어떻게 해야 합니까?
(저는 oracle 문서와 freebsd 매뉴얼에서 zfs에 관한 장을 읽고 몇 가지를 배웠지만 제 질문에 대한 답을 찾지 못했습니다.)
보시다시피 zdb의 출력은 약간 깁니다.여기.

답변1

마침내 나는 이 혼란스러운 문제에 대한 해결책을 찾았습니다. status풀을 다시 시작하는 데 사용한 디스크에 따라 다른 메시지가 표시되었습니다. 4개의 해당 디스크를 다양한 조합으로 사용하여 성능이 저하된 상태의 풀을 가져오려고 여러 번 시도했고 마침내 다음과 같은 결과를 얻었습니다.

NAME                       STATE     READ WRITE CKSUM
zdata                      DEGRADED     0     0     0
  mirror-0                 DEGRADED     0     0     0
    dm-name-n8_2           ONLINE       0     0     0  (resilvering)
    11141007683912581709   UNAVAIL      0     0     0  was     /dev/disk/by-id/dm-name-n8_3
  mirror-1                 DEGRADED     0     0     0
    16620393607066428577   FAULTED      0     0     0  was     /dev/disk/by-id/dm-name-n8_0
    dm-name-n8_0           ONLINE       0     0     0
  mirror-2                 DEGRADED     0     0     0
    replacing-0            DEGRADED    85     0     0
      1051730541091272780  FAULTED      0     0     0  was     /dev/disk/by-id/dm-name-n8_4
      dm-name-n8_6         ONLINE       0     0    85  (resilvering)
dm-name-n8_4           ONLINE       0     0     0  (resilvering)
  mirror-3                 DEGRADED     0     0     0
    dm-name-n8_5           ONLINE       0     0     0
    13833275275194605312   FAULTED      0     0     0  was     /dev/disk/by-id/dm-name-n8_6

이를 통해 손상된 디스크에서 거의 모든 데이터를 긁어낼 수 있었습니다. 손실은 약 0.1%입니다(70000개 파일 중 >134개).

내가 이해한 바로는 zfs는 풀의 각 장치에 구성 데이터를 저장하고 동기화를 유지합니다. 정전으로 인해 이것이 손상되었거나 디스크가 손상되었을 수 있습니까?

아무튼 또 기쁘네요. 읽고 도와주셔서 감사합니다!

답변2

향후 참조용으로만 사용하세요. 다른 I/O 버퍼(하드웨어 RAID 컨트롤러) 위에 I/O 버퍼(zfs) 배치언제나나쁜 생각입니다. 이 둘은 서로를 무시하고 온갖 문제를 일으킬 수 있습니다. 이를 방지하는 현명한 방법은 네트워크 저장 장치를 사용하는 것입니다.

관련 정보