linux报No space left on device错误

本文解释了当遇到“Nospaceleftondevice”错误时,并非总是因为磁盘空间不足,有时是因为inode空间已满。深入探讨了inode的概念及其在文件系统中的作用,并提供了检查和解决inode空间满的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视频分帧 报错 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值