No space left on device
2010-10-09 18:19
495 查看
生产环境影像系统在生成缩略图时报这个错误: java.lang.IllegalStateException: java.lang.IllegalStateException: /pic/claimDbpic/dubang/2010/8/0501/705012010380005001149/990199/Thumb705012010380005001149990199_4.JPG (No space left on device)
[jboss@ca-be00-ser05 log]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 125G 9.7G 109G 9% /
tmpfs 12G 0 12G 0% /dev/shm
/dev/mapper/pic 1001G 992G 8.8G 100% /pic
/dev/mapper/app 101G 20G 81G 20% /app
/dev/mapper/mpath5 15T 104G 15T 1% /picNL
/picNL 虽然/pic剩余空间不多,但还有8G左右。一张缩略图不过几k而已。
由于客户比较急,来不急考虑太多。
临时解决方案如下。
1.把pic下的部分图片拷贝到/picNL,确认文件数量和大小都一样后。
2.修改数据库中图片存储路径。
3.确认迁移到picNL下的图片都能正常访问后。删除pic目录下拷贝走到图片。
问题得到解决。
pic还有8G左右的空闲空间,理论上不应该出现No space left on device。
去 google一把,发现有很多类似的案例。发现两篇比较有价值的,记录一下。
一篇是eygle的: http://www.eygle.com/archives/2007/07/inode_no_space_lefton_device.html
另一篇是:http://www.zeali.net/entry/480
看到这个错误,第一个反应是磁盘空间满了;但 df 一看,每个分区的空间都还富余的很。从 munin 的监控图表上看 Filesystem usage 也很平稳,但下面的 Inode usage 就有问题了,其中一个分区的 usage 已经到了100%。赶紧跑到服务器上 df -i 检查,果然是 Inode 耗尽。原来这个分区是用来扔各种日志和临时文件的,其中有某个程序产生的临时文件又小又多,又没有进行定时回滚,造成在磁盘空间耗尽之前文件系统的 Inode 就被用光了。
Linux/Unix like OS 的文件系统中每个目录树中的节点并不是像 Windows 那样直接包含文件的具体信息,而只包含了文件名和 Inode number 。通过 Inode number 所找到对应于文件名的 Inode 节点中才真正记录了文件的大小/物理地址/所有者/访问权限/时间戳/被硬链接的次数等实际的 metadata 。因此你可以在 Linux 系统中通过硬链接( hard link ) 的方式给某个文件创建无数个位于不同目录下的文件名,而实际的文件数据只需要一份拷贝。
但也正因为这种文件系统的结构,当你在 Linux 中进行 IO 操作的时候,需要的资源除了磁盘空间以外,还要有剩余的 Inode 才行。缺省情况下, Linux 在系统安装过程中按照1个 Inode 对应 2k 磁盘空间来计算每个分区的最大 Inode 数。一旦文件系统创建之后,每个分区可用 Inode 数就无法进行动态调整。
正常来说,一般不太会出现某个分区的 Inode 耗尽而磁盘空间尚余的情况,除非像我碰到的这样垃圾小文件疯长而又没进行有效的清理。但如果确实需要的话,可以在创建文件系统(比如用 mke2fs )的时候根据实际需要来调整这个参数(比如分区如果用于存放超大视频文件的话 Inode 的数量可以少一些;如果打算存放的文件是大量小于 2k 的迷你文件的话就要考虑多创建一些 Inode)。
附:Inode Definition by The Linux Information Project
其它人碰到的 No space left on device 原因:
超出系统中同时运行的最大 message queue 个数限制 : 在 root 下用 sysctl kernel.msgmni 检查该参数, sysctl -w kernel.msgmni=XXX 重新设定即可。
cvs 异常断开的连接在 /tmp 目录下留下大量的临时文件导致 /tmp 目录满
[jboss@ca-be00-ser05 log]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 125G 9.7G 109G 9% /
tmpfs 12G 0 12G 0% /dev/shm
/dev/mapper/pic 1001G 992G 8.8G 100% /pic
/dev/mapper/app 101G 20G 81G 20% /app
/dev/mapper/mpath5 15T 104G 15T 1% /picNL
/picNL 虽然/pic剩余空间不多,但还有8G左右。一张缩略图不过几k而已。
由于客户比较急,来不急考虑太多。
临时解决方案如下。
1.把pic下的部分图片拷贝到/picNL,确认文件数量和大小都一样后。
2.修改数据库中图片存储路径。
3.确认迁移到picNL下的图片都能正常访问后。删除pic目录下拷贝走到图片。
问题得到解决。
pic还有8G左右的空闲空间,理论上不应该出现No space left on device。
去 google一把,发现有很多类似的案例。发现两篇比较有价值的,记录一下。
一篇是eygle的: http://www.eygle.com/archives/2007/07/inode_no_space_lefton_device.html
另一篇是:http://www.zeali.net/entry/480
看到这个错误,第一个反应是磁盘空间满了;但 df 一看,每个分区的空间都还富余的很。从 munin 的监控图表上看 Filesystem usage 也很平稳,但下面的 Inode usage 就有问题了,其中一个分区的 usage 已经到了100%。赶紧跑到服务器上 df -i 检查,果然是 Inode 耗尽。原来这个分区是用来扔各种日志和临时文件的,其中有某个程序产生的临时文件又小又多,又没有进行定时回滚,造成在磁盘空间耗尽之前文件系统的 Inode 就被用光了。
Linux/Unix like OS 的文件系统中每个目录树中的节点并不是像 Windows 那样直接包含文件的具体信息,而只包含了文件名和 Inode number 。通过 Inode number 所找到对应于文件名的 Inode 节点中才真正记录了文件的大小/物理地址/所有者/访问权限/时间戳/被硬链接的次数等实际的 metadata 。因此你可以在 Linux 系统中通过硬链接( hard link ) 的方式给某个文件创建无数个位于不同目录下的文件名,而实际的文件数据只需要一份拷贝。
但也正因为这种文件系统的结构,当你在 Linux 中进行 IO 操作的时候,需要的资源除了磁盘空间以外,还要有剩余的 Inode 才行。缺省情况下, Linux 在系统安装过程中按照1个 Inode 对应 2k 磁盘空间来计算每个分区的最大 Inode 数。一旦文件系统创建之后,每个分区可用 Inode 数就无法进行动态调整。
正常来说,一般不太会出现某个分区的 Inode 耗尽而磁盘空间尚余的情况,除非像我碰到的这样垃圾小文件疯长而又没进行有效的清理。但如果确实需要的话,可以在创建文件系统(比如用 mke2fs )的时候根据实际需要来调整这个参数(比如分区如果用于存放超大视频文件的话 Inode 的数量可以少一些;如果打算存放的文件是大量小于 2k 的迷你文件的话就要考虑多创建一些 Inode)。
附:Inode Definition by The Linux Information Project
其它人碰到的 No space left on device 原因:
超出系统中同时运行的最大 message queue 个数限制 : 在 root 下用 sysctl kernel.msgmni 检查该参数, sysctl -w kernel.msgmni=XXX 重新设定即可。
cvs 异常断开的连接在 /tmp 目录下留下大量的临时文件导致 /tmp 目录满
相关文章推荐
- tail 提示 No space left on device
- Apache起不来,报No space left on device: Couldn't create accept lock
- mysql无法启动,报错 Can't start server: can't create PID file: No space left on device
- “no space left on device”(磁盘空间不足)问题(续)
- 解决:IOError: [Errno 28] No space left on device(设备空间不足)
- No space left on device解决办法
- Upon startup of Linux database get ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device
- No space left on device的分析及解决
- Perl ERROR "Failure to create message queue, No space left on device "
- ORA-27102:out of memory Linux-X86_64 Error: 28: No space left on device
- 【问题跟踪】KryoException: java.io.IOException: No space left on device
- Inode占满导致No space left on device解决
- No space left on device /tmp 原因和解决方法
- No space left on device错误,df -h看磁盘并没有满(含inode原理)
- jboss 报错 java.io.IOException: No space left on device
- cron/tmp.XXXXAqnFoW: No space left on device
- Apache ERROR: No space left on device: AH00023: Couldn't create the ssl-cache mutex
- Linux内核更新,解决"gzip: stdout: No space left on device"问题
- ubuntu16.04 boot空间不足 no space left on device
- Upon startup of Linux database get ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device