![对文件占用的物理块的非 root 访问](https://linux22.com/image/143817/%E5%AF%B9%E6%96%87%E4%BB%B6%E5%8D%A0%E7%94%A8%E7%9A%84%E7%89%A9%E7%90%86%E5%9D%97%E7%9A%84%E9%9D%9E%20root%20%E8%AE%BF%E9%97%AE.png)
ioctl()
并可FIBMAP
用于确定文件占用的物理块,给定可通过以下方式获得的逻辑块stat()
;但是,需要 root 访问权限。为什么需要 root 访问才能确定文件的磁盘位置,是否有任何不需要 root 的机制来获取相同的信息?对于引发此问题的用例,文件很小(平均约为 1 个块),因此仅了解第一个块的物理位置就足够了(间接块当然是不必要的)。必须以短顺序(尽可能快)访问大约 100,000 个此类文件,并且我想在传递到 I/O 调度程序队列之前根据磁盘位置进行预排序。排序依据inode
是一种不需要 root 权限的可能性,但 inode 编号和磁盘位置之间的对应程度是概率性的,这意味着性能随对应强度的变化而变化。