내가 읽고있다rmlint
수동, 중복 처리기 중 하나는 복제 및 참조 연결입니다.
· 복제: btrfs 전용. BTRFS_IOC_FILE_EXTENT_SAME ioctl(3p)을 사용하여 두 파일을 모두 복제해 보세요. 이렇게 하면 중복된 범위가 물리적으로 제거됩니다. 최소한 커널 4.2가 필요합니다.
· reflink: 중복된 파일을 원본 파일에 다시 연결하려고 시도합니다. man 1 cp의 --reflink도 참조하세요. 파일 시스템이 이를 지원하지 않으면 실패합니다.
이 복제본의 기능은 정확히 무엇이며, 참조 링크와 어떻게 다릅니까? BTRFS_IOC_FILE_EXTENT_SAME ioctl의 기능은 무엇입니까?
답변1
차이점은 다소 미묘합니다.
Reflink는 중복 파일을 제거하고 그 자리에 원본 파일의 복제본인 새 파일을 만듭니다. 일부 트릭을 통해 메타데이터를 보존하려는 rmlint의 최선의 노력에도 불구하고 복제본의 메타데이터는 손실됩니다 touch -mr
.
복제는 BTRFS_IOC_FILE_EXTENT_SAME ioctl(또는 최신 버전에서는 FIDEDUPERANGE ioctl)을 사용하여 파일이 동일한지 확인하고, 그렇다면 동일한 데이터 범위를 공유하도록 커널에 요청합니다. 원본 메타데이터를 유지합니다. 이는 커널에 의해 자동으로 수행되고 파일이 여전히 동일한지 확인하기 때문에 reflink보다 틀림없이 더 안전합니다.