gpt4 book ai didi

c - STAT block 大小/使用的 block

转载 作者:行者123 更新时间:2023-12-05 01:33:13 25 4
gpt4 key购买 nike

我有一个使我感到困惑的问题,我的任务是解决碎片问题。

stat() for a file:
st_size = 10520
st_blksize = 4096
st_blocks = 24


我在某些地方已经读到st_blksize是文件系统的常规块大小,在这种情况下为 4096,但是该文件适合 3 blocks10520 / 51220.5,这意味着存在 3.5 blocks未使用的空间,即使已分配。这是否意味着此文件中有 1792个未使用的字节(碎片)?

正如我提到的那样,我对此进行了相当多的阅读,并且阅读了许多相互矛盾的文章,希望有人能够一劳永逸地解决这一问题!

最佳答案

我认为您的项目在stat(2) API层上不是真正可解决的。考虑文件长度为4096字节的情况。假定它是通过一遍又一遍地反复添加512字节块创建的。假定每次写入时文件系统已完全装满,除了一个512字节的块。假定每次写入可用的512字节块位于磁盘上随机可用的位置。

这个文件是100%分散的-没有两个块彼此靠近。

但是,仅基于stat(2)变量进行的度量很可能表明文件中的任何地方都没有浪费的块。

在尝试查找您的实际问题的答案时,在被叫走之前我已经达到了ext3_write_begin()的水平,希望这对您的搜索有用。

更新资料

如果您有兴趣查找碎片,我认为应该从bmap程序的debugfs(8)命令开始:

debugfs:  bmap sars_first_radio_show.zip 0
94441752
debugfs: bmap sars_first_radio_show.zip 1
94441781
debugfs: bmap sars_first_radio_show.zip 2
94441782
debugfs: bmap sars_first_radio_show.zip 3
94441783
debugfs: bmap sars_first_radio_show.zip 4
94441784
debugfs: bmap sars_first_radio_show.zip 5
94459905
debugfs: bmap sars_first_radio_show.zip 6
95126019
debugfs: bmap sars_first_radio_show.zip 7
95126020
debugfs: bmap sars_first_radio_show.zip 8
95126021
debugfs: bmap sars_first_radio_show.zip 9
95126022
debugfs:


这显示文件 sars_first_radio_show.zip的前十个块;您会看到这些块并不都是连续的:944417 {52,81,82,83,84},94459905,951260 {19,20,21,22}。

您可以在 debugfs(8)周围编写答案脚本,也可以自己使用 libext2fs库例程。与您正在进行的 stat(2)练习相比,这将是复杂性上的重要一步-但是答案将意味着某些意义,而不仅仅是模糊的猜测。

关于c - STAT block 大小/使用的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com