磁盘碎片整理方案

xfs文件系统用延迟写入等技术可以减少碎片的出现,但是随着时间推移,文件操作比较频繁,还是会出现碎片的。当磁盘碎片到达一定的限度,会导致机器运行缓慢且无法对目标目录进行读写操作。
磁盘碎片整理的步骤如下:
一、检查出需要磁盘碎片清理的机器
ssh连接各compute节点,通过命令xfs_db -r -c “frag -f” /dev/sda4 ,可以查看磁盘碎片。

如上图,如果发现磁盘碎片extents区段大于300(正常情况下extents区段趋近于1),那么运行在该compute节点上的虚拟机需要进行磁盘碎片整理了。
二、与管理员沟通
询问管理员该问题虚拟机此时是否能关机进行磁盘碎片整理。为了确保数据尽可能不丢失,请管理员先将该虚拟机上运行的服务关闭,然后关闭该虚拟机。注意记录该虚拟机的id和运行所在compute节点的ip(可以在命令行使用nova list命令查看,或者登陆dashboard直接查看)。
注:一般来说,es虚拟机产生的磁盘碎片忽略不计,整理compute节点磁盘碎片时,为了节约时间只对hadoop节点进行磁盘碎片整理即可。
三、开始整理磁盘碎片
ssh连接到刚记录的compute节点上,查询待整理的虚拟机是否运行在此compute节点上。
ll -h /var/lib/nova/instances/<id> (id是之前记录的虚拟机id)

确认虚拟机关闭后,我们先对disk 文件进行磁盘碎片整理。输入命令进入后台整理。
nohup time xfs_fsr -v /var/lib/nova/instances/<id>/disk &
磁盘碎片整理时间与磁盘大小成正比,disk文件一般500G需要整理10分钟,disk.eph0文件一般6T需要整理2小时。
查询进程,检查整理是否完成。
ps -ef | grep xfs_fsr
待disk文件整理完(即没有xfs_fsr进程),再整理disk.eph0文件。
nohup time xfs_fsr -v /var/lib/nova/instances/<id>/disk.eph0 &
整理完成之后,检查一下此刻的磁盘碎片
xfs_db -r -c “frag -f” /dev/sda4
发现磁盘碎片显著下降,便可开启之前关闭的虚拟机,通知管理员磁盘碎片整理完成。
如果磁盘碎片下降的不是很明显,需要对该compute节点上的其他虚拟机就 进行磁盘碎片整理,整理步骤如上。

磁盘碎片过多引发的其他问题 – 内存死锁问题
当某compute节点的磁盘碎片非常多时,我们发现compute节点上运行的虚拟机非常卡,基本的读写操作都无法进行。当我们查看compute节点的messages日志时,发现内存死锁的error信息。
vim /var/log/messages

kernel: XFS: worker(28076) possible memory allocation deadlock size 2133872 in kmem_alloc (mode:0x250)
        XFS: worker(34675) possible memory allocation deadlock size 2191488 in kmem_alloc (mode:0x250)

我们需要先释放一下内存
echo 1 > /proc/sys/vm/drop_caches
待compute节点不再报内存死锁的error,再进行磁盘碎片的检查和整理。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值