有没有办法在 Linux 上删除 100GB 的文件,而不会影响 IO/加载?

有没有办法在 Linux 上删除 100GB 的文件,而不会影响 IO/加载?

我需要删除生产 Web 服务器上的一个巨大的日志文件。我担心如果在 Linux 上删除它会导致系统运行缓慢。有什么好主意吗?

更新:

文件系统:ext3

分区:/var(主要为日志和 MySQL 数据)

不再向日志文件写入数据。(不再附加其他数据)

Web 服务器是 LAMP(大量 IO)

答案1

将文件归零/截断可能比删除它更快。我之所以提到这一点,也是因为这是一个非常大的日志文件,因此必须有大量的进程活动写入其中。: > /path/to/logfile.log如果您无法停止并启动生产服务,请尝试一下。

答案2

ionice -c3 rm yourfile.log是您的最佳选择,那么 rm 将属于空闲 I/O 类,并且仅在其他任何进程不需要时才使用 I/O。ext3 在删除大文件时表现不佳,您对此无能为力。是的,rm 命令会降低您的系统速度。缓慢程度和删除持续时间只能猜测,它在很大程度上取决于硬件、内核版本和 ext3 文件系统创建设置。

对于日志服务器和其他具有大文件的服务器,我倾向于使用 XFS,因为它的运行速度非常快。

答案3

替代解决方案是使用单独的磁盘并在它们之间循环。因此,当您完成对一个磁盘的记录后,您可以切换到另一个磁盘,然后您可以使用大量 IO 来删除内容,而不会给活动磁盘带来负担。

相关内容