磁盘配额和 Inode 限制超出

您的网站宕机、电子邮件停止工作或您无法上传文件。共享虚拟主机上最常见的原因之一是磁盘配额已满或 Inode 限制。如果您知道正确的步骤,这是可以修复的。本文解释了磁盘配额和 Inode 之间的区别、如何识别原因,以及如何有效地清理您的 DirectAdmin 虚拟主机账户。

磁盘配额 vs Inode — 有什么区别?

磁盘配额 — 总数据大小

磁盘配额是指您在虚拟主机账户上可以存储的总数据大小的限制,以 MB 或 GB 为单位。当您超过此限制时,系统将拒绝写入任何新文件。写入缓存文件或日志的 PHP 应用程序将立即开始生成错误。

Inode — 文件数量

Inode 是 Linux 上的一个数据结构,存储关于文件或目录的元数据。每个文件和文件夹恰好使用一个 inode,即使是零字节文件也是如此。如果您在填满磁盘空间配额之前达到 inode 限制,服务器将无法创建任何新文件。

常见示例:W3 Total Cache 或 WP Super Cache 等 WordPress 缓存插件将缓存文件存储在 wp-content/cache/ 中。访问量大的网站可能会积累数十万个微小缓存文件,即使磁盘空间看起来充足,也会耗尽 inode 限制。

什么是 Inode 及其为什么在空间剩余时填满

最常见的问题是"我仍然有几 GB 的可用空间,所以为什么我的网站无法写入文件?"答案在于 Linux 文件系统的工作原理。Linux 使用称为 inode(索引节点)的结构来存储每个文件的元数据:其所有者、权限、最后修改时间和实际数据在磁盘上的位置。每个文件和每个文件夹总是使用恰好一个 inode,无论该文件是 0 字节还是 500 MB。

这意味着您的虚拟主机配额有两个完全独立的维度。第一个是"磁盘空间",以数据的总大小衡量。第二个是"inode 数量",以文件和文件夹的总数量衡量。拥有几个大型视频文件的网站可能会消耗大量空间,但 inode 很少。相反,拥有数十万个微小文件的网站可能会在只使用几百 MB 实际空间的情况下耗尽 inode 配额。当 inode 先耗尽时,服务器会立即拒绝创建新文件,即使磁盘空间条还远未满。

什么产生大量的小文件

推动 inode 数量最快增长的来源通常是网站所有者从未看到的自动后台进程:

如何检查 DirectAdmin 中的使用情况

DirectAdmin 中有两个主要检查位置:

1. 账户摘要仪表板

DirectAdmin 主屏幕显示磁盘空间和 Inode 的使用条形图,以及消耗的百分比。如果任一项超过 90%,请立即采取行动。

2. 磁盘使用工具

  1. 转到 系统信息和文件 → 磁盘使用情况
  2. 选择要分析的目录
  3. 该工具列出按大小从最大到最小排序的文件夹

通过命令行查找最大的文件

如果您有 Shell 访问权限,这些命令可以精确定位最大的空间消耗者:

查找最大的目录

du -sh /home/username/* | sort -rh | head -20

查找最大的个人文件

find /home/username -type f -size +50M -exec ls -lh {} \; | sort -k5 -rh | head -20

计算目录中的文件(检查 inode)

find /home/username/public_html -type f | wc -l

查找消耗最多空间和 Inode 的内容

在删除任何内容之前,您需要知道罪魁祸首在哪里。猜测通常会删除错误的东西或遗漏真正的原因。系统的方法是从最大的文件夹逐级下钻,分别查看两个维度 — 大小和文件计数 — 因为消耗您空间的东西通常不是消耗您 inode 的东西。

使用 du 按大小深入分析

从账户根目录开始,每次进入最大的文件夹,直到找到真正占用空间的来源:

du -sh /home/username/public_html/* | sort -rh | head -15

当某个文件夹看起来异常大(例如 wp-content)时,对其内部运行同样的命令,以找出哪个子文件夹是来源。

按文件夹统计 Inode 数量

如果磁盘空间仍然充足但 inode 接近满,则统计每个子文件夹的文件数量,找出创建文件最多的那个:

目标 命令
统计每个子文件夹中的文件数量 for d in */; do echo "$(find "$d" -type f | wc -l) $d"; done | sort -rn
统计账户中所有文件数量 find /home/username -type f | wc -l
查看系统剩余 inode 数量 df -i /home

专项检查缓存、日志和邮件

这三个来源始终是首要嫌疑。逐一检查:

