전체 리 실버없이 ZFS 디스크를 분리했다가 다시 연결할 수 있습니까?


10

총 4 개의 드라이브가있는 ZFS 미러 풀이 있습니다. 두 드라이브는 오프 사이트 백업 회전에 사용됩니다. 초기 리 실버 링 detachattach디스크를 나중에 나중에 증분 리 실버 만 수행 할 수있을 것으로 기대 했지만 테스트에서는 연결된 디스크에 이미 거의 모든 풀이 포함되어 있는지 여부에 관계없이 전체 리 실버를 수행하는 것으로 보입니다. 내용.

offline/ online접근 방식을 사용하면 디스크를 완전히 재구성하지 않고 디스크 만 업데이트하여 원하는 결과를 얻을 수 있습니까? 또는이 작업을 예상대로 수행하려면 각 백업 디스크를 1 디스크 풀로 사용하고 send최신 스냅 샷을 최신 상태로 만들어야 할 때마다 완전히 다른 작업을 수행해야 합니까?


5
-1 백업을 위해 드라이브를 분리 / 연결하지 말고 ZFS 설계자가 의도 한대로 보내기 / 받기 명령을 사용하십시오.
Chris S

2
@ 인용 대신 @ChrisS는 인용과 함께 답변을 작성하는 방법에 대해 설명합니다. 백업에 대한 유일한 옵션은 다른 곳의 온라인 풀이라고 말하는 것처럼 들리지만 이것이 사실인지 아는 것이 좋을 것입니다.하지만 사실은 아닌 것 같습니다.
STW

1
죄송합니다. 오만한 일이 아닙니다. 그러나 Server Fault 는 Professional System Administrators (et al) 전용입니다. 백업의 미러 차단 방법은 전체적으로 관리 할 수없고 오류가 발생하기 쉽고 전문적이지 않으므로 실행 가능한 백업 방법으로 간주해서는 안됩니다. 내가 제안하는 것은 원하는 파일 시스템으로 두 개의 백업 드라이브를 포맷하고 zfs send명령을 사용 하여 백업 디스크에 저장된 전체 또는 증분 백업 스트림을 가져 오거나 zfs recv복제 디스크를 만드는 데 사용 한다는 것입니다. 이 프로세스를 관리하기 위해 일종의 소프트웨어를 사용하는 것이 좋습니다.
Chris S

귀하의 포인트가 유효하다고 생각합니다. 답변으로 찬성했습니다. 나는 특정 시나리오 (중요하지는 않지만 중요한 사내 서버에 대한 신발 끈 예산에서 발생)에 중점을두기 위해 내 질문을 다시 작성하는 것을 고려하고 있습니다. 리 실버 링? "
STW

답변:


14

디스크를 오프 사이트로 "회전"시키기 위해 ZFS 어레이를 망가 뜨리지 마십시오. 보시다시피, 재 구축 시간이 길고 리 실버 링 프로세스가 사용 된 데이터 세트 크기를 읽거나 확인합니다 .

기능이 있으면 스냅 샷을 작성하고 원격 시스템으로 데이터를 보내는 것이 깨끗하고 방해가되지 않는 접근 방식입니다. 전용 단일 디스크 풀, 복사 및 zpool 내보내기 / 가져 오기 프로세스를 수행 할 수 있다고 가정하지만 매우 우아하지는 않습니다.


불행히도 두 번째 ZFS 서버를 오프 사이트로 실행할 하드웨어 나 대역폭이 없기 때문에 스냅 샷-> 전송 방식을 사용할 수 없습니다. 그러나 오프라인 / 온라인 사용이 작동하는 것으로 보이며 상태가 저하 된 것으로보고됩니다. 다음 주에 어떻게 진행되는지 보겠습니다.
STW

1
이해했다. 그러나 백업 형태로 시스템에서 실행중인 디스크를 꺼내는 것은 확실한 해결책이 아닙니다. 이렇게하면 위험이 크게 증가합니다.
ewwhite 2016 년

좋은 점, 내 계획은 오프라인 상태에서 일시 중지하고 핫 스왑 트레이를 분리 한 다음 완전히 잡아 당기기 전에 완전히 멈출 수 있도록 잠시
기다

1
현장에서 두 번째 서버 (또는 동일한 서버에서 두 번째 ZFS 어레이)를 운영 할 수 있습니까? 핫스왑 베이를 그 안에 넣고 메인 베이와 동기화 한 다음 전체 백업 ZFS 어레이를 서버 안팎으로 회전시킵니다.
Dan Is Fiddling By Firelight

11

추가 실험 후 나는 공정한 해결책을 찾았지만 상당한 절충안이 따른다. offline분리되었지만 분리되지 않은 디스크 는 나중에 증분 리실 버닝 작업만으로 온라인 상태로 되돌릴 수 있습니다 ( " 장치가 온라인 상태가되면 풀에 기록 된 모든 데이터는 새로 사용 가능한 장치와 재 동기화됩니다. "). 내 테스트에서 이것은 약 40GB의 데이터 델타로 28 시간에서 30 분이 조금 넘는 3 디스크 미러의 리 실버 링 시간을 제공합니다.

단점은 오프라인 디스크가있는 모든 풀이 성능이 저하 된 것으로 표시된다는 것입니다. 여전히 미러링 된 풀에 두 개 이상의 온라인 디스크가있는 경우 이는 사실상 경고입니다. 무결성과 중복성은 그대로 유지됩니다.

다른 사람들이 언급 했듯이이 전반적인 접근 방식은 이상적이지 않습니다. 스냅 샷을 원격 풀로 보내는 것이 훨씬 적합하지만 제 경우에는 불가능합니다.

