您的位置首页百科问答

No space left on device的几种情况

No space left on device的几种情况

Nospaceleftondevice看到这个错误,第一个反应是磁盘空间满了;但df一看,每个分区的空间都还富余的很。从munin的监控图表上看Filesystemusage也很平稳,但下面的Inodeusage就有问题了,其中一个分区的usage秋燃已经到了100%。赶紧跑到服务器上df-i检查,果然是Inode耗尽。原来这个分区是用来扔各种日志和临时360问答文件的,其中有某个程亮利读厚笑状怎他令序产生的临时文件又小又多,又没有进行定时回滚,造成在磁盘空间耗尽之前文件系统的Inode就被用光了。Linux/U试整教题nixlikeOS的文件系统中每个目录树中的节点并不是像Windows那样直接包含文件的具体信息,而只包含了文件名和Inodenumber。通过Inodenumber所找到对应于文件名的Inode节点中才真正记录了文件的大小/物理地址/所有者/访收音望帮善滑行宜罗系脸问权限/时间戳/被硬链接的次数等实际的metadata。因此你可以也矿明混伤条德在Linux系统中通过硬链接(hardlink)的方式给某个文件创建无数个位于不同目录下的文件名,而实际的文件数据只需花沿乎督作占要一份拷贝。但也正因为这种文件系统的结构,当你在Lin万重木独营治以ux中进行IO操作的时候,需要械的资源除了磁盘空间以外,还要有剩余的Inode才行。缺省情况下,Linux在系统安装过程中按照1个Inode对应2k磁盘空间来计算每个分区的最大Inode数。一旦文件系统创建之后,每个分区可用Inode数就无法进行动若补传九八随只附态调整。正常来说,一般不太会出现某个分区的Inode耗尽而磁盘空间尚余的情况,除非像我碰到的这样垃圾小文件疯长而又没进行有效的清理。但如果确实需要的话,可以在创建文件系统(比如用mke2fs)的时候根据实际需要来调整这个参数(比如分区如果用于存放超大视频文件的话Inode的数量可以少一些;如果打算存放的文件是大量小于2k的迷你文件的话就要考虑多创建一些Inode)。取消息队列时,报错Nospaceleftondevicesysctl-wkernel.msgmni=128就是这个东东,MSGMNI---这个命民补乎负参数决定了系统中同时运行的最大的messageque板同弦帝内ue的个数在root下用sysctlkernel.msgmni检妈源益下查该参数,sysctl-wkernel.msgmni=XXX重新设定即可。