很多人第一次登录阿里云ECS服务器,眼里只有自己的网站目录,根目录反而没人看。等根目录所在的磁盘写满,网站打不开、SSH登录卡顿、数据库写不进去,问题会一起冒出来,排查起来也很乱。这篇文章讲清楚阿里云根目录是什么、里面装着什么,以及空间告急时该怎么一步步处理。

根目录到底是什么
这里说的阿里云根目录,指云服务器(ECS)上Linux系统的根目录,也就是路径符号 /。Linux里所有文件和目录都挂在 / 底下,系统程序、配置文件、用户数据和临时文件都在其中。
新购的ECS默认只有一块系统盘,根目录和系统数据共用这块盘。如果额外挂载了数据盘,比如挂到 /data 下,那么 /data 占用的是另一块盘,不计入根目录的空间。这一点很容易搞混,后面的案例会用到。
根目录里通常有什么
- /var:日志、数据库文件、缓存都在这里,最容易悄悄变大。
- /usr:软件安装目录,编译好的程序和依赖库放在这里。
- /home:普通用户的家目录,网站代码和上传文件经常放这里。
- /tmp:临时文件。有的程序不自己清理,时间一长就堆起来。
- /root:root用户的家目录。
案例一:日志把系统盘撑满
一位朋友做电商小站,ECS系统盘是40GB,用了一年多没出过问题。某天下午后台突然报错,订单写不进数据库。他远程登录后执行 df -h,看到 / 的使用率已经是100%。
接着他用 du -sh /var/* | sort -h 一层层往下找,最后锁定 /var/log 下的一个Nginx访问日志,体积超过18GB。原因是之前配置过调试级别的日志,又没有设置轮转,日志一直在往后追加。
处理分三步走:
- 先确认Nginx仍在占用这个日志。直接删文件不会立刻释放空间,所以用 : > 日志文件名 清空内容,不要急着 rm。清空前最好先翻一下最近的内容,确认里面没有需要保留的排错信息。
- 把Nginx日志级别调回默认值,再通过 logrotate 设置每天切割、保留7天。
- 清空后使用率从100%降到61%,订单服务恢复正常。
这次的问题不在服务器配置太低。日志无限增长,没有人给它设上限,磁盘迟早会满。
案例二:误删目录导致服务异常
第二个案例出在团队协作里。运维同事想清理 /tmp 下的旧文件,命令里多敲了一个空格,实际执行的是删除 /var 下部分内容的操作。第二天一早,依赖 /var/lib 的数据库就起不来了。
这件事的教训很直接:凡是对根目录下系统目录的删除操作,先核对路径,执行前做备份。阿里云控制台支持为系统盘创建快照,操作前建一个,出问题时用快照回滚,比手工修复省事得多。
排查根目录空间的常用方法
- 看整体占用:执行 df -h,先确认是哪个分区满了。如果空间没满但写文件仍报错,再执行 df -i,看看是不是inode被小文件耗尽了。
- 找出大目录:执行 du -h –max-depth=1 / | sort -h,从根目录开始逐层往下看。建议加 sudo,否则权限不足的目录会被跳过,统计结果偏小。
- 查已删除但仍被占用的文件:执行 lsof +L1,找出还被进程持有的删除文件。进程不关闭或不重启,这部分空间就不会释放。
- 清理systemd日志:执行 journalctl –vacuum-size=200M,把日志限制在200MB以内。
- 扩容云盘后做分区和文件系统扩展:在阿里云控制台扩容系统盘之后,还要在系统内完成分区扩展和文件系统扩展。只做前一步,系统看到的空间不会变。
日常防护建议
- 给日志配置轮转,把单个文件的增长限制住。
- 网站上传文件、数据库数据放到单独挂载的数据盘上,别全部堆在根目录下。
- 在云监控里设置磁盘使用率告警,超过80%就通知负责人。
- 做重要变更前先创建快照,并把操作步骤记下来,出问题时方便回溯。
- 少用root账号长期操作,日常操作改用普通用户,减少误删系统文件的机会。
根目录空间的问题看着简单,往往是几个小习惯叠在一起的结果。每周花几分钟看一眼 df -h 和大目录的增长,就能在服务出事之前发现苗头。