linux centos 系统提示No space left on device错误 centos清理硬盘空间

文章介绍了当CentOS系统提示Nospaceleftondevice错误时,如何通过清理磁盘空间、检查并减少Inodes使用,以及查找并结束占用已删除文件的进程来解决问题。清理过程包括使用df和du命令识别大文件,删除无用文件,以及利用lsof找出未释放空间的进程并杀死它们。
部署运行你感兴趣的模型镜像

一、问题描述

线上的一个centos系统,硬盘满了,通过以下方式清理后,启动程序还是会提示No space left on device错误,具体请看解决方法,这里讲下如何清理硬盘:


1、查看系统磁盘是否已满

df -h

看哪个目录use到100%,我这里是删除过了的结果。

2、查看具体哪个目录占用了大量空间

du -h --max-depth=1 | sort -nr //统计当前目录大小,并按大小排序,按数字降序排序 

 可以看到root目录下有3.9G占用

查看GB以上文件夹目录并且排序,可以使用以下命令:

du -h --max-depth=1 |grep 'G' |sort

 

3、进入root目录中继续排查哪个目录占用占用最大

cd /root
ls -lh

 重复以上步骤,将大文件全找出来,如果想看目录下哪个文件占用最多,直接使用如下命令即可:

du -a /root/ -h | sort -n -r | head -n 100

 如果想看某个目录下文件统计,可通过如下命令 

for i in /*; do echo $i; find $i | wc -l; done

(如果确定是某个目录下面,则/转换为该目录绝对路径,如/xxx/xxx,则使用for i in /xxx/xxx*; do echo $i; find $i | wc -l; done)

然后通过以下命令删除

rm -rf xxx

二、解决方法

上面操作后,通过

df -h 

查询空间确实降下来了,可是还是提示No space left on device,此时再通过 

df -i

 查看了下inodes,发现根目录下的inodes值使用率为100%了

发现/目录下显示还是100%,通过以下命令查看/目录下文件占用

du -sh /*

 大概了解了一下du和df的区别:


du: disk usage 磁盘空间,是文件夹里所有文件大小叠加在一起计算的。
df: disk free 磁盘空闲空间,是通过统计磁盘中空闲计算的。

进入到/root目录下执行

du -sh * 

 注意,如果删除后,再次运行命令 df -h ,发现目录空间还是占满了的话,要把使用这个xxx文件的所属进程干掉,空间才能恢复正常!!

通过以下命令查看已删除空间却没有释放的进程

lsof -n |grep deleted

提示找不到命令时,需要安装下

yum install lsof -y

找到进程编号,然后

kill -9  xxx

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### Linux系统中“No space left on device错误的解决方案 当Linux服务器报告“No space left on device”的错误时,这表明当前设备上的存储空间已被占满,无法继续创建新文件或上传数据。此问题可通过多种方法解决,具体取决于实际需求和环境设置。 --- #### 错误原因分析 该错误通常由以下几种情况引起: 1. 文件系统的可用磁盘空间耗尽。 2. inode数量不足,即使仍有磁盘空间也无法创建新文件。 3. 特定目录或分区的空间配额达到上限。 --- #### 解决方案 ##### 方案一:扩展现有磁盘分区 如果问题是由于物理磁盘容量不足引起的,可以考虑通过扩展磁盘分区来解决问题。例如,在CentOS环境中: 1. **查看磁盘使用情况** 使用`df -h`命令检查各分区的使用率,并识别哪个分区已满[^2]。 ```bash df -h ``` 2. **调整逻辑卷大小** 假设 `/dev/mapper/cl-root` 已满,而 `/dev/mapper/cl-home` 存在多余空间,则可将部分空间从 `cl-home` 转移到 `cl-root`。 - 缩小 `cl-home` 分区至所需最小值(如10GB): ```bash lvreduce -L 10G /dev/cl/home ``` - 将释放出来的空间分配给 `cl-root` 并更新 XFS 文件系统: ```bash lvextend -l +100%FREE /dev/cl/root xfs_growfs /dev/mapper/cl-root ``` 3. 验证更改后的磁盘状态: ```bash df -h ``` --- ##### 方案二:清理大文件和无用日志 如果磁盘空间有限且无法轻易扩展,可以通过删除不必要的大文件或旧日志来腾出空间。 1. **查找占用大量空间的文件** 列出大于1GB的文件并评估其必要性: ```bash find / -xdev -size +1G -exec ls -lh {} \; ``` 2. **清除临时文件和缓存** 删除不再需要的临时文件、缓存或其他冗余数据: ```bash rm -rf /var/tmp/* journalctl --vacuum-size=100M yum clean all ``` 3. **禁用或轮转过期日志** 修改日志保留策略以减少长期积累的影响: ```bash cat /etc/logrotate.conf vi /etc/logrotate.d/syslog ``` --- ##### 方案三:迁移Docker镜像到其他路径 针对运行容器化的应用环境,“no space left on device”也可能源自 Docker 的默认存储位置 (`/var/lib/docker`) 占用了过多空间。此时可以选择改变 Docker 数据目录的位置。 1. **查询当前 Docker 磁盘使用状况** 运行以下命令获取统计信息: ```bash docker system df ``` 2. **重置 Docker Root Directory** 创建一个新的挂载点并将 Docker 数据迁移到那里: ```bash mkdir /mnt/new-docker-storage rsync -aP /var/lib/docker/ /mnt/new-docker-storage/ systemctl stop docker mv /var/lib/docker /var/lib/docker.bak ln -s /mnt/new-docker-storage /var/lib/docker systemctl start docker ``` 3. 验证新的配置生效: ```bash docker info | grep "Docker Root Dir" ``` --- ##### 方案四:监控inode消耗 有时尽管磁盘显示还有剩余空间,但由于 inode 数量耗尽仍会报错。这种情况下需特别关注小型文件的数量增长趋势。 1. 检查 inode 使用比例: ```bash df -i ``` 2. 定位高密度的小型文件所在区域: ```bash find /path/to/directory -type f | wc -l ``` 3. 清理多余的零碎文件或将它们归档压缩保存。 --- ### 总结 以上提供了四种主要应对“No space left on device错误的方法,分别适用于不同的场景和技术背景。实施过程中应注意操作的安全性和数据的一致性保护。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值