Julius
作者Julius·2019-10-21 17:23
咨询专家·杉岩数据

NAS的对象化改造方案——NAS异构和数据迁移实践

字数 4810阅读 10021评论 2赞 7

软件定义存储依靠高可靠性、强兼容性、以及高扩展性的特点已经成为众多客户选择的存储方案。近年来软件定义存储的市场快速增长,权威机构预计未来五年将以18.9% 的年复增长率增长,而其中主要的增长推动是在对象存储的细分市场,预测年复增长率达到28.8% ,未来五年将实现翻倍,对象存储已经在银行、证券、保险、医疗、能源等行业被客户接受。

杉岩数据在众多的对象存储方案交流中,不同客户都会提出一个相同的问题:引入对象存储替换NAS存储后,业务系统中现有NAS的数据如何处理?对象存储作为IT基础设施生态中的后起之秀,对文件存储的对象化改造是一个基本命题。

需求分析

不同业务对现有NAS数据在性能以及操作类型的需求不尽相同,我们通过实际的项目经验归纳了两个典型场景:

场景一:历史数据保留在NAS中,业务切换到对象存储

业务的主要诉求是能够使用对象协议接口访问历史数据,应用的操作大部分为读取查询,期望能够利旧原有的NAS存储,在不迁移数据的前提下引入对象存储并对应用层更新。这种场景下数据有明显的时效性,经过一定时间后会变为使用频率低的冷数据,或者归档数据,原有的NAS主存储在当前对象架构改造中可以作为归档存储使用。

场景二:NAS数据迁移到对象存储,迁移过程对业务影响要最小化

业务对历史数据的依赖性很高,且原有的NAS存储硬件老旧或者文件数量大等原因导致不满足当前应用需求而需要淘汰,因此需要将历史数据完整地迁移到新的对象存储系统中。

场景一的实现手段是在对象存储系统中纳管原有NAS,业务通过新建的对象存储能够继续访问原有的NAS数据。场景二需要将NAS数据迁移到对象存储,并可以在业务无感的情况下完成。下文将详细说明杉岩数据实现以上功能的原理以及两种场景的实操步骤。

技术原理

针对上述客户需求,杉岩数据开发的NAS异构功能实现了原有NAS设备的纳管,满足客户利旧以及通过对象协议访问历史数据的需求,通过MOS数据生命周期管理的自动分层特性实现了NAS数据的自动迁移,并且可以避免长时间数据迁移对业务的影响。

1. NAS异构功能

NAS异构为Sandstone MOS对象存储高级特性,使应用可以通过S3接口统一访问被纳管的NAS数据。这项功能的核心在于将NAS文件的元数据信息抽取转换为MOS支持的对象元数据信息,让NAS数据按照目录为单位与MOS的桶建立关联关系,从而能够以对象的方式识别到原有的文件,我们把这个过程称为数据纳管;然后在MOS内部建立起读取NAS数据的链路让上层的对象接口能够无感地获取到对应文件。

其中基本的元数据信息如创建时间、文件大小都是直接记录到对象存储的元数据中。文件系统用于维护目录与文件层级结构表达文件路径的父子关系信息则被扁平化处理,直接将每个文件的全路径信息以对象名进行保存(对象名支持 ’/’ 、 ’\’ 等路径特殊字符),抛弃文件系统数据中目录的概念。在完成基本元数据的适配后就能够通过对象的方式查找到原有文件的记录,再通过MOS与NAS建立的通路读取数据。

2. 生命周期数据迁移功能

杉岩数据的MOS产品具备的桶级别的生命周期管理特性,本身支持桶一级数据的数据分层迁移功能,所以面对完成异构之后的NAS数据只需要依据需求的时间点来配置生命周期管理触发后台任务自动将NAS池中的数据迁移到设定的对象池。生命周期管理的数据迁移策略也可以设置后台任务执行的时间、带宽等QoS策略。迁移数据写入对象存储时会计算写入数据的MD5 值并存入新对象的Etag中,这个MD5值用于确保数据迁移前后的一致性。

在数据迁移时可以设置是否保留原有NAS的数据,客户可以根据需求决定是否删除源数据。

场景一的处理步骤

合理的使用NAS异构功能即可以满足场景一的需求,实际操作通过两次执行数据纳管来减少业务的离线时间。整个过程可以以三个时间节点来区分,如下图示意。

