我需要删除生产 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 来删除内容,而不会给活动磁盘带来负担。