rsync "no space left" 的目标磁盘 df -i 与 inode 耗尽

发布时间 - 2026-01-29 00:00:00    点击率:
这是典型的 inode 耗尽问题,rsync 写入大量小文件时即使磁盘块充足,若目标分区 inode 用尽(df -i 显示 IUse% ≥95%)也会报“No space left on device”。

rsync 报 “No space left on device” 但 df -h 显示空间充足

这是典型的 inode 耗尽问题。rsync 在写入新文件(尤其是大量小文件)时,即使磁盘块还有富余,只要目标分区的 inode 用完了,就会触发该错误。此时 df -h 看起来一切正常,但 df -i 会显示 Use% 接近或等于 100%。

确认是否为 inode 耗尽:用 df -i 检查目标挂载点

运行 df -i /path/to/dest(把 /path/to/dest 替成你的 rsync 目标目录所在挂载点),重点关注三列:

  • Inodes:总 inode 数
  • IUsed:已用 inode 数
  • IUse%:使用百分比 —— 若 ≥95%,基本可判定是瓶颈

注意:不同文件系统默认 inode 数量策略不同。例如 ext4 默认按每 16KB 分配一个 inode;若存大量极小文件(如日志、缓存、Git 对象),很容易提前耗尽。

临时缓解:清理无用小文件,而非扩大 inode

inode 数量在格式化时固定(ext* 系统无法在线扩容),所以不能“加 inode”,只能释放。常见操作包括:

  • 查找并删除零字节文件:find /mnt/dest -xdev -type f -size 0 -delete
  • 清理重复或过期的缓存目录(如 node_modules.cache__pycache__
  • 检查是否有被误删但仍被进程占用的文件(lsof +L1 可发现)
  • 避免 rsync 带 --delete 后又中断 —— 中断可能导致部分旧文件残留,而新文件又不断生成

长期预防:创建文件系统时预留足够 inode,或改用更适合小文件的方案

下次格式化目标磁盘时,可显式指定 inode 密度。例如 ext4 下:

mkfs.ext4 -i 8192 /dev/sdX1

其中 -i 8192 表示「每 8192 字节分配一个 inode」(默认通常是 16

384),数值越小,inode 越多。但注意:过多 inode 会浪费磁盘元数据空间,且影响 lsfind 性能。

更务实的做法是:对纯小文件场景(如对象存储代理层),考虑 XFS(默认 inode 动态分配)或 Btrfs;或者用归档压缩(tar + gzip)替代直接同步大量碎片文件。

真正麻烦的不是报错本身,而是 rsync 不会告诉你到底是块空间还是 inode 满了 —— 必须手动 df -i 才能定位。这点容易被跳过,尤其当运维习惯只看 df -h 的时候。


# git  # node  # 字节  # delete  # 对象  # 这是  # 会报  # 文件系统  # 就会  # 尤其是  # 很容易  # 越多  # 满了  # 又不  # 你到底 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  如何在IIS7中新建站点?详细步骤解析  如何快速搭建安全的FTP站点?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel如何为API生成Swagger或OpenAPI文档  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  如何自定义建站之星模板颜色并下载新样式?  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  如何挑选高效建站主机与优质域名?  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Laravel怎么判断请求类型_Laravel Request isMethod用法  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  EditPlus中的正则表达式 实战(2)  在Oracle关闭情况下如何修改spfile的参数  EditPlus中的正则表达式 实战(4)  Firefox Developer Edition开发者版本入口  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  高防服务器租用指南:配置选择与快速部署攻略  如何基于云服务器快速搭建个人网站?  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何自定义分页视图?(Pagination示例)  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  如何在云指建站中生成FTP站点?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何在阿里云虚拟主机上快速搭建个人网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Thinkphp 中 distinct 的用法解析  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  如何在不使用负向后查找的情况下匹配特定条件前的换行符  ,怎么在广州志愿者网站注册?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  浅述节点的创建及常见功能的实现  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  Laravel如何使用Vite进行前端资源打包?(配置示例)