对于系统管理员来说,了解系统的一些限制是非常有必要的,这样可以根据需要进行必要的参数配置和调整,进而实现更优的性能,对于系统设计人员甚至程序员来说,了解系统的一些限制,也会有助于设计更为合理的存储结构。
在同一个路径下,操作系统的子目录个数存在上限,此特性跟文件系统类型有关。
AIX系统,JFS/JFS2文件系统的一级子目录个数限制为32767。这个限制定义在/usr/include/sys/limits.h文件中(LINK_MAX-->SHART_MAX=32767))。如果超过这个数量,手动创建目录,会出现如下现象:
testdir: There are too many links to a file.
mkdir: 0653-358 Cannot create testdir.
Linux系统,仅Ext3文件系统存在该上限。
解决方法: 如果你的应用在某个目录下生成的一级子目录数量可能会超过这个数量,那要注意进行目录分级,即创建二级子目录
每个文件对应一个inode,如果inode耗尽,即便有空间也不能创建文件和目录。
解决办法:重新mkfs,mkfs时将inode数调的多一些(根据你fs中文件的总数而定),块尺寸调得小一些(根据每个文件的平均大小而定)
补充: ulimit -a 命令查看所有的限制,并能临时改变限制。
以下是红帽官方给出的限制:
File systems and storage limits | Version 3 | Version 4 | Version 5 | Version 6 | Version 7 |
---|---|---|---|---|---|
Ext3 - Maximum file size | 2TB | 2TB | 2TB | 2TB | 2TB |
Ext3 - Maximum file system size | 2TB | 8TB | 16TB | 16TB | 16TB |
Ext3 - Maximum subdirectories | 32000 | 32000 | 32000 | 32000 | 32000 |
Ext3 - Maximum symlink depth | 8 | 8 | 8 | 8 | 8 |
Ext4 - Maximum file size | -- | -- | 16TB | 16TB | 16TB |
Ext4 - Maximum file system size | -- | -- | 16TB [1EB] | 16TB [1EB] | 50TB [1EB] |
Ext4 - Maximum subdirectories | -- | -- | 65000/unlimited | 65000/unlimited | 65000/unlimited |
Ext4 - Maximum symlink depth | -- | -- | 8 | 8 | 8 |
GFS - Maximum file size | 2TB | 16TB [8EB] | 16TB [8EB]7 | N/A | N/A |
GFS - Maximum file system size | 2TB | 16TB [8EB] | 16TB [8EB]7 | N/A | N/A |
GFS2 - Maximum file size | -- | -- | 100TB [8EB] | 100TB [8EB] | 100TB [8EB] |
GFS2 - Maximum file system size | -- | -- | 100TB [8EB] | 100TB [8EB] | 100TB [8EB] |
XFS - Maximum file size | -- | -- | 100TB [8EB] | 100TB [8EB] | 500TB [8EB] |
XFS - Maximum file system size | -- | -- | 100TB [16EB] | 300TB [16EB]19 | 500TB [16EB] |
XFS - Maximum subdirectories | -- | -- | unlimited | unlimited | unlimited |
XFS - Maximum symlink depth | -- | -- | 8 | 8 | 8 |
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞2
添加新评论0 条评论