du -sh 새 디렉토리의 경우 위치에 따라 결과가 달라집니다.

du -sh 새 디렉토리의 경우 위치에 따라 결과가 달라집니다.

새 디렉토리를 만들고 즉시 du를 실행하면 이런 일이 발생합니다. 이 디렉토리에는 아무것도 없습니다.

me@mybox[~]$ mkdir /scratch/test2
me@mybox[~]$ du -sh /scratch/test2
4.0K    /scratch/test2

좋습니다. /scratch(RHEL 6.6을 실행하는 sda의 LV)의 새 디렉터리는 4.0K의 공간을 차지합니다.

me@mybox[~]$ mkdir /home/me/test
me@mybox[~]$ du -sh /home/me/test
512 test

내 홈 디렉토리(Solaris 서버에서 NFS를 통해 호스팅되는 ZFS 디렉토리)의 새 디렉토리는 512바이트를 차지합니다. 이제 1분 정도 기다렸다가 다시 du /home/me/test를 실행하면 다음과 같습니다.

me@mybox[~]$ du -sh /home/me/test
1.5K     test

디렉토리는 여전히 비어 있지만 차지하는 공간은 1.5K로 증가합니다(내가 알 수 있는 한 ls -la).

이러한 차이가 발생하는 기술적 이유를 알고 싶습니다. 일반적으로 512바이트와 1.5K 디렉터리 사이의 짧은 시간에 어떤 일이 발생합니까? 그 여분의 공간은 무엇을 의미합니까? 512바이트와 1.5K가 모두 로컬 디스크 디렉터리에 필요한 4.0K보다 훨씬 작은 이유는 무엇입니까?

답변1

파일 시스템 유형이 무엇인지 지정하지 않았습니다 /scratch. ext4일 것으로 예상했습니다. ext4는 할당을 위해 4k 블록을 사용하므로 이는 파일 시스템 개체가 사용할 수 있는 최소 공간입니다(물론 크기가 0인 파일은 제외).

ZFS는 공간을 할당하기 위해 512바이트 블록을 사용하는 매우 특별한 파일 시스템입니다. 디렉토리에 액세스한 후 일부 확장된 속성이 디렉토리에 추가되어 디렉토리에서 사용하는 공간이 늘어났을 수도 있습니다. NFS 마운트 파일 시스템이므로 일부 속성 버퍼링이 있을 수 있으며 NFS 서버 측의 데이터를 보면 크기 변경이 표시되지 않을 수도 있습니다.

관련 정보