/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_a
fs_b
(그런데 동일한 디스크 또는 RAID 어레이에 있는 여러 포맷된 파티션 또는 LVM 볼륨도 별도의 파일 시스템이므로 mv
복사 및 삭제할 수도 있습니다.)
이 질문은 수년에 걸쳐 여러 번 나타났습니다(누군가가 원하는 것을 수행하는 도구를 만드는 것에 대해 이야기합니다). 제가 이해한 바에 따르면 너무 어려운 바구니에 넣는 데 있어 가장 어려운 점은 스냅샷을 처리하는 방법에 대한 질문입니다. 모든 스냅샷에서 fs_a
블록은 두 파일 시스템 모두에 있습니다. 하드 링크가 있는 파일에도 마찬가지입니다.
나 자신도 이 문제를 여러 번 경험했고(예: 당신과 같은 데이터 세트 간에 파일을 이동할 때 또는 하위 디렉터리를 파일 시스템으로 변환해야 할 때) 불편함을 감수하며 살아가는 법을 방금 배웠습니다. 그것은 주요 PITA가 될 수 있습니다.
fs_b
비어 있거나 아직 존재하지 않으며 이동하려는 경우모두fs_a
to의 내용 fs_b
(일부 또는 대부분의 파일 및 디렉토리뿐만 아니라) 의 이름을 로 zfs rename
바꿀 수 있습니다 . 그러나 이것이 귀하의 경우와 관련이 있는지 의심됩니다.fs_a
fs_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