Linux磁盘空间占满处理

1.查看磁盘空间使用情况df -h,发现根目录满了。

2.进入根目录,使用du -h --max-depth=1查看目录大小,发现总大小才几个G,还没有达到磁盘空间大小。

3.查看已删除的占用的进程
[root@master /]# lsof -n |grep deleted

4.然后kill对应的pid,即可释放空间。

[root@master /]# df -h
文件系统               容量  已用  可用 已用% 挂载点
devtmpfs                32G     0   32G    0% /dev
tmpfs                   32G   64K   32G    1% /dev/shm
tmpfs                   32G  3.2G   29G   11% /run
tmpfs                   32G     0   32G    0% /sys/fs/cgroup
/dev/mapper/klas-root  291G   24G  268G    8% /
tmpfs                   32G  3.2M   32G    1% /tmp
/dev/vdb1              500G  5.1G  495G    2% /appfs
/dev/vda2             1014M  190M  825M   19% /boot
/dev/vda1              599M  6.5M  593M    2% /boot/efi
tmpfs                   60M     0   60M    0% /var/log/rtlog
tmpfs                  6.3G     0  6.3G    0% /run/user/991
tmpfs                  6.3G     0  6.3G    0% /run/user/0
tmpfs                  6.3G     0  6.3G    0% /run/user/995
[root@master /]# lsof -n |grep deleted

5、没有lsof命令的情况下执行如下语句:

[root@master /]# find /proc/*/fd -ls 2>/dev/null | grep '(deleted)

### 如何释放 Linux 根目录空间 #### 查找大文件和不必要的日志文件 为了有效管理磁盘空间,可以先查找并清理大型文件以及不再需要的日志文件。使用 `find` 命令可以帮助定位大于特定尺寸的文件: ```bash sudo find / -type f -size +100M ``` 这将显示所有超过 100MB 的文件路径。 对于日志文件而言,在 `/var/log/` 下可能存在大量占用存储的日志记录。可以通过配置 logrotate 或手动删除旧的日志来减少其体积[^3]。 #### 清理包管理系统缓存 许多发行版会在安装软件时保留下载过的 deb/rpm 文件作为缓存。通过清空这些缓存可腾出不少空间: - 对于基于 Debian 的系统 (Ubuntu 等): ```bash sudo apt-get clean ``` - 对于 Red Hat/CentOS/Fedora : ```bash sudo yum clean all ``` 上述操作将会移除已下载但不再使用的软件包文件[^2]。 #### 移动或挂载其他分区上的数据 当根分区容量有限时,考虑将某些不常变动的数据迁移到独立的逻辑卷或其他物理硬盘上。特别是数据库系统的数据与日志应该放置在一个单独的分区里以防止意外填满根分区[^1]。 例如,假设有一个额外的空间可用作新的挂载点 `/mnt/newdisk` ,那么可以把 MySQL/MariaDB 的 datadir 放在那里: ```bash service mysqld stop rsync -av /var/lib/mysql/* /mnt/newdisk/ rm -rf /var/lib/mysql/* ln -s /mnt/newdisk /var/lib/mysql chown -R mysql:mysql /mnt/newdisk service mysqld start ``` 以上脚本会安全地迁移现有数据库到新位置,并设置软链接以便应用程序继续正常工作。 #### 处理僵尸文件(打开却已被删除) 有时即使已经尝试过常规手段也无法回收足够的空间,这时可能是由于存在所谓的“僵尸文件”。这类文件虽然已经在文件系统层面被标记为已删状态,但由于仍有进程持有它们的描述符而未能真正释放资源。要找出这样的文件及其对应的 PID 可执行如下命令组合: ```bash lsof | grep '(deleted)' kill -HUP <PID> ``` 其中 `<PID>` 是从 lsof 输出中获得的具体进程 ID 。发送 HUP 信号通常会让该进程重新加载配置并关闭那些无用连接从而允许操作系统最终回收关联的磁盘区块。 #### 定期监控和预防措施 为了避免将来再次遇到相同情况,建议定期检查磁盘利用率并通过适当调整预留比例等方式提前做好准备。比如修改 ext4 文件系统的默认参数让剩余至少 5% 给特权用户写入权限之外的一般用途: ```bash tune2fs -m 5 /dev/sdaX ``` 这里 sdaX 应替换为目标设备的实际名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值