虚拟云服务器的根目录不是一个“文件夹”那么简单:Linux 下它就是 ,Windows 下是系统盘符,而大家口中的“网站根目录”只是它下面的一层业务目录。把系统根目录和网站根目录混为一谈,是绝大多数“磁盘满了”“文件找不到”“权限报错”问题的源头。 下面按“认清楚查明白清干净扩到位”的顺序拆开讲。
先认清楚:根目录到底指哪个“根”
系统根目录与网站根目录是两回事
系统根目录是整个文件系统的起点,所有分区、目录、设备挂载点都挂在它下面,网站根目录则是 Web 服务对外提供页面时读取文件的起始位置,属于业务层目录,两者的关系像“地基”和“地基上的一间房”:
- 系统根目录:Linux 为 ,Windows 为
C:,承载操作系统、运行库、日志、临时文件。 - 网站根目录:Nginx 默认
/usr/share/nginx/html,Apache 默认/var/www/html,宝塔面板通常/www/wwwroot,Windows IIS 默认C:inetpubwwwroot。 - 根分区一般只有几十 GB,主要放系统和运行环境;业务数据按理应放在独立数据盘上。
现实中最常见的翻车场景:把几十 GB 的图片、备份包、日志全塞进 /www/wwwroot,而它恰好位于系统盘根分区,结果根分区写满,SSH 登不上、数据库起不来、面板打不开。
常见环境根目录路径对照
| 环境类型 | 系统根目录 | 站点根目录常见位置 |
|---|---|---|
| Linux 通用 | 由 Nginx/Apache 配置决定 | |
| 宝塔面板 | /www/wwwroot/站点名 |
|
| 宝塔老版本 | /home/wwwroot/站点名 |
|
| Nginx 默认 | /usr/share/nginx/html |
|
| Apache 默认 | /var/www/html |
|
| Windows IIS | C: |
C:inetpubwwwroot |
| 集成环境 | C: |
C:phpstudy_proWWW 一类路径 |
看清这张表,再遇到“网站文件放哪儿”的问题,就不会凭记忆瞎猜了。
虚拟云服务器的根目录在哪里查看
三个命令加一条路径,基本覆盖所有情况:
- 看根分区容量和占用:
df -h / - 看根目录下谁最占地方:
du -sh / 2>/dev/null | sort -rh | head -10 - 看某个服务的实际站点路径:
grep -r "root " /etc/nginx/conf.d/或nginx -T | grep root - 宝塔用户直接进面板“网站站点根目录”,路径写得明明白白。
Windows 服务器则打开“此电脑”,C: 就是根目录,站点路径在 IIS 管理器的“基本设置”里能看到物理路径。
虚拟主机根目录和云服务器根目录有什么区别
很多人在虚拟主机上待惯了,换到云服务器会懵,因为两边的“根目录”权限和管理方式完全不同。
权限边界不同
虚拟主机的根目录是服务商切好的一块空间,你只能通过 FTP 或面板读写,改不了系统配置,也看不到 /etc、/var 这些目录,云服务器的根目录是完整的操作系统视图,你拿到 root 权限,可以装软件、改内核参数、挂新磁盘。自由度越高,误操作代价越大rm -rf / 在虚拟主机上根本执行不了,在云服务器上却能直接毁掉整台机器。
扩容与维护方式不同
虚拟主机空间不够,找服务商升级套餐就行;云服务器根分区不够,得自己在控制台扩容云盘,再进系统扩分区和文件系统,前者是买服务,后者是做运维。
业内专家指出,中小企业上云后最常见的运维事故中,磁盘空间管理不当长期排在前列,而根源往往是没有区分系统盘和数据盘。
云服务器根目录满了怎么清理
这是搜索量最高的一类问题,也是实操性最强的部分,别上来就删,先定位。
第一步:确认是空间满还是 inode 满
df -h 显示 Use% 到 100%,是空间满;df -i 显示 IUse% 到 100%,是 inode 满,两者清理思路不同,后者往往是大量小文件堆积,比如缓存目录、邮件队列、session 文件。
第二步:揪出占用大户
du -h --max-depth=1 / | sort -rh | head -15 du -h --max-depth=1 /var | sort -rh | head -15
想看得更直观就装 ncdu,交互式浏览,按大小排序,删起来也方便。
du 统计的总量远小于 df 显示的已用空间,多半是有进程删了文件但句柄没释放,用 lsof | grep deleted 查一下,重启对应服务即可释放。
第三步:按类型清理,别一刀切
日志类是最常见的元凶:
journalctl --vacuum-size=200M find /var/log -type f -name ".log" -size +100M
业务日志建议先配置 logrotate 轮转,再清理,否则过几天又满。
容器类:docker system df 看清楚镜像、容器、卷各占多少,再 docker system prune -a 清理无用镜像,注意别把正在用的卷删了。
备份与临时文件:/tmp、/var/tmp、宝塔的 /www/backup 都是重灾区,旧备份保留最近几份即可,没必要留一年。
面板缓存:宝塔的 /www/server/panel/logs 和网站访问日志目录,长期不清理能吃掉几个 GB。
第四步:清理红线
- 不要删
/usr、/lib、/etc下的系统文件。 - 不要直接
rm -rf /var/log/,正在写入的日志文件删了不释放空间,还会让服务报错。 - 生产环境先做快照再动手,这是成本最低的保险。
空间不够用:扩容、挂载与迁移
云服务器根目录扩容多少钱
这取决于云盘类型和地域,以主流云厂商为例,系统盘在线扩容按量计费,通常在每 GB 每月几毛到一元出头的区间,ESSD 比普通云盘贵,包年包月比按量付费划算,一次把 40G 扩到 100G,月成本增加几十元,比因磁盘写满导致业务中断的损失小得多,具体价格随地域、可用区、促销活动浮动,下单前在控制台估算器里点一下最准。
扩容后系统里还要走两步:
growpart /dev/vda 1 resize2fs /dev/vda1 # ext4 xfs_growfs / # xfs
顺序不能反,先扩分区再扩文件系统。
把大目录迁到数据盘
更稳妥的做法是给业务单独挂一块数据盘,把站点目录、数据库目录迁过去,系统盘只留系统,操作路径大致是:控制台挂载新云盘 → fdisk
分区 → mkfs 格式化 → 写入 /etc/fstab 实现开机自动挂载 → rsync 迁移数据 → 改 Nginx 或数据库配置指向新路径,挂载写 fstab 时建议加 nofail 参数,避免云盘异常导致系统起不来。
地域差异:香港云服务器根目录路径
香港及海外节点的云服务器,Linux 根目录路径与内地完全一致,都是 ,差异不体现在路径上,而体现在计费货币、备案要求和网络链路上,同一款配置,海外节点常以美元计价,且不受内地备案约束,适合面向境外用户的业务;但访问内地速度取决于线路,选之前测一下延迟,做迁移时注意时区设置,海外机器默认 UTC,日志时间会对不上,用 timedatectl set-timezone Asia/Shanghai 统一。
行业共识认为,根目录规划应在业务上线前完成,而不是等磁盘报警了再补救。
Q&A:虚拟云服务器的根目录高频疑问
Q1:网站根目录能直接设成系统根目录 吗?
技术上可以配置,但强烈不建议,把 暴露为 Web 根目录,意味着配置文件、密钥、系统日志都可能被访问,是严重的安全隐患,站点根目录应始终指向一个独立的、权限受限的子目录。
Q2:根分区显示已用 100%,但 du 统计加起来没那么多,为什么?
典型原因是文件被删除但进程仍持有句柄,空间未真正释放,执行 lsof | grep deleted 找到对应进程,重启该服务;若涉及大量日志,也可用 > 文件名 的方式清空而非删除,另外检查是否有未被 du 覆盖的挂载点被隐藏。
Q3:Linux 和 Windows 云服务器的根目录管理思路一样吗?
思路相通,工具不同,Linux 靠 df、du、lsof 组合排查,Windows 靠资源监视器、磁盘清理和“文件夹大小”类工具,Windows 系统盘尤其容易被更新缓存和 IIS 日志占满,需要定期清理 C:WindowsLogs 和 C:inetpublogs,并把站点目录迁到数据盘符。
根目录管理说到底就三件事:分清楚它是系统根还是站点根,搞清楚空间被谁吃了,提前把业务数据挪出系统盘,做好这三点,磁盘报警基本与你无缘。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/770075.html




