这个文件可能在不同的时间都有过写入,或者说这个文件在间隔比较久后追加内容后在磁盘中是否连续?
1
sagaxu 2018-09-18 16:42:02 +08:00 via Android
剩余空间够大,磁盘碎片率不严重时,你可以认为它是近似连续的。
|
3
simonliu2018 2018-09-18 16:48:04 +08:00 1
我理解是不连续的。
我是这么分析的:文件创建的时候,操作系统会预先分配几个 block,如果这时再创建一个新文件,系统会把后续几个 block 分给新文件,那第一个文件增长的时候只能再重新分配新的 block,这些 block 不能保证和之前的连续。要想 block 连续需要把之前的文件 move 到更连续的 block,这代价很大。 具体可以看看 linux 操作系统的实现。 |
4
msg7086 2018-09-18 16:49:40 +08:00
根据文件系统的实现。
写入文件的时候可以预先提醒内核你要多大的空间,方便文件系统给你预留。 |
6
puritania OP @simonliu2018 感觉一直连续的话除非两个中间预留了很大一部分空间。。。但是之前了解到 ext 文件系统已经可以解决大部分的碎片问题了,看来还得看看相关文件系统的知识。。。
@msg7086 真的有这样的系统调用吗? |
7
kfchyc 2018-09-18 17:21:30 +08:00 via iPhone
跟文件系统有关,你要是 ntfs 那种稀疏文件系统就更奇怪了
|
8
liuxu 2018-09-18 18:57:33 +08:00
物理上一般不是连续的,以 ext2 为例,一个 inode 可以有多个不连续的 data block,data block 用于存储实际文件数据。
|
10
ps1aniuge 2018-09-21 17:21:33 +08:00
块很大时,浪费空间,但是文件的增加减少,不会导致文件碎片。
块小时,不浪费空间,但是文件碎块变多。 linux 不用整理磁盘是骗人的,是 ext3,是浪费空间的。 ext4,也需要整理碎块,也有整理碎块程序了。 |