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

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

/mnt/fs_a동일한 zfs 풀에 두 개의 파일 시스템 이 있고 /mnt/fs_b약 1TB의 데이터를 fs_a에서 fs_b. 하지만 내가:

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

놀랍게도 파일을 블록 단위로 복사하기 시작했습니다. 2GB 파일을 이동하는 데 걸린 시간을 고려하면 작업을 완료하는 데 며칠 동안 상당한 스래싱이 걸릴 것으로 보입니다.

이를 수행하려면 더 스마트하고 빠른 방법이 있어야 합니다. 그렇죠?

답변1

불행히도 대답은 "아니요"입니다. 이보다 더 빠르고 스마트한 방법은 없습니다.

ZFS 파일 시스템(동일한 풀에 있더라도)은 별도의 파일 시스템입니다. 다른 어떤 도구도 이전에 열려 있던 파일이 이제 열리 mv도록 블록 포인터나 다른 것을 이동할 수는 없습니다 .fs_afs_b

(그런데 동일한 디스크 또는 RAID 어레이에 있는 여러 포맷된 파티션 또는 LVM 볼륨도 별도의 파일 시스템이므로 mv복사 및 삭제할 수도 있습니다.)

이 질문은 수년에 걸쳐 여러 번 나타났습니다(누군가가 원하는 것을 수행하는 도구를 만드는 것에 대해 이야기합니다). 제가 이해한 바에 따르면 너무 어려운 바구니에 넣는 데 있어 가장 어려운 점은 스냅샷을 처리하는 방법에 대한 질문입니다. 모든 스냅샷에서 fs_a블록은 두 파일 시스템 모두에 있습니다. 하드 링크가 있는 파일에도 마찬가지입니다.

나 자신도 이 문제를 여러 번 경험했고(예: 당신과 같은 데이터 세트 간에 파일을 이동할 때 또는 하위 디렉터리를 파일 시스템으로 변환해야 할 때) 불편함을 감수하며 살아가는 법을 방금 배웠습니다. 그것은 주요 PITA가 될 수 있습니다.

fs_b비어 있거나 아직 존재하지 않으며 이동하려는 경우모두fs_ato의 내용 fs_b(일부 또는 대부분의 파일 및 디렉토리뿐만 아니라) 의 이름을 로 zfs rename바꿀 수 있습니다 . 그러나 이것이 귀하의 경우와 관련이 있는지 의심됩니다.fs_afs_b

ZFSOnLinux에 미해결 문제가 있습니다.https://github.com/zfsonlinux/zfs/issues/2991

검색하지는 않았지만 업스트림을 희망합니다.오픈ZFS Sun/Oracle ZFS에도 유사한 버그 보고서/기능 요청이 있을 수 있습니다.

그건 그렇고, 또한 참조하십시오https://serverfault.com/questions/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume

관련 정보