谁吃掉了伺服器的硬盘空间
虽然说 Jira 和 Confluence 都很占磁区空间,但是 16GB 的云端硬盘竟然瞬间濒临爆棚破表!这到底是什么鬼!
百分比 91 的硬盘使用率
今天从监看面板中,阿柴发现自己租用的一部 EC2 Ubuntu 系统的主机,其磁区的使用空间竟然来到了令人髪指的九成。这不可思议的使用率实在是让阿柴心头满满的问号。毕竟没有印象曾经用过该伺服器来处理过大型的档案。所以只好花了点时间,查查看到底是哪些档案把储存空间给消耗掉。
检查占走磁区空间的档案
当然不可能一个一个目录人工手动来找,所以可以透过命令列工具指令。从大处磁区调查着眼。无论是云端或是本地实体硬盘,其实都是由数个磁区构成的。而每个磁区有着大大小小不同功能和用途的目录及档案。因此要找出占走磁区空间的档案,阿柴习惯上会使用到的指令和过程大致如下:
# 1. 首先观察硬盘空间的使用状况,先让自己对于个别磁区容量的占比有个概念。
df -h
# 2. 接着找出磁区中,最耗空间的几个档案。然后将纪录存放至伺服器的暂存目录中。
du -ax / | sort -rn > /var/tmp/du-root-$(date --iso).log
# 3. 透过文字编辑程式来查阅纪录。并且观察了解,看看占用磁区的大档案分别位在哪些地方。
less /var/tmp/du-root-$(date --iso).log
# 4. 如果有锁定特定的目录,可以将档案以空间大小降幂的方式来排序显示。例如指令中 /usr/src 的部分,是可以指定的目录位置。
du -h -d1 /usr/src/ | sort -hr
结果发现大部分都跟 apt-get 的使用有关
实际分析判断的结果,其中光是 /usr/src
就占掉了 2G 多。所以根据路径和路径下的档案来判断,可以知道问题是出在 apt 套件在升级与安装过程中产生的档案所致。其对应的空间清理方式可以分为自动与手动两个方面。
# 一般来说,使用 apt 内建的清理功能即可。autoclean 是清除快取。
sudo apt autoclean
# autoremove 则会连不需要的套件也自动移除掉。
sudo apt autoremove
# 如果还有一些档案存于其中,像是 linux-aws-headers-x.xx.x-xxxx 这一类的,可以透过 purge 参数来手动删除。
sudo apt purge linux-aws-headers-4.15.0-1051
用 rm 不是更快
是的,表面来看似乎 rm -r /usr/src
一行指令就够了。但是因为是 apt 套件,所以会有什么样的后果难以预料。阿柴建议还是保守一点,多一分谨慎有时候可以省下不少的烦恼。