站点跑上一段時間後,訪問日誌、错誤日誌、缓存文件和临时文件會慢慢堆积。磁盘寫满时,轻則後台打不開、图片上传失敗,重則資料库無法寫入,整站返回 500。這類故障很少毫無征兆,通常提前几天甚至几周就有信号。
磁盘寫满前的几個信号
- 後台操作變慢,儲存文章偶尔失敗;
- 日誌里開始出現 No space left on device、disk quota exceeded 之類的關鍵詞;
- 图片或附件上传到一半报错;
- 資料库连接正常,但寫入失敗;
- 面板或监控图表里的磁盘占用曲线持續上扬,没有回落。
這些提示出現时,說明余量已经不多,最好当天處理,別拖到周末。
先看哪里最占空間
登入服務器後,按体积從大到小逐层排查,比盲目删文件安全得多。常用思路是先用 du -sh 看各目錄總量,再進到最大的目錄繼續往下看。
- 網站根目錄下的日誌文件夹,尤其是按天生成的 access.log、error.log;
- 缓存目錄與临时目錄,比如框架生成的 cache、tmp;
- 备份文件,本地留一份、异地留一份就够,不要堆几十份;
- 上传目錄,检查是否有異常大的文件或重复文件;
- 資料库文件與慢查询日誌;
- 系統日誌,如 /var/log 下的 messages、syslog、auth.log。
日誌保留多久合适
日誌既是排查故障的依據,也是分析蜘蛛抓取行為的資料源。直接清空虽然立刻腾出空間,但之後想回看某天的抓取情况就没有依據了。比較稳妥的做法是设一個保留窗口:
- 訪問日誌保留 30 到 90 天,覆盖一次完整的内容更新周期;
- 错誤日誌可以留得更久,因為报错往往隔一段時間才复現;
- 超出窗口的日誌先压缩归档,压缩後仍占空間就轉移到別的机器或對象存储;
- 归档文件也要定期清理,別让“归档”變成另一個垃圾桶。
不少服務器面板自带日誌轮轉功能,配置好按天切分和保留份數即可,不必手工删。
把自動清理配置起来
手工清理只能救急,長期還是要靠自動任務。可以寫一個简單的脚本,用 find 按修改時間刪除過期日誌,或者用系統自带的日誌轮轉工具配置保留份數。配置完成後建议先手動执行一次,確認刪除范围符合预期,再放進計划任務。
刪除操作前先確認路径,尤其是带通配符的命令。寫成 rm -rf /var/log/* 和寫错一個字符的後果可能完全不同,能先备份就先备份。
顺手加一個容量告警
與其等訪客反馈打不開,不如让监控提前告诉你。大部分可用性监控都支持磁盘占用阈值告警,设在 80% 到 90% 之間比較合适,既留出處理時間,也不至于频繁誤报。
還可以把日誌分析、备份核對、空間检查放進同一個维護节奏:每月固定一天看磁盘占用、確認日誌轮轉正常、驗證备份是否可恢复。這些動作本身不复杂,难的是持續做下去。
蜘蛛池、URL 發現這類工作能開展的前提,是站点本身稳定可訪問、日誌能被正常记錄。服務器先活着,後面的抓取與收錄分析才有意义。