解决磁盘空间用完

问题发现

突然之间,发现我们的业务无法正常使用。检查数据库发现数据库无法访问,进一步检查发现是因为磁盘用满了。
当我希望通过删除一部分数据以释放空间时,发现连删除操作都不能执行。

>db.regCode.drop()

2017-02-17T13:03:13.820+0800 drop failed: {
   "ok" : 0,
   "errmsg" : "Can't take a write lock while out of disk space",
   "code" : 14031
} at src/mongo/shell/collection.js:598

解决

幸好我们当初的磁盘构建时使用了LVM进行管理,因此可以在不损失数据的情况下轻松扩展数据盘。而且当初volume group空间没有完全分配出去,得以有空间来进行扩展。

顺便用下图解释一下LVM的逻辑层次:
LVM层次示意图

下面介绍一下思路:

  1. 通过扩展lvm逻辑磁盘提升可用空间恢复:

    
    #对数据磁盘增加20G可用空间。这20G空间是以前没有分配的预留空间
    
    sudo lvresize -L +20G /dev/vg1/mongoData

    此时如果使用df命令查看时,会发现磁盘大小并没有改变。还需要执行后面步骤

  2. 扩展 ext2, ext3 or ext4 文件系统的空间

    
    #卸载磁盘
    
    umount /dev/vg0/foo
    fsck -f /dev/vg0/foo
    resize2fs /dev/vg0/foo
    
    #恢复挂载磁盘
    
    mount /dev/vg1/mongoData /var/lib/mongodb

    现在可以使用df再查看一下空间,会看到已如预期的增加了空间。

注意

在卸载磁盘前需要先关闭磁盘上的所有文件,以及停止此数据磁盘相关的服务(我的服务器为mongoDB)。并在磁盘挂载后重启服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值