您有一个VZFS文件系统,这意味着您的VPS是Parallels Virtuozzo虚拟机。在Virtuozzo中,托管服务提供商可以设置许多参数的限制,包括使用VZFS获得的分配。
原因:节点不足(最常见)
与数百名Virtuozzo VPS客户合作多年后,尽管似乎有足够的可用空间,但他们仍然无法创建文件,但他们中的绝大多数已经达到了他们的inode限制。运行以下命令以查看Inodes
索引节点分配(),已使用索引节点(IUsed
),剩余索引节点(IFree
)以及已使用索引节点的百分比(IUse%
):
df -i
具有100%的inode使用率经常发生。我的常见原因是:
- 垃圾邮件反弹
- 出站垃圾邮件排队
- 存储了大量入站电子邮件
- 一些用户将其PHP会话垃圾回收(
session.gc_maxlifetime
)设置为一百多年
- 一般缓存文件太多的方式
- 在WordPress插件W3 Total Cache中启用了对象缓存
- Magento错误日志(为每个错误生成一个新文件)
- 其他配置不当或设计不当的程序/脚本,导致生成一堆文件而忘记删除它们
故障排除
如果您发现索引节点不足或不足,但不知道它们中的大多数,我有这个Bash一线式搜索当前目录并以1的文件夹深度对索引节点进行计数:
for i in $(find $(pwd) -maxdepth 1 -type d | sort); do echo -e "$(find "$i" | wc -l)\t: $(readlink -f "$i")"; done | sort -nr
您可以一直更改当前的工作目录,/
直到找到导致用尽inode分配的罪魁祸首为止。
说明
您的VPS在VZFS文件系统上,该文件系统是Parallels Virtuozzo的一部分(不是OpenVZ,后者相似并且基于相同的技术,但是OpenVZ不会使用VZFS)。
由于Virtuozzo在VZFS中存储文件的方式,因此inode的限制通常比ext4或XFS等其他文件系统上的限制更大。主机跟踪所有这些文件,并且对于主机提供商而言,最好不要让单个VPS占用数亿个inode。结果,托管提供商可以将inode限制设置为较低,例如1,000,000 inode。
与数以百计的在Virtuozzo上用尽了inode分配的客户一起工作了多年之后,这些“神秘的”磁盘配额问题就不再让我感到惊讶。
原因:其他Virtuozzo限制
与我合作的Virtuozzo VPS客户中,只有很小一部分遇到文件系统问题,因为他们遇到了其他限制。您可以使用以下命令查看部分(但不是全部)限制:
cat /proc/user_beancounters
故障排除
如果failcnt
列的值大于0或held
列的值等于相应的limit
值,则说明已达到极限。
您可以在此处查看OpenVZ Wiki上每个参数的含义。参数可以是“主要”,“次要”或“辅助”。
如果您发现无法减少held
达到VPS限制的数量,则应该与主机提供商联系以获得更多帮助。
根据达到最大极限的豆类,此答案可以扩展很多,因为达到不同的限制会导致不同的症状。
原因:命中后限制降低
关于/proc/user_beancounters
或df -i
有时,Virtuozzo系统管理员可能会将limit
参数的减小到该held
值以下。
例如,如果diskinodes
参数的原始限制为1,500,000,而您达到该限制,则托管服务提供商中的某人将您的inode限制设置为1,000,000,您将看到一个奇怪的inode报告,df -i
这毫无意义。
在您的一端,您可能会看到一个不合理的数字,例如18,446,744,069,620,218,961。
我认为这是托管服务提供商的一种邪恶行为,尤其是如果他们没有通知您的话,因为您看到的不寻常的价值与没有使用Virtuozzo / OpenVZ经验的超级用户的知识背道而驰,这会导致误导建议(示例,另一个示例)。
故障排除
联系您的主机提供商。向他们展示您发现了什么,并与他们合作使您持有的咖啡豆低于限制。
如果他们拒绝帮助您,请放弃您的托管服务提供商,然后找到另一家不使用Virtuozzo / OpenVZ虚拟化技术的提供商。与Virtuozzo / OpenVZ相比,KVM虚拟化,VMware虚拟化,Xen虚拟化或裸机服务器受到的限制要少得多。
说明
您的主机提供商可能正在审核警报或对警报进行响应,发现您的VPS占用了过多的特定资源(几乎始终是inode限制,这是diskinodes
其末端的参数)。
托管服务提供商的经验不足的Virtuozzo管理员认为,他们可以通过将限制降低到低于实际资源使用率的水平来解决此问题。对于inode,即使您当前的实际使用量可能较高,例如1,500,000,您的分配也可能较低,例如1,000,000。
Virtuozzo管理员在其控制面板中会看到您的实际使用情况和新限制,但是由于Virtuozzo虚拟化的方式,您会看到虚假的数字可能会非常高。
疏忽的Virtuozzo管理员不会通知您此更改,因此,如果发生这种情况,您应该联系您的托管服务提供商。