1. 应用程序改造

对象存储方案落地过程中应用层的软件需要将文件访问接口从原有的NAS方式改为对象存储的方式。目前AWS S3协议已经成为对象存储访问的实际标准,S3协议接口已经非常成熟完善,杉岩数据的MOS产品支持标准的S3协议,同时提供多种语言的SDK,所以应用软件的对象化改造十分简单便利。NAS异构的关键技术是NAS文件的元数据到对象元数据的转换,需要将原有NAS文件的全路径转换为对象名处理,这也是考虑应用软件改造尽可能简便地适配原有文件路径。

比如,原有业务逻辑中存在对特定文件的依赖,而业务系统的数据库记录为NAS文件访问的路径在对象化之后不再有效,这种情况就需要适配访问路径。

原有应用通过NAS访问数据的两种方式,以挂载目录为nas-volume-1中的应用使用文件 dir-1/123456.txt 为例,在NFS协议中应用直接通过本地全路径 /nas-volume-1/dir-1/123456.txt 通过文件接口访问文件,在SMB协议下应用通过\nas_ip\nas-volume-1\dir-1\123456.txt的路径访问文件。

实现异构后应用使用S3接口访问数据,原来的文件路径转换为桶以及对象名的方式访问,其中SMB路径中的\将被替换为/ , 挂载路径中的nas-volume-1 将被截断,以dir-1/123456.txt 作为对象名。应用软件获取数据的方式依旧按照原有逻辑定位文件路径(下述伪代码的file_path变量),经过简单的路径修正后即可改为对象接口访问该文件数据。

整体逻辑的伪代码如下:

Main(){
    S3Client client = new S3Client(accesskey, secretkey, endpoint);
    String file_path = DB.queryFilePath(“123456.txt”);
    // 假设查到的file_path 为 /home/nas-volume-1/dir-1/123456.txt
    // 将原有NAS路径用空路径替换,从而获取文件路径,替换后路径为dir-1/123456.txt
    String s3_path = file_path.replace(“/home/nas-volume-1/”, “”);
    // 访问文件
    FileStream file = client.getObjectRequest(bucketName, s3_path);
    }

2. 执行NAS异构操作

将NAS文件以NAS资源池的方式融入管理,建立与对象桶的关联关系,通过两次执行数据纳管操作完成整个NAS数据的纳管以及改造新业务的上线。

2.1 页面配置映射关系

1) 新建NAS池

该操作是将原有的数据通过NAS协议挂载到MOS服务器本地,以NAS池资源形式在MOS管理系统中呈现管理。

2) 关联bucket

该操作是将NAS池与对象存储的桶做关联,将原有的NAS数据根据当前对象业务的规划关联到特定的桶中,目前支持已有桶与新建桶的NAS池关联。

2.2 执行全局数据纳管

该操作将启动元数据的转换,以异步的方式遍历指定目录的文件建立对象元数据索引。

目前MOS支持根据业务需求选择部分或者全部目录做实际的NAS数据纳管,一般情况下我们选择根目录做全局纳管。

启动纳管任务后可以 在监控中心→任务管理中可查看进度。

全局纳管执行过程为T 1-T2 阶段,对当前业务没有影响。

2.3 执行增量数据纳管

在应用程序改造与第一次全局纳管任务执行的T1-T2阶段,原有NAS数据会有增量或变更,这时需要短暂地停止业务触发增量纳管操作及T2-T3阶段,具体的操作流程与全量操作的流程一致。

业务暂停的时间需要提前做好计划,我们根据实测数据给出了业务停止时间的计算方式。依据测算整体的NAS异构周期的主要影响因素为文件数量,目前单目录迁移速率为300文件每秒,常规目录结构下千万级别的文件数的纳管时间可以控制在100分钟以内完成。按照测试的数值 估算(T2-T3)割接停机时间 可以按照增量文件数总数与更改文件的顶层目录数量评估。估算公式如下:
总时间T(秒) = 增量文件所在目录的数据总量 ÷ (300 × 增量文件分布的目录数量)

以下为计算示例:
场景:在全量数据纳管的过程中,在3个目录中有新增文件,这 3个目录中的文件数量(包括已经纳管的文件)分别为10万、20万、30万。
预计割接时间=60万 ÷ (300 × 3) = 666.66秒

