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如何实现API版本控制_Laravel版本化API设计方案  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  轻松掌握MySQL函数中的last_insert_id()  如何将凡科建站内容保存为本地文件?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  如何用PHP快速搭建CMS系统?  Laravel如何使用Telescope进行调试?(安装和使用教程)  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Java遍历集合的三种方式  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  JavaScript如何操作视频_媒体API怎么控制播放  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Android使用GridView实现日历的简单功能  Laravel怎么清理缓存_Laravel optimize clear命令详解  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  用v-html解决Vue.js渲染中html标签不被解析的问题  JavaScript数据类型有哪些_如何准确判断一个变量的类型  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  教你用AI润色文章,让你的文字表达更专业  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Android中AutoCompleteTextView自动提示  js代码实现下拉菜单【推荐】  Laravel定时任务怎么设置_Laravel Crontab调度器配置  微信小程序 闭包写法详细介绍  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel如何使用.env文件管理环境变量?(最佳实践)  网站页面设计需要考虑到这些问题  如何在云指建站中生成FTP站点?  jquery插件bootstrapValidator表单验证详解  做企业网站制作流程,企业网站制作基本流程有哪些?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  JS弹性运动实现方法分析  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  敲碗10年!Mac系列传将迎来「触控与联网」双革新  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  EditPlus中的正则表达式 实战(1)