파일이 차지하는 물리적 블록에 대한 루트가 아닌 액세스

파일이 차지하는 물리적 블록에 대한 루트가 아닌 액세스

ioctl()FIBMAP를 통해 사용 가능한 논리 블록이 있는 경우 파일이 차지하는 물리적 블록을 결정하는 데 사용할 수 있습니다 stat(). 그러나 루트 액세스가 필요합니다. 파일의 디스크 위치를 결정하는 데 루트 액세스가 필요한 이유는 무엇이며, 동일한 정보를 얻기 위해 루트가 필요하지 않은 메커니즘이 있습니까? 이 질문을 제기하는 사용 사례의 경우 파일이 작기 때문에(평균 약 1블록) 첫 번째 블록의 물리적 위치를 아는 것만으로도 충분합니다(간접 블록은 물론 필요하지 않음). 이러한 파일 중 약 100,000개는 가능한 한 빠른 순서로 짧은 순서로 액세스해야 하며 I/O 스케줄러 대기열로 전달하기 전에 디스크 위치를 기준으로 파일을 미리 정렬하고 싶습니다. 정렬은 inode루트 권한이 필요하지 않은 가능성을 기반으로 하지만 inode 번호와 디스크 위치 간의 일치 정도는 확률적이므로 일치 정도에 따라 성능이 달라집니다.

관련 정보