文章目录[隐藏]
背景
最近一个虚拟主机群里经常会有群成员问, inode
节点是什么,为什么有 inode
节点不足的告警。在我的印象中,很多国内的虚拟主机商在销售主机时,很少会提及 inode
限制,大多只是 cpu
、 内存
、 磁盘容量
。虽然 inode
节点的限制对于一般的博客网站来说影响不大(文件站和图片站除外),但也有很多主机商设置了 inode
告警,来提醒用户注意,由此引发了以上及以下讨论。
什么是 inode
inode
是文件元数据(index node),主要存储了文件的 大小
、 权限
、 属主属组
、 时间戳
、 数据块指针
内容。
为什么会有 inode
每个文件系统存储的数据类型可分为两大块: 元数据区
和 数据区
。
元数据区主要是存储文件的 inode
,用来索引及查找数据区内的文件(存储在不同的块中,由数据块指针引导)。
inode 为什么会有限制
由于元数据区的内容也是存储在磁盘上,并且是在磁盘分区时一次性划分的,所以需要占用固定的磁盘空间用来存储 inode
。
既然空间固定,那 inode
的数量在文件系统创建后也就是固定的。虽然在创建文件系统时可以指定 inode
个数和比例,但就像一本固定页数的书一样,如果分配的目录页数多了,内容的部分自然就少了。所以inode节点数对于虚拟主机的用户来说是固定的,是由主机商经过权衡后分配的结果(除非使用VPS挂载新硬盘自行分区,或自己搭建服务器)。
当 inode
用完时,即使数据区还有剩余空间,也不能用了,因为数据不能索引,存了也白存。所以现在很多主机商都设置了 inode
告警来提醒用户,避免用户因大意用完 inode
节点而引起的麻烦。
链接文件
既然说到了 inode
,就顺便说说链接文件,因为这偶尔也是造成 inode
节点占用过多的原因。
所谓的链接文件,就是访问同一个文件不同路径。
硬链接
指向同一个 inode
的多个文件路径。
特性:
(1) 目录不支持硬链接; (2) 硬链接不能跨文件系统; (3) 创建硬链接会增加inode引用计数;
创建:
ln src link_file
符号链接
指向一个文件路径的另一个文件路径。
特性:
(1) 符号链接与文件是两人个各自独立的文件,各有自己的 inode
;对原文件创建符号链接不会增加引用计数; (2) 支持对目录创建符号链接,可以跨文件系统; (3) 删除符号链接文件不影响原文件;但删除原文件,符号指定的路径即不存在,此时会变成无效链接;
注意:符号链接文件的大小是其指定的文件的路径字符串的字节数;
创建:
ln -s src link_file