(rsync on) 마운트된 볼륨: 하드 링크는 보존되는 것처럼 보이지만 공간은 전체 파일로 계산됩니다.

(rsync on) 마운트된 볼륨: 하드 링크는 보존되는 것처럼 보이지만 공간은 전체 파일로 계산됩니다.

서버에서 Hetzner 스토리지박스로 rsnapshot/rsync를 사용하여 공간 효율적인 순환 백업 구성표를 설정하려고 합니다. 대상의 하드 링크가 보고되는 디스크 사용량에 어떤 영향을 미치는지 이해하는 데 어려움을 겪고 있습니다. 간단히 말해서, 하드 링크가 백업 대상에 있는 것처럼 보이더라도 디스크 사용량에는 고려되지 않고 대신 전체 파일로 계산됩니다.

rsnapshot의 대상 폴더는 로컬 파일 시스템에 있어야 하므로 다음 두 부분으로 구성된 워크플로를 설정했습니다.

  1. 다음을 사용하여 로컬 스냅샷을 생성합니다.RSnapshot, 원본 서버의 로컬 폴더
  2. SSH를 통해 로컬 스냅샷을 rsync합니다.재동기화목적지로

이는 잘 작동하고 빠르게 작동하는 것 같지만 한 가지 우려되는 점은 대상( 을 사용하여 du -sh)에 보고된 디스크 사용량이 모든 스냅샷의 크기를 누적하는 것 같다는 것입니다.하드 링크를 사용하여 제대로 복사된 것처럼 보이지만. 참고: Hetzner 스토리지박스는 대화형 SSH 로그인을 허용하지 않기 때문에 이 백업 대상을 CIFS를 사용하여 마운트된 볼륨으로 검사하고 있습니다.

예를 들어, 이 rsnaphsot + rsync 콤보를 3회 수행하면 대상 폴더에 daily.0, daily.1daily.2폴더가 포함됩니다. 하드 링크에 대한 스냅샷 폴더의 임의 파일을 검사할 때 예상된 결과를 얻었습니다.

  1. find /mnt/user.your-storagebox.de/rsync-backup/ -name "output.file" -print0 | xargs -0 ls -li:

    351317 -rw-rw---- 3 root root 8650 Dec 15 11:25 /mnt/user.your-storagebox.de/rsync-backup/daily.0/home/user/output.file
    351317 -rw-rw---- 3 root root 8650 Dec 15 11:25 /mnt/user.your-storagebox.de/rsync-backup/daily.1/home/user/output.file
    351317 -rw-rw---- 3 root root 8650 Dec 15 11:25 /mnt/user.your-storagebox.de/rsync-backup/daily.2/home/user/output.file
    

    동일한 inode가 있는 3개의 파일과 3개의 링크 수를 반환합니다(예상대로).

  2. find /mnt/user.your-storagebox.de/rsync-backup/ -samefile /mnt/user.your-storagebox.de/rsync-backup/daily.0/home/user/output.file

    /mnt/user.your-storagebox.de/rsync-backup/daily.0/var/tomcat/vhosts/output.file
    /mnt/user.your-storagebox.de/rsync-backup/daily.2/var/tomcat/vhosts/output.file
    /mnt/user.your-storagebox.de/rsync-backup/daily.1/var/tomcat/vhosts/output.file
    

    (예상대로) 3개의 파일을 반환합니다.

이는 해당 스냅샷이 대상에 하드 링크로 제대로 복사되었음을 의미하는 것 같습니다.

그러나... 대상 위치에서 디스크 사용량을 확인할 때: du -sh /mnt/user.your-storagebox.de/rsync-backup12G 값이 반환됩니다. 원래 소스 폴더는 약 4G이므로 이는 예상치 못한 일입니다. 분명히 하드 링크에도 불구하고 디스크 사용량은 누적 계산됩니까?

OTOH, 를 통해 대상 폴더를 검사할 때 rsnapshot du다음과 같은 출력이 나타납니다.하다하드 링크를 고려하는 것 같습니다.

4.3G    /mnt/user.your-storagebox.de/rsync-backup/daily.0/
41K     /mnt/user.your-storagebox.de/rsync-backup/daily.1/
41K     /mnt/user.your-storagebox.de/rsync-backup/daily.2/
4.3G    total

이는 혼란스럽습니다. 스냅샷이 하드 링크와 함께 복사되고 최소한의 공간을 차지해야 하거나(inode를 검사할 때 그런 것처럼 보임), 그렇지 않고 예상보다 훨씬 더 많은 공간을 차지하고 있습니다(에서 제안한 대로). 출력 du -sh).

내 주요 관심사는 이 마운트된 볼륨에 보고된 디스크 사용량이 올바른지 아니면 그렇지 않은지입니다. 마운트된 볼륨을 사용할 때 du -sh주의해야 할 사항이 있나요?

답변1

내 버전 du(Debian, du (GNU coreutils) 8.30)은 하드링크가 있는 파일을 처리하고 여러 인스턴스를 한 번만 계산합니다. 당신의 것은 그렇지 않은 것 같습니다. 비교적 쉽게 확인할 수 있지만

시나리오 준비

mkdir zzz                 # Scenario workspace
tar cf zzz/etc.1 /etc     # Ignore "tar: Removing leading `/' from member names"

시험 #1. 두 개의 파일이 복사되었지만 하드링크되지 않았습니다.

cp zzz/etc.1 zzz/etc.2    # Create copy

du -s zzz/etc.1           # 2580 KB, in my instance
du -s zzz/etc.2           # As you would expect, the same value
du -s zzz                 # 5164 KB, because the files are "different"

재판 #2. 두 개의 파일이 함께 하드링크됨

rm zzz/etc.2
ln zzz/etc.1 zzz/etc.2    # Create hardlink

du -s zzz/etc.1           # Unchanged from above, of course, 2850 KB
du -s zzz/etc.2           # As you would expect, still the same value
du -s zzz                 # For me, this is still the same value, 2580 KB

인스턴스가 동일한 하드링크 파일의 여러 인스턴스를 처리할 수 없는 경우 평가판 #2는 평가판 #1에서 와 마찬가지로 du두 가지의 합계를 반환합니다 .etc.1etc.2

du이 정보를 사용하면 버전이 오해의 소지가 있는지 또는 파일이 실제로 예상보다 더 많은 디스크 공간을 사용하고 있는지 확인할 수 있습니다 . (다른 측정 항목을 고려하면 전자라고 확신합니다.)

관련 정보