最近的项目需要在网上爬取些资料,爬取内容很简单就是数量很多,一条内容一个文件,写了个贼啦简单的爬虫,当时就考虑到操作系统支持的最大文件数量是多少,简单的google+百度了一下都说没上限。于是程序开始运行,当下载到500万条的时候出现了“设备上没有空间”的错误。查看了一下硬盘还有很大的空间呢,于是想到文件数量过多的问题,这次仔细查找了一下,发现些资料。
简单的说在linux下一个文件或文件夹对应一个inode,分区的inode的数量是有限的,如果inode用完,即使分区有空间也不能创建新的文件和文件夹了
。当然也有相应的解决,为了抓紧时间我用了最简单的方式:修改程序把保存路径换到另外一个分区。因为每个分区的inode是有上限的。
下面是查看inode数量的方法,inode相关资料以及inode用完的解决方法
一、目录数限制:
在同一个路径下,一级子目录的个数限制为 31998 。如果你的应用生成的目录可能会超过这个数,那要注意进行目录分级。例如,如果目录名为数字的话,可以将数字除以10000后的整数值做为父目录名(/data/1/13892);如果是目录名为字幕的,可以用前几个字符来做为父一级目录(/data/com/linuxany)等等
解决方法:
得到一个目录下一级子目录的总数
ls -F | grep / |wc
二、 文件数目限制:
每个文件对应一个inodes ,如果iodes没有了,那就算有空间也不能再写文件了。
查看当前分区的iodes信息:
tune2fs -l /dev/hda2
Free inodes: 374919 //我出现问题的时候free inodes的值为“Free inodes: 47”
解决办法:
1. 重新mkfs,mkfs时将inode数调的多一些(根据你fs中文件的总数而定),块尺寸调得小一些(根据每个文件的平均大小而定)
2. 使用loopback文件系统临时解决
在/usr中(也可以在别处)创建一个大文件,然后做成loopback文件系统,将原来的文件移到这个文件系统中,并将它mount到/usr下合适的位置。这样可以大大减少你/usr中的文件数目。但是系统性能会有点损失。
分享到:
相关推荐
Ubuntu查看文件夹占用空间的大小,可以按不同的单位查看,如 MB,KB,GB等
java项目实现从远程Linux服务器下载文件和文件夹和验证文件SHA256.
ARM Linux Ubuntu 的虚拟键盘配置文件,不用编译,直接拷贝编译好的文件到工程目录即可使用。
ubuntu删除文件夹命令,输入“rm -rf 文件夹名字”的命令来删除文件夹,rf参数指循环删除且不提示
ubuntu共享文件设置,自己的总结,绝对详细!
在ubuntu系统下,对文件或者文件夹进行删除,重命名等操作。
Ubuntu怎么设置文件权限 Ubuntu中设置文件权限的方法 Ubuntu怎么设置文件权限 Ubuntu中设置文件权限的方法
vm+Ubuntu共享文件夹,利用VM自带的share 功能
mame linux/ubuntu 可用的neogeo.zip (放在roms文件夹中)
linux Ubuntu 中文参考手册 中文教程
VirtualBox 下Ubuntu挂载和Windows共享文件夹 1.在windows 下创建文件夹,取名随意,为了避免出差多,使用英文把。我这命名为Linux-share。 2.打开VitualBox管理器,设置中找到共享文件夹,点图中的红圈圈,将刚刚...
Linux Ubuntu配置IP的详细过程,保证你一看就懂!
把安装ubuntu->winboot文件夹下wubidr和wubidr.mbr两个文件拷到C盘根目录下,然后用记事本打开c盘下的boot.ini,在最后一行加入c:\wubildr.mbr="Ubuntu"就可以了,然后保存重启。ubuntu启动项出来了!注意要先修改...
在ubuntu linux下实现的FTP文件上传,程序自动监听目录下是否有图片文件,有文件则自动通过FTP上传到服务器端,同时删除目录下的文件,实现了批量文件上传,自动重命名文件,程序经测试,运行稳定。
linux Ubuntu常用命令 常用的指令,创建文件夹等
一套关于Linux和Ubuntu的学习教程,内含《Linux操作系统文件系统学习教程》、《linux新手管理员指南(基础教程)》、《Ubuntu 实用学习教程》等多套电子书。 本人亲自从网上搜集而得,讲解清晰,非常实用。
一个用于在ubuntu系统里将文件夹打包成fat镜像的脚本。
ubuntu执行.sh文件,1 .sh文件是Ubuntu下可执行文件,首先需要确定它的权限是否是可执行的,2、 用vim打开sh文件,3、查看文件格式:4. 修改文件格式: 5. 保存退出: 6. 执行:./filename 注意:不可以用sh ...
利用 Ubuntu 自带软件 Remmina 实现Ubuntu 和 Windows 系统之间进行文件互传(同一局域网下)