요약하면 풀에서 디스크를 제거하고 나중에 전체 리 실버 링없이 디스크를 다시 추가해야하는 경우 다음과 같은 방법을 권장합니다.

  • 풀에서 디스크를 오프라인으로 : zpool offline pool disk
  • 드라이브를 물리적으로 잡아 당기려면 스핀 다운하십시오. hdparm -Y /dev/thedisk
  • 드라이브가 오프라인 상태 인 상태에서 풀을 성능 저하 상태로 유지
  • 디스크를 풀에 다시 추가하려면 zpool online pool disk

그리고 아직 테스트되지 않았으므로 델타 리 실버 링 작업이 정확하지 않을 위험이 있습니다. "실시간"풀 및 / 또는 오프라인 디스크에 문제가 발생할 수 있습니다. 그런 일이 발생하면 업데이트하지만 지금은이 접근법을 실험 해 보겠습니다.


1
resilver에서 데이터 오류가 발생하면 시간이 지남에 따라 또는 zpool 스크럽시 자동으로 복구됩니다.
the-wabbit

나는 스크럽의 가치를 깨달았다. 오프라인으로 성공적으로 복구 한 후 백업 디스크를 제거 할 때까지 기다립니다
STW

2
빠른 업데이트 : 지난 1 년 동안이 방법은 충분히 효과가있었습니다. 오프 사이트 백업의 월간 복원 테스트는 성공적이고 일관되었습니다. 단일 디스크가 아닌 어레이를 회전시키는 것이 오프 사이트 복사본에 중복 수준을 제공하는 것이 좋으며 가능하면 그렇게하는 것이 좋습니다. 전반적으로 이것은 여전히 ​​해킹 방식이며 일부 위험을 초래하지만 데이터의 합리적으로 안전하고 저렴한 오프 사이트 백업을 제공했습니다.
STW

트랜스 포트가 천천히 모든 드라이브를 손상시킬 수 있으므로 어레이의 모든 드라이브를 회전시키는 것에 반대합니다. 드라이브가 현장에 남아 있어도 회전을하지 않습니다.
Costin Gușă

2

2015 년 10 월 15 일 업데이트 : 오늘 나는 zpool split새로운 풀 (새로운 이름으로)을 기존 풀에서 분리하는 명령을 발견했습니다 . 두 풀이 동일한 시스템에 존재할 수 있고 개별적으로 제거 될 수 있기 split때문에 offline및 보다 훨씬 더 깨끗 detach합니다. export[ed]시스템에서 플러그를 뽑기 전에 새 풀을 깨끗하고 적절하게 정리할 수도 있습니다 .

(원래 게시물은 다음과 같습니다.)

경고! 이 페이지에 대한 다양한 의견 zpool detach은 드라이브가 가능하거나 드라이브를 다시 장착하고 포함 된 데이터에 액세스 할 수 있음을 의미합니다.

그러나이 스레드 (및 자체 실험)에 zpool detach따르면 분리 된 드라이브에서 "풀 정보"를 제거합니다. 다시 말해, a detach드라이브빠른 재 포맷 과 같습니다 . 후 detach많은 양의 데이터 드라이브에 계속있을 수 있지만 될 것입니다 사실상 불가능 드라이브를 다시 마운트하고 사용 가능한 파일 시스템으로 데이터를 볼 수 있습니다.

결과적으로 파괴 된 수영장을 복구 할 수 있다고 생각하기 detach때문에보다 파괴적 인 것처럼 보입니다 !destroyzpool import

A는 detach것입니다 하지umount , zpool export , zpool offline .

내 실험에서 처음 zpool offline장치와 zpool detach동일한 장치를 사용하면 나머지 풀은 장치가 존재하지 않았 음을 잊어 버립니다. 그러나 장치 자체는 offline[d]이전에 있었기 때문에 장치 자체에 detach[ed]알림이 표시되지 않습니다 detach. 따라서 장치 자체에는 여전히 풀 정보가 있으며 다른 시스템으로 이동 한 다음 성능 import[ed]이 저하 된 상태 로 이동할 수 있습니다 .

추가로 보호 하기 위해 명령 을 실행하기 전에 명령 을 실행하기 전에 detach장치를 물리적으로 분리 할 수도 있습니다 .offlinedetach

나는 이것을 사용 희망 offline, 다음 detach, 다음 import내 풀을 백업 처리합니다. 원래 포스터와 마찬가지로, 4 개의 드라이브를 사용하고, 2 개는 일정한 미러에, 2 개는 월별, 회전, 오프 사이트 (및 오프라인) 백업에 사용할 계획입니다. 오프 사이트로 전송하기 전에 별도의 시스템에서 가져 와서 스크러빙하여 각 백업을 확인합니다. 원래 포스터와 달리 매월 전체 백업 드라이브를 다시 작성하는 것은 중요하지 않습니다. 사실, 나는 새로운 비트를 갖도록 완전한 재 작성을 선호합니다.


0

동일한 머신에서 미러에 2 개의 드라이브가있는 새 풀을 작성해 보셨습니까? 그런 다음 작업 풀에서 스냅 샷을 생성 한 다음 해당 스냅 샷을 새 풀로 전송하고 반복하면 다음 스냅 샷 전송이 증분됩니다. "원격 시스템에 데이터 전송"과 동일하지 않습니다. 동일한 시스템 / 서버 / 시스템 내의 풀이 기 때문입니다. 이 설정을 사용하면 zpool split / offline / detach / attach를 계속 적용 할 수 있지만 소스 풀이 아닌 두 번째 (복사) 풀에서만 수행 할 수 있습니다.

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