覆盖文件时这会对文件系统 NTFS 产生什么影响?

覆盖文件时这会对文件系统 NTFS 产生什么影响?

假设我有一块辅助硬盘,它已经过碎片整理和优化,因此数据是一个整洁连续的块,没有缺失的空间/簇。就像一堵坚固的砖墙。

如果我复制一个同名文件并覆盖辅助驱动器上的文件,数据是否存储在完全相同的空间/集群中?

如果文件较小,这会在集群中产生新的间隙吗?

如果文件较大,部分数据是否会填满群集,然后使用驱动器末尾的空闲群集,从而使其变得碎片化?

答案1

假设我有一块辅助硬盘,它已经过碎片整理和优化,因此数据是一个整洁连续的块,没有缺失的空间/簇。就像一堵坚固的砖墙。

--> 想象一下文件系统存储如下图所示:

[(数据1)(数据1)(数据2)(数据2)(数据3)(数据3)(数据4)(数据4)(数据5)(数据6)(空)(数据7)]

(..) 中的每个项目都是一个块大小,它们可以是 4k、8k、16k、32k 块,...任何可以满足您的存储需求的大小。

如果我复制一个同名文件并覆盖辅助驱动器上的文件,数据是否存储在完全相同的空间/集群中?

--> 是的,但是你真的不知道。

这取决于要复制的文件的大小。如果修改文件以在文件中添加更多数据或删除文件数据,则可以使用更多数据块或更少数据块。对于已用于存储文件的每块 4k 文件系统文件,该文件需要占用 4k 簇中的空间。如果数据仅使用 5k,则需要两个 4k 簇来存储文件。

如果文件较小,这会在集群中产生新的间隙吗?

如果文件较小,则基于存储新文件所需的最近块,该间隙实际上只是集群中未使用的数据空间。

如果文件较大,部分数据是否会填满群集,然后使用驱动器末尾的空闲群集,从而使其变得碎片化?

--> 一般来说是的,尽管对于今天的文件系统来说,这些问题并不那么明显。

除非您有一个在块文件系统上连续读取/写入的进程..并且对于这个实例,我只会创建一个 RAM 驱动器供该进程工作。

总之,我鼓励您关注许多其他性能因素,例如使用 prelink 和 preload...以及如果您有 debian 系统,则更改 /etc/sysctl.conf 文件中的“vm.swappiness = 10”。

干杯,里克:)

相关内容