지연 할당을 지원하는 FS에서 파일 범위의 할당 상태를 가져옵니다.

지연 할당을 지원하는 FS에서 파일 범위의 할당 상태를 가져옵니다.

할당이 지연된 매우 큰 파일의 경우 일부 섹터는 할당될 수 있고 일부는 할당되지 않을 수 있습니다. ext4/xfs/etc는 지연 할당을 지원합니다.

예를 들어, 빈 파일을 만들고 fallocate()를 사용하여 매우 큰 크기로 설정합니다. 이제 파일 크기는 GB가 될 수 있지만 du사용하는 동안 디스크 사용량은 0이 됩니다. 무작위로 쓴 후 파일의 특정 섹터/페이지가 할당되었는지 확인하고 싶습니다.

일부 관련 시스템 호출(예: mincore/fincore)은 페이지 캐시의 가상 머신 상태에 따라 작동합니다. 그러나 디스크 할당 정보는 제공하지 않습니다. 이를 수행할 수 있는 방법이 있는지 알고 싶습니다. 감사해요.

답변1

다음 명령을 사용하여 디스크에 있는 파일 매핑을 가져올 수 있습니다.FIEMAPI/W 제어. FIBMAP유사한 작업을 수행하고 루트가 필요하며 잘 문서화되지 않은 ioctl 도 있습니다 .

C를 작성하지 않고도 filefrag -v또는 를 사용하여 hdparm --fibmap데이터를 얻을 수 있습니다.

관련 정보