![覆盖文件时这会对文件系统 NTFS 产生什么影响?](https://linux22.com/image/1439937/%E8%A6%86%E7%9B%96%E6%96%87%E4%BB%B6%E6%97%B6%E8%BF%99%E4%BC%9A%E5%AF%B9%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%20NTFS%20%E4%BA%A7%E7%94%9F%E4%BB%80%E4%B9%88%E5%BD%B1%E5%93%8D%EF%BC%9F.png)
假设我有一块辅助硬盘,它已经过碎片整理和优化,因此数据是一个整洁连续的块,没有缺失的空间/簇。就像一堵坚固的砖墙。
如果我复制一个同名文件并覆盖辅助驱动器上的文件,数据是否存储在完全相同的空间/集群中?
如果文件较小,这会在集群中产生新的间隙吗?
如果文件较大,部分数据是否会填满群集,然后使用驱动器末尾的空闲群集,从而使其变得碎片化?
答案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”。
干杯,里克:)