Centos磁盘扩容
问题:我在项目使用docker中的RocketMQ进行发消息的时候,发送失败
报错:
2025-03-08 17:56:14.326 [NettyClientPublicExecutor_12] INFO com.xjl.notification.application.mq.sender.UserMessageMQSender - UserMessageMQSender::消息发送失败!!notification:usermessage
2025-03-08 17:56:14.326 [NettyClientPublicExecutor_12] INFO com.xjl.notification.application.mq.sender.UserMessageMQSender - CODE: 14 DESC: service not available now, maybe disk full, CL: 0.95 CQ: 0.95 INDEX: 0.95, maybe your broker machine memory too small.
AI给我的解析是
从你给出的日志信息可知,RocketMQ 消息发送失败,错误信息显示 service not available now, maybe disk full, CL: 0.96 CQ: 0.96 INDEX: 0.96, maybe your broker machine memory too small。下面为你详细分析可能的原因以及对应的解决办法:
可能的原因及解决办法:
1. 磁盘空间不足
2. 内存不足
3. 网络问题
首先我进入虚拟机,使用df -h
命令查看磁盘使用情况:
可以看到,根文件系统(<font style="color:rgba(0, 0, 0, 0.85);">/dev/mapper/cs - root</font>
)以及 Docker 使用的 <font style="color:rgba(0, 0, 0, 0.85);">overlay</font>
文件系统的磁盘使用率都达到了 96%,可用空间仅剩下 890M,这很可能就是导致 RocketMQ 出现 <font style="color:rgba(0, 0, 0, 0.85);">service not available now, maybe disk full</font>
错误。
[root@localhost store]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.6G 0 2.6G 0% /dev/shm
tmpfs 1.1G 10M 1.1G 1% /run
/dev/mapper/cs-root 18G 18G 890M 96% /
/dev/sda1 960M 231M 730M 24% /boot
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/0ec8dc8e607f827e1c3a50ba19d13efe284db322cc1fe4aa4d1a6fb7c8206a8d/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/d5cb984930ab4d7426130bf79e953dd8d421b59f3f65525b20ef98795f38f036/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/6d7cb957a4a92474c23851b5557d029dc12b22e0d6370e96af0e3e0b43b813fd/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/663d360e206481a7e8ab3a142247171eb3dc349615e6389beb0fb9cfba5f47d8/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/5218997f279eb534e21d45707ae576404dadc7bba60c628a771933990fa04e1e/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/5ab9a5cc6eccd42e8c25a585d5ae3ed9cd549dd95b0b62d367ee1913dbf492af/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/10bed355a23236f18267d9da130c9c1d49cbab5d3dad8fe9bb838a819cdf45d4/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/6523c1ae228dbb4db09f23d0915cf0a4c4898df88065e2cba1fee166fcfc790a/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/8da67afda2488e8c0c1ee593f2a07a034cd03b2f9c808d10c482a29fc9dad377/merged
overlay 18G 18G 890M 96% /var/lib/docker/overlay2/30a54b38963f404a6eb845e01ae89f23d4bcd05d26a2a84f650a1bcbb8ea4d7c/merged
tmpfs 529M 4.0K 529M 1% /run/user/0
然后我先停止了docker中不运行的 ES,和kibana两个容器,并删除。
再次查看磁盘使用情况,使用率下降了2%。没有多大效果,然后我进入系统,删除了不需要的日志rm -rf *.log
rm -rf *.gz
,并且使用VMware对磁盘进行碎片化整理,然后重新进入系统查看磁盘使用情况,依旧没有效果。
最终我的解决方案就是扩容:
- 首先在VMware中编辑虚拟机磁盘大小,新增20G的容量。
- 进入系统
- 扫描新磁盘空间
首先,要让系统识别到新增的磁盘空间。使用 partprobe
命令通知内核重新读取分区表:
partprobe
- 对新增磁盘空间进行分区
使用 fdisk
对新增的磁盘空间进行分区。在这个例子中,我们要在 /dev/sda
上创建一个新分区:
fdisk /dev/sda
在 fdisk
交互界面中,按照以下步骤操作:
- 输入
n
创建一个新分区。 - 选择分区类型(通常选择主分区
p
)。 - 分区号可以选择默认值(按回车键)。
- 起始扇区选择默认值(按回车键)。
- 结束扇区根据需要设置,这里我们将剩余的 20GB 空间都分配给这个新分区,直接按回车键选择默认值。
- 输入
t
改变分区类型,选择分区号(新创建的分区号),然后输入8e
将分区类型设置为Linux LVM
。 - 输入
w
保存分区表并退出fdisk
。
- 创建物理卷
使用 pvcreate
命令将新分区创建为物理卷:
pvcreate /dev/sda3 # 假设新分区为 /dev/sda3
- 将物理卷添加到卷组
使用 vgextend
命令将新的物理卷添加到现有的卷组 cs
中:
vgextend cs /dev/sda3
- 扩展逻辑卷
使用 lvextend
命令扩展逻辑卷 /dev/mapper/cs-root
的大小,这里我们将其扩展 20GB:
lvextend -L +20G /dev/mapper/cs-root
- 调整文件系统大小
根据文件系统类型,使用相应的命令调整文件系统大小以使用新分配的空间。如果文件系统是 ext4
,可以使用 resize2fs
命令:
resize2fs /dev/mapper/cs-root
如果是 XFS
文件系统,则使用 xfs_growfs
命令:
xfs_growfs /dev/mapper/cs-root
- 验证操作结果
使用 df -h
命令查看磁盘空间使用情况,确认根文件系统 /
的大小已经增加:
df -h
结束。