할당이 지연된 매우 큰 파일의 경우 일부 섹터는 할당될 수 있고 일부는 할당되지 않을 수 있습니다. ext4/xfs/etc는 지연 할당을 지원합니다.
예를 들어, 빈 파일을 만들고 fallocate()를 사용하여 매우 큰 크기로 설정합니다. 이제 파일 크기는 GB가 될 수 있지만 du
사용하는 동안 디스크 사용량은 0이 됩니다. 무작위로 쓴 후 파일의 특정 섹터/페이지가 할당되었는지 확인하고 싶습니다.
일부 관련 시스템 호출(예: mincore/fincore)은 페이지 캐시의 가상 머신 상태에 따라 작동합니다. 그러나 디스크 할당 정보는 제공하지 않습니다. 이를 수행할 수 있는 방법이 있는지 알고 싶습니다. 감사해요.
답변1
다음 명령을 사용하여 디스크에 있는 파일 매핑을 가져올 수 있습니다.FIEMAP
I/W 제어. FIBMAP
유사한 작업을 수행하고 루트가 필요하며 잘 문서화되지 않은 ioctl 도 있습니다 .
C를 작성하지 않고도 filefrag -v
또는 를 사용하여 hdparm --fibmap
데이터를 얻을 수 있습니다.