获取支持延迟分配的 FS 中文件范围的分配状态

获取支持延迟分配的 FS 中文件范围的分配状态

对于延迟分配的非常大的文件,有些扇区可能已分配,有些扇区可能未分配。 ext4/xfs/等支持延迟分配。

例如,创建一个空文件并使用fallocate() 将其设置为非常大的大小。现在文件的大小可能是 GB,但使用时du您将获得零磁盘使用率。经过一些随机写入后,我想获取该文件的特定扇区/页是否已分配。

一些相关的系统调用(例如 mincore/fincore)作用于页面缓存的虚拟机状态。但是它们不提供磁盘分配信息。我想知道有什么方法可以做到这一点。谢谢。

答案1

您可以使用以下命令获取文件在磁盘上的映射FIEMAP读写控制。还有FIBMAPioctl,它执行类似的操作,需要 root,并且没有详细记录。

无需编写 C,您就可以使用filefrag -vhdparm --fibmap来获取数据。

相关内容