Ubuntu 시스템에서 Fedora 17 시스템으로 파일 시스템을 백업/복원했습니다. df
출력을 기준으로 사용 공간이 30% 증가한 것을 확인했습니다 . 그 이유는 무엇입니까?
Fedora 시스템 df
표시: 78GB 사용됨
Ubuntu 시스템 df
표시: 60GB 사용됨
시스템 간의 차이점:
Ubuntu: ext3(수년 전에 생성됨)
Fedora 17: ext4( mkfs.ext4
일반 호출을 사용하여 생성됨)
XFS 파일 시스템(Fedora 17)으로 복원하면 78GB의 공간이 사용됩니다.
백업 및 복원은 GNU tar를 사용하여 수행됩니다. 파일 시스템에는 다양한 유형의 파일(예: 소스 트리, 메일 디렉터리, ISO 등)이 포함되어 있습니다.
답변1
가장 먼저 떠오르는 것은 "스파스 파일"입니다. 전통적으로 파일의 특정 오프셋에 데이터가 있는 파일을 만든 다음 더 큰 오프셋을 찾을 수 있었습니다. 더 큰 오프셋에 데이터를 쓸 때 파일 시스템은 중간 오프셋에 디스크 블록을 할당하지 않습니다. 디스크 블록을 할당하지 않고 이러한 오프셋을 읽는 프로그램은 0 값을 읽습니다.
스파스 파일을 압축하면 스파스 파일의 할당되지 않은 디스크 블록이 tar 파일(또는 출력 스트림) 및 재생성된 파일의 오프셋에 할당됩니다.
MSC/NASTRAN(Finite Element Modeling System)과 같은 프로그램처럼 일부 DBMS가 희소 파일을 생성했던 것을 기억합니다. 이러한 희박한 파일을 백업하면 오프라인 저장소를 많이 사용하게 되어 관련된 모든 사람들이 놀랐습니다.
답변2
공간 차이를 볼 때 주목해야 할 또 다른 사항은 루트용으로 예약된 공간입니다(일반적으로 ext{2,3,4}에서 5%). 이 공간을 사용하면 사용자가 디스크를 가득 채우더라도(사용자가 루트가 아닌 경우) 운영 체제를 실행할 수 있습니다(로그 파일 쓰기 등).
다음 명령을 사용하여 이 설정을 볼 수 있습니다 tune2fs -l
.
[root@host ]# tune2fs -l /dev/md0 |grep Reserved
Reserved block count: 1279986
Reserved GDT blocks: 1017
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
ext 파일 시스템에서는 이 기능을 비활성화할 수 있습니다.tune2fs -m 0 /dev/NAME
얼핏 보면 xfs가 루트를 위한 공간을 예약한다고 믿지 않습니다.