【linux系】linux系统盘满了排查处理

系统满了,火速我们需要先排查下大文件

sudo du -h --max-depth=1 / 2>/dev/null | sort -hr

简单解读下这行命令,统计下根目录下/ 的一级子目录(不递归到更深层目录)的磁盘使用量,并通过管道命令可视化看懂的容量单位从高到低排序。2>/dev/null 这个是忽略所有错误信息(例如权限不足的目录访问警告)。如果我们需要排除某些目录可以使用 --exclude 指定。

sudo du -h --max-depth=1 --exclude=/mnt --exclude=/media / 2>/dev/null | sort -hr

sudo du -h --max-depth=1 /home/software  2>/dev/null | sort -hr

就这样一层一层通过文件夹排查到对应的大文件

一看应该是binlog日志没有设置过期时间

可以mysql客户端连接服务端,执行下面命令来解决

SET GLOBAL expire_logs_days = 7;

或者永久配置相关binlog日志过期处理 

whereis my.cnf

找到对应/etc/my.cnf文件编辑

[mysqld]
# 自动保留最近7天的 binlog(根据需求调整天数)
expire_logs_days = 7

重启mysql后,可以看到系统盘占用磁盘使用率已经降低很多了

systemctl restart mysqld.service

一般我们安装软件都会在对应的数据盘来安装,看下系统磁盘挂载的情况

df -lh 

醉了,软件安装是不是就没有使用数据盘,而是占用了系统盘,只看到一个盘符/dev/vda1

挂载数据盘

Linux的挂载机制。当将一个设备挂载到一个非空目录时,原目录的内容会被隐藏,直到卸载该设备后才会重新显示。因此,如果用户直接将/dev/vdb挂载到/home/software,那么在挂载期间,原目录下的内容会被隐藏,访问该目录时看到的是数据盘的内容。但一旦卸载,原内容会恢复。不过,如果用户在挂载后向该目录写入数据,数据会存储到数据盘中,而不是系统盘。

所以总结下我们在挂载数据之前如果原有目录是有安装软件数据的,不要直接挂载,需要新建空目录做对应的数据盘挂载。

查看磁盘是否分区
 lsblk -f /dev/vdb

输出示例及解读

NAME FSTYPE LABEL UUID                                 MOUNTPOINT
vdb                                               
  • 如果 FSTYPE 列为空,说明磁盘没有文件系统,需要格式化。
  • 如果显示 ext4xfs 等,说明已格式化。
查看是否有分区表
sudo fdisk -l /dev/vdb

  • 如果无分区信息(如 vdb1vdb2),说明未分区,需先分区或直接全盘格式化。

我们看到执行命令是有对应的vdb信息没有vdb1或vdb2相关的分区信息,那么是否可以跳过创建分区呢?

答案是可以的。​数据盘 /dev/vdb 并不强制要求创建分区。

磁盘容量较小(例如 50GB)。仅需要一个连续的大容量存储空间,无需划分多个分区。我们可以直接 将整个磁盘/dev/vdb 格式化为 ext4 文件系统,我这里采用了这种

如果需要做分区的话,可以执行下面的命令

# 1. 创建分区
sudo fdisk /dev/vdb  # 交互式创建分区(如 vdb1)
​输入命令​(按顺序执行):
n → 创建新分区。
选择分区类型(p 主分区 / e 扩展分区,一般选 p)。
设置分区号(默认直接回车)。
设置起始扇区(默认直接回车)。
设置结束扇区(如 +10G 分配 10GB,或直接回车使用全部空间)。
w → 保存并退出。



# 2. 格式化分区
sudo mkfs.ext4 /dev/vdb1
格式化磁盘分区
mkfs.ext4 /dev/vdb

#验证格式化结果
sudo blkid /dev/vdb        # 输出应显示文件系统类型

挂载分区
#创建数据目录
mkdir -p  /home/data

#挂载
mount /dev/vdb /home/data
永久挂载配置

查看磁盘UUID

# 获取磁盘 UUID
sudo blkid /dev/vdb
# 获取磁盘 UUID
sudo blkid /dev/vdb

# 编辑 fstab 文件(示例 UUID=abcd1234)
echo "UUID=abcd1234 /home/data ext4 defaults 0 0" | sudo tee -a /etc/fstab



####也可以一条命令替换上面两个命令
echo "UUID=$(sudo blkid -s UUID -o value /dev/vdb) /home/data ext4 defaults 0 0" | sudo tee -a /etc/fstab



# 验证配置是否正确
sudo mount -a

当然如果系统盘使用docker部署的话,需要做对应的数据迁移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值