답변:
(이것은 주석으로 시작되었지만 너무 길어 지금은 답입니다)
불행히도 대답은 "아니오"입니다. 이를위한 더 빠르고 똑똑한 방법은 없습니다.
ZFS 파일 시스템은 동일한 풀에 있더라도 별도의 파일 시스템입니다. 어느 쪽 mv
도 다른 도구는 단지에 있던 파일이 그래서 어떤 블록 포인터 또는 이동할 수 있습니다 fs_a
지금됩니다 fs_b
.
(BTW, 동일한 디스크 또는 RAID 어레이의 여러 형식의 파티션 또는 LVM 볼륨도 별도의 파일 시스템이며 mv
복사 및 삭제도 가능합니다)
이 문제는 수년에 걸쳐 여러 번 발생했으며 (원하는 것을 수행 할 수있는 도구를 만드는 것에 대한 이야기가 있음) 이해하기 때문에 너무 어려운 바구니에 넣는 데 가장 큰 어려움은 스냅 샷을 처리하는 방법에 대한 문제입니다 -스냅 샷이있는 경우 fs_a
블록이 동시에 두 파일 시스템에있게됩니다. 하드 링크가있는 파일도 마찬가지입니다.
나는 여러 번 (예 : 데이터 세트간에 파일을 이동하거나 하위 디렉토리를 fs로 변환해야 할 때) 여러 번 실행했으며 불편을 겪는 법을 배웠습니다. 주요 PITA 일 수 있습니다.
fs_b
비어 있거나 아직 존재하지 않는 경우 의 전체 내용 fs_a
을 fs_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 참조