Debian系统中删除正在写入的Squid日志文件后,磁盘是否仍会写入数据?
Debian系统中删除正在写入的Squid日志文件后,磁盘是否仍会写入数据?
你遇到的这个场景在Linux系统里挺常见的,我来给你掰扯清楚背后的逻辑,帮你打消顾虑:
数据确实还在写入磁盘,只是你看不到对应的文件了
Linux文件系统里,文件名其实只是文件inode的一个“快捷方式”。当你删除正在被Squid写入的日志文件时,只是删掉了这个文件名和inode的关联,但Squid进程还握着这个文件的打开句柄,inode的引用计数没降到0,所以磁盘空间不会被立刻释放。这时候Squid依然会把日志数据写到这个“隐身”的文件里,数据全在磁盘上,只是你用ls之类的命令看不到它而已。什么时候才会释放空间?
只有当Squid进程关闭这个文件句柄(比如重启服务),系统才会发现这个inode没有任何引用了,这时候才会真正回收这块磁盘空间。关于NVME硬盘的担忧
这种情况对NVME盘的损耗和普通硬盘没啥区别,就是正常的持续写入。既然是测试场景的合理请求量,只要不是极端的恶意写入,完全不用太担心寿命问题——NVME盘的设计本来就扛得住常规的写入负载。给你个更稳妥的替代方案
要是不想磁盘空间一直被占着,又不想重启Squid,别直接删文件,用truncate命令清空它就行:truncate -s 0 /path/to/your/squid/logfile这样Squid的文件句柄依然有效,日志会继续正常写入,同时还能立刻释放之前占用的磁盘空间,比删文件靠谱多了。
备注:内容来源于stack exchange,提问作者Deex
相关产品推荐
相关产品推荐

