视频分帧 报错 No space left on device
出现这个错误第一反应是空间满了。
df -h一看却发现还有挺多没有用df -i一看发现是inodes空间满了
inode 是什么
磁盘的最小单位是扇区,操作系统对磁盘最小操作单位是块,多个扇区组成的块就是文件读写最小单位。
inode 中存放的就是文件的元信息:
- inode id
- 文件类型
- 文件链接数目(多少个文件名 指向这个 inode)
- 属主id
- 属主的组id
- 文件 读、写、执行权限
- 文件大小
- 文件所使用的 块 的数目
- 文件所使用的 块 的位置
- 块 大小
- 设备编号
- 最近一次修改的时间
- 最近一次访问的时间
- inode 最近一次变动时间
既然 inode 中存放文件的数据所以 inode 也是占用空间的。
在对磁盘格式化时操作系统自动将磁盘分为两个区,一个是数据区,一个是inode区 用来存放 inode。每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB或4KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
可以使用命令 sudo dumpe2fs -h /dev/vdb1 查看磁盘详细信息,其中包括 块大小,inode 大小。
每个文件都必须有一个inode,因此有可能发生inode已经用光(磁盘存放很多小文件),但是硬盘还未存满的情况。这种情况下发生磁盘还有空间但是无法创建文件的问题。
解决方法:
重新对磁盘格式化并指定 inode 大小:
mkfs.ext4 /dev/vdb1 -N 49120000
本文解释了当遇到“Nospaceleftondevice”错误时,并非总是因为磁盘空间不足,有时是因为inode空间已满。深入探讨了inode的概念及其在文件系统中的作用,并提供了检查和解决inode空间满的方法。

被折叠的 条评论
为什么被折叠?



