하나의 zfs 파일 시스템에서 동일한 풀의 다른 zfs 파일 시스템으로 파일을 이동하는 방법은 무엇입니까?


17

나는 같은 ZFS 풀에 두 개의 파일 시스템을 가지고 /mnt/fs_a/mnt/fs_b. 약 1TB의 데이터를에서 fs_a로 이동하고 싶습니다 fs_b. 그러나 내가 할 때 :

mv /mnt/fs_a/mythtv_recordings /mnt/fs_b/

놀랍게도 파일을 블록 단위로 복사하기 시작합니다. 2GB 파일을 이동하는 데 걸린 시간을 감안할 때이 작업을 완료하는 데 며칠이 걸릴 것 같습니다.

이를 위해서는 훨씬 더 똑똑하고 빠른 방법이 있어야합니다.

답변:


22

(이것은 주석으로 시작되었지만 너무 길어 지금은 답입니다)

불행히도 대답은 "아니오"입니다. 이를위한 더 빠르고 똑똑한 방법은 없습니다.

ZFS 파일 시스템은 동일한 풀에 있더라도 별도의 파일 시스템입니다. 어느 쪽 mv도 다른 도구는 단지에 있던 파일이 그래서 어떤 블록 포인터 또는 이동할 수 있습니다 fs_a지금됩니다 fs_b.

(BTW, 동일한 디스크 또는 RAID 어레이의 여러 형식의 파티션 또는 LVM 볼륨도 별도의 파일 시스템이며 mv복사 및 삭제도 가능합니다)

이 문제는 수년에 걸쳐 여러 번 발생했으며 (원하는 것을 수행 할 수있는 도구를 만드는 것에 대한 이야기가 있음) 이해하기 때문에 너무 어려운 바구니에 넣는 데 가장 큰 어려움은 스냅 샷을 처리하는 방법에 대한 문제입니다 -스냅 샷이있는 경우 fs_a 블록이 동시에 두 파일 시스템에있게됩니다. 하드 링크가있는 파일도 마찬가지입니다.

나는 여러 번 (예 : 데이터 세트간에 파일을 이동하거나 하위 디렉토리를 fs로 변환해야 할 때) 여러 번 실행했으며 불편을 겪는 법을 배웠습니다. 주요 PITA 일 수 있습니다.

fs_b비어 있거나 아직 존재하지 않는 경우 의 전체 내용 fs_afs_b(일부 또는 대부분의 파일 및 디렉토리 가 아닌)로 옮기 zfs rename려면 fs_a로 이름 을 바꿀 수 fs_b있습니다. 그러나 이것이 귀하의 상황과 관련이 없다고 생각합니다.

https://github.com/zfsonlinux/zfs/issues/2991 에서 ZFSOnLinux에 대한 공개 문제가 있습니다.

검색하지는 않았지만 업스트림 OpenZFS 및 Sun / Oracle ZFS에서도 비슷한 버그 보고서 / 기능 요청 이있을 것으로 예상 합니다.

BTW, /server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume 참조


3
철저한 답변 감사합니다. 이름 변경 제안에 감사드립니다. 의심 스럽지만 b에서 원하지 않는 것에 대한 더 많은 데이터가 있다고 생각합니다. 적어도 지금은 움직일 수 있고 적어도 스 래싱을 제거하기 위해 버퍼 디스크를 통해 파일을 복사 할 수 있습니다.
프레드 해밀턴
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.