CentOS执行git add -A提示磁盘空间不足,但剩余空间充足求助
解决CentOS下
git add -A提示"No space left on device"但磁盘有剩余空间的问题 这个问题我碰到过好多次,根本不是你项目所在磁盘的空间不够——大概率是Git临时文件用的分区(默认是/tmp)空间耗尽,或者inode被占满了。下面是一步步排查和解决的方法:
1. 检查/tmp分区的空间与inode使用情况
Git执行add操作时会在临时目录创建大量缓存文件,如果/tmp是单独挂载的小分区(很多CentOS系统默认会给/tmp分配几个GB的空间),很容易被占满。
- 查看
/tmp的剩余空间:df -h /tmp - 查看
/tmp的inode使用情况(有时候空间够但inode用完,也会报同样错误):df -i /tmp
2. 清理或扩容/tmp分区
如果发现/tmp满了:
- 优先清理Git相关的临时文件(安全且直接):
sudo rm -rf /tmp/git-* - 清理
/tmp中超过24小时的旧文件(不会误删正在使用的文件):sudo tmpwatch 24 /tmp - 如果
/tmp分区本身太小,考虑扩容:- 若用LVM管理,直接扩展逻辑卷即可;
- 也可以修改
/etc/fstab,将/tmp挂载到项目所在的大分区(比如/mnt/bigdisk/tmp),记得先创建目录再重新挂载。
3. 全局检查inode使用情况
如果/tmp没问题,那可能是整个系统的inode被耗尽了(比如项目里有几十万甚至上百万个小文件):
df -i
找到inode使用率100%的分区,清理该分区内的无用小文件(比如缓存、日志、临时文件)。如果是项目目录的inode满了,看看有没有可以批量删除的冗余文件(比如node_modules、vendor这类可以重新生成的目录)。
4. 指定Git使用其他临时目录
如果不想动/tmp,可以让Git直接用你有大量空间的目录作为临时目录:
- 临时生效(当前终端会话):
export GIT_TMP_DIR="/path/to/your/large/disk/tmp" mkdir -p $GIT_TMP_DIR git add -A - 永久生效(加到你的shell配置文件):
echo 'export GIT_TMP_DIR="/path/to/your/large/disk/tmp"' >> ~/.bashrc source ~/.bashrc
5. 检查是否有大文件导致临时文件膨胀
虽然你的项目只有500MB,但如果其中包含几个单个几十MB甚至上百MB的大文件,Git在处理时会生成体积不小的临时文件。这种情况可以用Git LFS来管理大文件,避免临时文件占满空间:
# 安装Git LFS sudo yum install git-lfs # 初始化并跟踪大文件 git lfs install git lfs track "*.zip" "*.iso" # 替换成你的大文件后缀 git add .gitattributes git add -A
内容的提问来源于stack exchange,提问作者Glen Elkins
相关产品推荐
相关产品推荐

