作者:吴国柱
文档编写目的
CDSW使用一段时间以后,Master节点的/var/lib/cdsw目录挂载的是单块磁盘没有做raid等数据备份而且已经运行时间长达两年,因此为规避磁盘低概率损坏造成数据丢失风险,现准备将该目录的数据进行迁移至做了raid且空间更大的磁盘中。
由于现有/var/lib/cdsw存储的数据量已经高达3T之巨,为了不影响业务需要在规定时间内(5小时)将数据进行迁移,需要选择一种快速的迁移手段进行迁移,本文将对linux现有的数据迁移同步工具rsync进程模拟测试。
- 变更步骤
1.使用rsync将根分区下的/var/lib/cdsw目录下的数据在CDSW服务正常使用情况下;同步至/dev/mapper/vg_data0-lv_data0 分区的/data0目录下
2.将CDSW服务停掉检查根分区下的/var/lib/cdsw目录是否还有进程在操作,如果没有则使用相同的命令再同步一次,这一次会同步更新差异文件。
3.将/dev/mapper/vg_data0-lv_data0挂载到/var/lib/cdsw目录下,启动服务。
- 变更环境
1.RedHat7.2
2.跨盘迁移
测试前集群检查
服务正在运行
从上图可知,/var/lib/cdsw有进程在操作。
有session在打开,有作业在运行。
目录挂载情况
服务不停止限速迁移
3.1 服务不停止数据迁移
这个过程由于有服务在使用(有作业在运行)因此为了不影响业务对该迁移进行限速最高速度不超过50M/s,测试步骤及结果如下:
代码语言:javascript复制time rsync -ac --partial --bwlimit 800000 --delete /var/lib/cdsw/ /var/lib/cdsw1
经过限速,对磁盘的读取速度都没有超过限速阈值。
代码语言:javascript复制#!/bin/bash
#nohup time rsync -ac --partial --bwlimit 800000 --delete /var/lib/cdsw/ /var/lib/cdsw1 2>&1 &
#nohup date 2>&1 &
代码语言:javascript复制参数解析:--partial:短点续传-a : --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD-c: 打开校验开关,强制对文件传输进行校验--bwlimit 800000:限速80M/s--delete: 删除那些DST中SRC没有的文件。
3.2 修改文件测试
在服务停止前对cdsw文件进行修改,待停止服务进行数据搬迁到新设备作为检查依据。
服务停止不限速迁移
4.1 停止作业及服务
1.停止作业;停掉集群上所有作业。
2.停掉cdsw服务;停止CDSW集群
服务已经停止
4.2 数据迁移
1.检查/var/lib/cdsw目录是否还有进程在操作。
代码语言:javascript复制lsof D /var/lib/cdsw
该目录下已经没有进程在操作。
2.数据目录搬迁,此次搬迁为更新上一次有服务在使用且发生变化的文件;因为没有服务在使用,此次不用限速,操作如下:
代码语言:javascript复制time rsync -ac --partial --delete /var/lib/cdsw/ /var/lib/cdsw1
代码语言:javascript复制参数解析:-a: --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD-c: 打开校验开关,强制对文件传输进行校验--delete: 删除那些DST中SRC没有的文件。--partial: 短点续传
3.将挂载点/var/lib/cdsw和/var/lib/cdsw1进行umount
代码语言:javascript复制umount /var/lib/cdsw
umount /var/lib/cdsw1
4.将/var/lib/cdsw挂载到/dev/sdb
代码语言:javascript复制mount /dev/sdb /var/lib/cdsw
mount /dev/sdc /var/lib/cdsw1
4.3 启动CDSW服务
回到CM启动CDSW服务
服务正常
可以登录cdsw
验证数据
4.4 执行任务测试
执行spark Pi进行测试
程序运行完成,测试成功。