ioctl()
и FIBMAP
могут использоваться для определения физических блоков, занимаемых файлом, по заданным логическим блокам, доступным через stat()
; однако требуется root-доступ. Почему root-доступ необходим для определения местоположения диска на диске, и существуют ли механизмы, не требующие прав root, для получения той же информации? Для варианта использования, который мотивирует этот вопрос, файлы имеют небольшой размер (в среднем около 1 блока), поэтому достаточно знать физическое местоположение только первого блока (косвенные блоки, безусловно, не нужны). Около 100 000 таких файлов должны быть доступны в кратчайшие сроки (как можно быстрее), и я хотел бы выполнить предварительную сортировку на основе расположения диска перед доставкой в очередь планировщика ввода-вывода. Сортировка по inode
– это возможность, для которой не требуются привилегии суперпользователя, но степень соответствия между номером инода и местоположением диска является вероятностной, что подразумевает изменение производительности в зависимости от степени соответствия.