find . -type d -name cache -exec sh -c 'echo "$(find "$1" -type f | wc -l) $1"' _ {} \;
ls -lh public_html/error_log
du -sh ~/imap/* 2>/dev/null | sort -rh | head

第一行找出任意深度下所有名为 cache 的文件夹及其文件数,第二行显示 error_log 的大小(可能增长到数 GB),最后一行显示哪个邮箱占用空间最多。如果您没有 Shell 访问权限,所有这些也可以通过 DirectAdmin 中的磁盘使用情况和文件管理器进行检查——只需按显示的大小顺序打开文件夹即可。

通常占用最多空间的文件

通过 DirectAdmin 文件管理器删除 WordPress 缓存

  1. 打开 DirectAdmin → 文件管理器
  2. 导航到 public_html/wp-content/cache/
  3. 选择 cache/ 内的所有文件和子文件夹(保留缓存文件夹本身)
  4. 点击删除

如何减少空间和 Inode 使用量

一旦知道问题所在,下一步是减少实际负载,而不是只删除一次后又让其重新填满。将工作分为三个主要领域:缓存、邮件和图像。

1. 清理并控制缓存

缓存是临时的;删除是安全的,当访客到来时会自动重建。您应该做的事情:

2. 管理邮件以回收 Inode

每封邮件都是一个文件和一个 inode。从未清理的邮箱是最大的隐性 inode 消耗者:

3. 优化图像和媒体

图像通常同时消耗空间和 inode(来自多个缩略图尺寸):

提示:删除大量文件后,刷新 DirectAdmin 中的账户摘要页面。使用量数值可能更新缓慢,大约需要 1–4 小时,因为系统是分批重新计算配额,而非实时计算。如果数字没有立即下降,请不要惊慌。

防止将来 Inode 耗尽

防止问题复发及何时升级计划

清理文件只是治标。没有预防系统,问题会在几周内再次出现。预防的关键是让"日常维护"自动进行,并定期关注使用趋势。

设置自动清理

关注使用趋势

至少每月一次检查 DirectAdmin 账户摘要页面上的磁盘空间和 Inode 条,并记录数值以便随时间比较。如果即使清理后每月数字仍在持续上升,则说明您的网站确实在增长——而不只是在积累垃圾。这就是在触及上限之前提前规划更多空间的信号。

何时升级优于清理

当以下任何情况适用时,考虑升级您的计划:

信号 含义
清理后 2–3 周内仍超过 80% 实际使用量超出计划,而不只是垃圾
尽管有 Cron 清理任务,inode 仍频繁填满 文件数量超出 inode 配额
必须删除真实内容才能腾出空间 没有垃圾可删——您需要更多空间
网站因产品/用户/图像而快速增长 在触及限制之前提前扩展

升级 AsiaGB 虚拟主机计划是即时的——无需迁移,数据不会丢失。您同时获得更多 SSD 空间和更高的 inode 配额,因此不再需要花时间持续清理文件。

常见问题

磁盘空间充足,但为什么无法写入文件?

这几乎总是因为 inode 在磁盘空间之前耗尽。大量小文件(如缓存、会话或电子邮件)会耗尽 inode 配额。检查 DirectAdmin 账户摘要页面上的 Inode 条形图。如果接近 100%,删除不必要的小文件,服务器将立即能够再次写入新文件。

我可以删除整个缓存文件夹吗?安全吗?

您可以安全地删除缓存文件夹内的文件,但保持缓存文件夹本身。当访问者到达时,系统会自动重建缓存文件。删除缓存不会删除您的网站内容或数据库;这些只是用于改进速度的临时文件。

电子邮件占用太多空间和 inode。我应该怎么办?

清空 Webmail 中的垃圾箱和垃圾文件夹,将垃圾箱设置为每 30 天自动删除,并使用 IMAP 而不是 POP3,以便邮件不会在多个设备上堆积。如果您有数千条垃圾邮件,全选并一次性删除,以回收 inode。

什么时候应该升级我的虚拟主机计划?

如果清理后几周内磁盘或 inode 使用情况仍然超过 80%,或者您的网站由于更多产品、图像或用户而真正增长,是时候升级了。升级 AsiaGB 虚拟主机计划是即时的,不需要迁移,数据不会丢失。

需要更多 SSD 存储空间?

AsiaGB 虚拟主机提供多个 SSD 计划,存储空间非常充足。从每年仅 500 元泰铢开始,包含 DirectAdmin 和 99% 正常运行时间。

查看虚拟主机计划

查看泰国虚拟主机全部套餐 →