为什么 Ubuntu 中删除文件很慢?

为什么 Ubuntu 中删除文件很慢?

我在 stackoveflow 上的一篇文章中读到,在 Linux 上,当我们删除一个文件时,它实际上并没有被删除,只是删除了 inode 表中到该文件的链接。如果是这样的话,那么为什么删除不是一个恒定时间的操作呢?

我还尝试了一个实验:我创建了一个包含 1500 个图像的文件夹,并创建了这些图像的 tar 对象。目录和 tar 文件大小相同。删除tar对象和1500张图片目录的时序如下

删除 tar 文件time rm test.tar


real    0m0.024s
user    0m0.001s
sys     0m0.024s

删除目录:time rm -r test


real    0m0.219s
user    0m0.024s
sys     0m0.191s

根据我的理解,这种时间差异是因为
取消链接 1 个文件与取消链接 1500 个文件。但是 tar 对象删除速度不应该快 1500 倍吗?

答案1

因为它是不是一个简单的“标记单个索引节点已删除”操作:https://www.slashroot.in/how-does-file-deletion-work-linux

由于使用了范围,至少在 ext4 上文件删除比在 ext2/ext3 分区上快得多。

在 SSD 的情况下,由于使用“丢弃”选项,文件删除可能会比必要的速度慢,该选项告诉您的 SSD 以物理方式丢弃属于文件的所有块,以延长 SSD 的使用寿命。这是高度不是建议禁用它。

相关内容