3. 检查启动业务

在T3节点完成所有数据的异构后,可以通过MOS管理系统浏览统计信息或者使用工具以对象的方式列举所有的文件并与NAS数据做文件数量的对比检查,以确保所有数据纳管成功,检查确认后就可以上线启动改造后的应用系统。

场景二的处理步骤

NAS数据迁移到对象需要先利用NAS异构完成业务交割,然后利用生命周期管理特性来迁移数据。相比场景一的步骤,多了最后一段后台迁移的过程。

1. 执行场景一处理步骤

如上介绍,先按照场景一的NAS异构处理步骤完成改造业务以及历史数据的纳管。

2. 配置生命周期

新建对应桶的生命周期管理规则,设置详细规则信息,点击对应NAS异构对应桶操作列的更多按钮,出现生命周期对话框。

点击新建生命周期规则,填写详细规则。过期转移策略与过期删除策略都有两种设置方式,一种设置为对象创建多少天之后执行,一种为具体时间执行。在NAS异构的数据迁移场景,我们根据实际需求,过期转移策略一般填写具体时间,过期删除则根据后期对NAS存储的规划填写具体时间。

同时这里还可以根据业务的压力情况配置QoS设置,主要包括后台数据迁移的执行时间段与带宽限流设置,目的是降低后端数据迁移对前端业务的影响。

3. 查看迁移任务执行进度

用户可以在任务管理界面查看当前迁移任务的执行情况,其中包含迁移文件的数量,迁移进度以及预计的完成时间,如果出现迁移异常会有告警信息提醒。整个数据迁移过程无需人为干预,对业务无感知。

4. 执行数据校验

单个文件迁移完成时,迁移任务会自动对比老文件与新对象数据的MD5 值,确保数据的一致性。在全部迁移完成之后我们建议再次对比数据的一致性,避免遗漏纳管完成之后又有变更的文件,通过文件数量统计和MD5 值对比可以确认迁移是否完成。

5. 原有NAS下线

确保数据迁移完成且一致性检查无误后,就可以删除原有NAS的数据或者直接下电拆除。

其他建议

为了尽可能地减少业务切换停机窗口,可根据当前NAS的使用方式来制 定异构方案。根据已实施项目的经验,针对两种情况我们给出以下建议。

1) 应用使用一个NAS卷,容量占用一般不会太大,但文件数量可能较多,子目录数量也可能较多。在这种情况下,可以在不中断业务的情况下,T1-T2阶段针对整个NAS卷或针对不再新写入数据的子目录进行异构,将绝大多数的文件异构完成。针对在异构过程中新增的文件,可在停机窗口中进行增量导入,最大限度地减少T2-T3阶段的停机时间。

2) 应用使用多个NAS卷,容量一般占用较大,或有一定的业务存放规则,使用多个NAS对文件分类存储,文件数量一般也较多,但每个NAS中的文件数量不会太大。在这种情况下,可以同时对多个NAS进行异构,针对有一定访问特征的应用,比如按时间存放文件,则可先将不再新写入数据的NAS异构完成,最后针对有新增数据的NAS或子目录进行增量导入,快速完成异构。

方案价值

上述文件存储的对象化改造方案可以帮助客户实现对存储设备的高效割接,平滑完成对象存储的升级更换。基于杉岩数据MOS产品的NAS异构与生命周期数据迁移方案,客户在对象存储升级过程中能够感受到以下价值:

  1. 无需长时间等待数据搬迁,业务切割时间短,简单轻松
  2. 现有NAS可以继续通过S3接口使用,保护投资
  3. 利用生命周期管理,数据迁移可以按需自动完成,业务无感知

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

7

添加新评论2 条评论

hooyeahhooyeah产品经理杉岩数据
2019-11-14 17:17
纳管阶段都有可计算预判的业务短时离线;业务无感是指在场景二真正迁移数据到对象存储时候策略性的自动迁移,该过程业务无感。
roundtriproundtrip信息技术经理北京朗天鑫业信息工程技术有限公司
2019-11-14 17:01
有业务离线时间,怎么能叫业务无感知呢?。。。 阿弥陀佛
Ctrl+Enter 发表

相关文章

相关问题

相关资料

X社区推广