为了性能测试需要相同的图片,最简单同时也是最节省空间的方法就是采用软链接的方式。写了个简单的脚本来创建图片的软链接:
id=1000000000
for((;id< 1010000000; id++))
do
getUrl $id
mkdir -p $url
ln -s 1.jpg "$url/$id.summ.jpg"
done
把这个脚本放到服务器上执行,过了一段时间去看打印出来的日志,一直在报错,统计了一下生成的软链接数目,也只有60多万。脚本报的错误是:No space left on device
使用df命令查看了下空间结果显示:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda3 5036316 216108 4564376 5% /
/dev/xvda1 101086 11236 84631 12% /boot
none 2097216 0 2097216 0% /dev/shm
/dev/xvda8 48917076 40962920 5469304 89% /home
/dev/xvda5 3020140 37348 2829376 2% /tmp
/dev/xvda2 10080520 6175608 3392844 65% /usr
/dev/xvda6 3020140 133712 2733012 5% /var
/分区还有很多空间,怎么会出现空间不足的错误呢?
再次使用df命令查看,这次改变参数:使用df -i查看:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda3 640000 640000 0 100% /
/dev/xvda1 26104 40 26064 1% /boot
none 184353 1 184352 1% /dev/shm
/dev/xvda8 6213760 1559069 4654691 26% /home
/dev/xvda5 384000 28 383972 1% /tmp
/dev/xvda2 1281696 167764 1113932 14% /usr
/dev/xvda6 384000 3074 380926 1% /var
可以看到,/分区的inode已经被全部耗尽。
先介绍下什么是inode。inode是文件系统分配用来记录文件位置和属性的结构,在一些文件系统中(如ext2, ext3等),它的数量在格式化的时候,就已经确定。如果文件系统是一本书,那么,inode就是这本书的目录。像ext3这样的文件系统,在格式化的时候,这本书的最大目录数已经确定。在你写书(保存文件到磁盘)的过程中,可能生的情况有:纸用完了(磁盘空间不足),这种情况下,当然无法保存新的文件了;另外一种情况,就是目录写完了(inode节点全部分配完了),这种情况下,虽然还有纸(磁盘空间),但由于目录(inode)已经没有了,没有了目录,文件就会无法找到,操作系统当然不会让你新建文件了。
现在发生的情况就是因为inode全部被用完了,虽然还有磁盘还有空间,但是文件系统已经无法再记录这些空余空间了,因此也就不能再创建文件(文件夹)了。
因为ext3文件系统的inode是在格式化文件系统的时候就已经确定的,要修改文件系统的inode数就只能格式化文件系统,这在服务器上显然是不可能的。临时的解决方法如下:
1、创建一个大的块文件:
dd if=/dev/zero of=disk.img count=1024 bs=1024KB
通过dd命令,将zero问价写入自定义的disk.img文件1024次,每次写入1024Kb,也就是创建一个1GB的文件,用zero文件进行填充。
2、格式化这个块文件:
mkfs.ext2 -N 5000000 -b 1024 -I 128 disk.img
格式化成ext2分区(因为ext3有日志系统,会消耗空间),制定inode大小为128byte(这个是linux内核限制的最小inode大小),制定inode数量为5000000,制定块大小为1024byte。
3、挂载该块文件
mount -o loop disk.img /mnt/xxx
因为这个文件不是真正的块文件,所以需要增加-o loop参数。
这样,这个就可以在这个块文件上创建大量的软链接了,这个1G的文件上有500w的inode,对于软链接这种基本不占空间,但是狂占inode的,非常适合。当然,更好的方法,是更换文件系统使用像ext4这样的新文件系统,这些文件系统中inode是动态分配的。
分享到:
相关推荐
什么是交换空间?什么是root帐户什么是LILO?什么是BASH?什么是CLI?什么是GUI?开源的优势是什么?GNU项目的重要性是什么?磁盘、目录、文件简单 Linux 文件系统?Linux 的目录结构是怎样的?什么是 inode ?什么...
inode 是 UNIX 操作系统中的一种数据结构,其本质是结构体,它包含了与文件系统中各个文件相关的一些重要信息。在 UNIX 中创建文件系统时,同时将会创建...通常,文件系统磁盘空间中大约百分之一空间分配给了 inode 表
远程服务器上写入文件或者日志写满时,提示no space left on device(磁盘空间不足) 问题原因: block 满了 inode用光了 解决思路: 针对block满了的问题,通常的解决方法是删除较大文件以释放磁盘空间,但是删除...
INODE PC 版本 .5.2
os课设 用c语言读写文件模拟磁盘读写 实现linux下基于inode的文件系统
iNode Client
inode client
inode for inode for inode for inode for inode for mac
iNode终极版 inode H3C h3c客户端 iNode E0105破解版.向下兼容。向上待定。 iNode终极版 inode H3C h3c客户端 iNode E0105破解版.向下兼容。向上待定
2019年7月最新iNode智能客户端MacOS版iNodeClient for MacOS_7.3(E0538)支持Portal认证方式,支持Mac OS 10.9至10.14。内附安装指导手册,iNodeClient_MacOS_7.3 (E0538)Portal.zip
win7不能装校园网?inode_win7_安装教程。让你win7和校园网兼容.doc
Inode多网卡限制破解,用笔记本建立无线网,手机畅快上网
iNode智能客户端MacOS版 iNodeClient for MacOS 7.3(E0538)支持802.1x认证方式,内附安装指导手册
iNode7.3安装手册iNode7.3安装手册iNode7.3安装手册iNode7.3安装手册iNode7.3安装手册
inode智能客户端~支持windows7
该软件是linux下的inode拨号客户端,本人在Gentoo linux上已经成功配置安装,在其他主流发行版肯定没问题。
校园网inode使用过程中的配置以及连不上网的解决办法。
iNodeClient For Mac V7.0 - 0517, 最高支持OSX 10.13
苹果本儿上用的iNode客户端,解压后是.tar.gz