루트 rpool 외에 추가 저장 영역 풀로 Solaris 10 U8 서버를 확장하고 있습니다.
특정 ZFS 파일 시스템을 rpool에서이 새로운 스토리지 풀로 이동하는 가장 효과적이고 간단하며 안정적인 방법은 무엇입니까?
온라인으로 할 수 있습니까? 아니면 먼저이 풀을 사용하여 서비스를 종료해야합니까?
루트 rpool 외에 추가 저장 영역 풀로 Solaris 10 U8 서버를 확장하고 있습니다.
특정 ZFS 파일 시스템을 rpool에서이 새로운 스토리지 풀로 이동하는 가장 효과적이고 간단하며 안정적인 방법은 무엇입니까?
온라인으로 할 수 있습니까? 아니면 먼저이 풀을 사용하여 서비스를 종료해야합니까?
답변:
서비스 비활성화에 대한 질문은 본질적으로 서비스 자체에 따라 다릅니다.
어쨌든 ZFS 파일 시스템을 보내는 데 시간이 오래 걸릴 수 있습니다. 대부분의 시간 동안 온라인 상태로 유지하여 서비스 사용 불가를 최소화 할 수 있습니다.
두 번째 스냅 샷을 증 분식으로 보내면 이전 전송보다 훨씬 빠릅니다. 예 :
zfs send -i rpool / filesystem @ snapshot rpool / filesystem @ snapshot2 | zfs 수신 -F 대상 풀 / 파일 시스템
완료되면 파일 시스템 마운트 포인트를 이전 데이터 세트에서 새 데이터 세트로 이동하십시오. 예 :
zfs set mountpoint=/application/directory.old rpool/filesystem
zfs set mountpoint = / application / directory 대상 / 파일 시스템
/application/filesystem
이를 달성하기 위해 프로세스가 바인드되어 있지 않은지 확인해야합니다 (예 : 파일 액세스 또는 현재 디렉토리로 사용).
나는 이것이 온라인으로 수행 될 수 있다고 생각하지 않지만 내 프로세스는 필요한 서비스를 종료하고 스냅 샷을 찍고 zfs 보내기 / 받기를 사용하여 마이그레이션하는 것입니다. 다음과 같은 것 :
zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem
편집하다:
"pipe view"명령 (pv)을 설치하면 다음을 사용하여 전송 상태를 모니터 할 수 있습니다.
zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem
나는 jlliagre가 말한 것의 많은 부분을 반복하고 있지만 자손 파일 시스템을 추가했습니다. (대부분 잊었을 때 참조가 있습니다.)
서브 파일 시스템이 -r
있는 경우 zfs snapshot 명령에서 플래그를 사용하고 명령 에서 -r
or -R
플래그 를 사용하려고합니다 zfs send
. 대문자 -R
는 모든 속성 , 스냅 샷 및 복제본을 이동합니다 .
전체 풀을 이동하려면
zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool
더 짧은 마이그레이션 기간 동안 변경 사항을 동기화하려면 애플리케이션 종료, samba, nfs 종료
zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool
마이그레이션을 위해 여러 개의 중간 스냅 샷을 생성하는 경우 zfs send -I
스위치 에 대한 매뉴얼 페이지를 읽으십시오 .
파이프 라인에서 "mbuffer"와 같은 도구를 사용하면 이점이 있습니다. ZFS의 송신 / 복원 성능은 양쪽 끝이 대부분 지속적으로 데이터를 스트리밍 할 수 있고 mbuffer (또는 이와 유사한 것)없이 한 쪽이 다른 쪽에서 계속 차단되는 탁구 효과를 얻을 수 있다면 크게 향상됩니다.