基于应用程序的、基于文件的和基于块的迁移都有各自的优点和适用场景。选择正确的解决方案首先要了解它们之间的差异。
数据迁移对于任何规模的 IT 组织都是至关重要且富有挑战性的操作。无论组织是小型、中型还是财富 500 强巨头,将数据从一个系统迁移到另一个系统充满了风险,从数据丢失或损坏到延长停机时间,这些风险的影响可能极为昂贵。不论公司规模如何,建立组织的数据移动功能的连续性和可靠性都是至关重要的任务,选择正确的数据迁移方法和解决方案也是必不可少的。
在企业生产环境中迁移数据有三种主要方法:基于应用程序的(逻辑)、基于文件的和基于块的(物理)。这些迁移方法各有优点和适用场景。在本文中,我们将分别评估这三种方法。首先,我们将讨论一些组织需要进行数据迁移的常见原因。
迁移到新位置(数据迁移)。当数据和应用程序需要从一个位置移动到另一个位置时,需要进行数据迁移,例如在数据中心搬迁或整合期间。这种迁移在大型跨国企业组织中尤为流行,因为数据经常需要从一个地方移动到另一个地方。
由于源和目标之间的带宽可能有限,迁移性能和实时数据迁移能力在这种类型的迁移中尤为重要。
迁移到新存储(存储刷新)。替换或添加新存储可能是数据迁移最常见的用例。组织出于许多原因获取新的存储设备,每次存储刷新都需要将生产负载从旧存储迁移到新存储。成本、功能、可靠性和性能是组织获取新存储的热门原因。
存储刷新可能包括物理存储更改和存储协议更改(从 iSCSI 到光纤通道、从光纤通道到 iSCSI 以及其他专有协议)。能够在不停机的情况下透明且无干扰地启动和执行数据迁移对于这种类型的迁移至关重要,以消除对生产环境中业务应用的不必要影响。
迁移到新平台(基础设施刷新)。组织内部经常会进行基础设施刷新,特别是在通过自然增长或收购扩大业务规模或采用新技术时。这些刷新可能是由于希望将应用程序负载从一个托管位置或状态迁移到另一个位置,从物理环境迁移到虚拟环境,迁移到私有云或超级融合基础设施,迁移到公共云,从一个云服务提供商迁移到另一个云服务提供商,甚至是从云中退出到托管的数据中心。
迁移存储数据通常只是在较长时间内进行的范围更广泛的基础设施升级的一部分。通常涉及许多不同类型的应用程序、操作系统、文件系统、基础设施平台和提供商。
因此,拥有一个与多个平台和供应商原生集成的一体化迁移解决方案对于重视数据流动性的组织而言,在提高效率和可管理性方面至关重要。在上述场景中使用多种工具和解决方案可能会带来不必要的复杂性,并增加人为错误的风险,这些因素可能导致成本增加和系统停机时间延长。
应用程序转换。当应用程序环境或应用程序本身需要进行转换时,有时需要进行数据迁移。这些可能包括应用程序升级、整合、扩展、将单体应用转换为微服务,甚至将服务从一种应用类型转移到另一种应用类型。
当企业决定转换其应用程序时,通常超越了 IT 基础设施层次的迁移,因为它需要更广泛的业务转型操作。
在急于完成项目的过程中,往往会将数据迁移到新存储环境的策略制定推迟到最后一刻。最后一刻的匆忙往往导致组织跳过步骤,直接进入数据迁移,而没有采取必要的措施。这似乎是显而易见的,但要正确设计和执行数据迁移,组织需要明确迁移的原因。一旦了解需要迁移哪些数据以及为什么,他们就可以探讨如何以最佳方式进行迁移。
数据迁移的三种主要方法是应用级、文件级和块级。下面我们详细了解一下每一种。
应用程序级别或逻辑数据迁移 应用程序数据迁移——有时被称为逻辑数据迁移或事务级别迁移——是一种利用本身内置在应用程序工作负载中的数据移动能力的迁移方法。
这些功能通常只适用于少量的企业级应用,如数据库、虚拟化管理程序和文件服务器,它们通常是为数据保护目的而设计的。
技术:某些应用程序提供专有的数据移动功能。这些功能通常有助于配置备份或辅助存储,或对其进行协助。然后,这些应用程序同步或异步地确保辅助存储是有效的,并在必要时可以在没有主副本的情况下使用。
应用示例:Postgres SQL逻辑复制、Microsoft SQL复制、Oracle Goldengate、存储vMotion(VMware)以及其他使用VMware API迁移VMware的商业工具。
应用程序级数据迁移的优势 用户界面。原生数据移动功能通常与应用软件集成,并可以通过软件的主要用户界面进行配置。
部署:由于软件中有原生数据移动功能,通常不需要额外的要求或安装。
兼容性和支持。原生数据移动仅为特定应用程序设计,无需担心兼容性问题。如果遇到问题,供应商通常会提供在线支持。应用程序级迁移还可能实现其他数据迁移方法无法提供的应用程序转换功能。一个例子是在不兼容的主要数据库版本之间传输数据。
应用程序级数据迁移的局限性 有限的可用性。只有大型企业应用程序(如数据库和文件服务器)可能提供此类功能。关键词是“可能”。可用性将很大程度上取决于您要迁移到最新版本的应用程序的年代和类型。
单一用途。由于数据移动功能专为单个应用程序构建,因此在大型迁移操作中使用时,许可、培训和其他管理费用的相关成本会累积。效率。应用程序级数据同步是在逻辑层面上执行的。例如,数据库复制是在数据库记录、事务或SQL语句级别进行的。虽然这些方法准确且多功能,但在将数据从一个存储系统同步到另一个存储系统或从一个平台同步到另一个平台时,尤其是涉及大量数据时,可能存在更高效的方法。
生产影响。逻辑同步是应用程序的一部分,因此只能使用应用程序和存储之间现有的可用带宽。因此,在同时维护生产负载的情况下执行数据迁移的能力可能受到限制。
许可成本。应用程序级数据迁移功能通常被视为企业级特性,需要额外的许可证。由于软件的专有和单一用途特性,可能没有可行的低成本替代方案。
文件迁移就是字面上的意思 —— 在文件系统级别执行的数据迁移。它可以包括本地和基于网络的文件系统。文件迁移工具通常与热门的文件系统类型和文件存储提供商集成。文件迁移工具通常扫描一个文件系统(如Ext4、NTFS、CIFS、NFS、SMB等),然后逐个将文件复制到另一个文件系统。当一个文件正在使用中时,无法进行复制,必须在下一次扫描中移动。一些常见的例子包括 Rsync(Linux)、Robocopy(Windows)、Rclone(云端)以及各种商业选项。
文件级数据迁移的优势:
互操作性:如今,大多数应用程序都使用文件作为持久存储。文件迁移可以作为迁移不同应用程序和不同配置的通用机制。因此,迁移工具与应用程序是独立的。
技术简单:文件数据可以使用操作系统提供的相同的、成熟的 API 来访问,这些 API 是大多数应用程序已经使用的。因此,文件迁移操作通常涉及较少的专业知识和技巧,如果操作不当可能会引入错误。
可用工具:许多文件级数据同步工具都是免费或开源的,包括主要操作系统分发的工具。
兼容性:在应用程序或平台转换期间,可能需要从一种文件系统或文件共享转换到另一种。文件迁移天然支持这些转换,因为数据同步是基于文件对文件的方式进行的。
文件级数据迁移的局限性:
管理开销:在典型的应用环境中,会有大量的文件和文件系统。管理所有文件和文件系统的迁移可能会产生很大的不必要的管理和维护开销。例如,如果组织正在搬迁整个数据中心,逐个文件的迁移所需的时间和管理可能会成为负担,以至于严重延误搬迁进度。
效率:与在应用记录或事务级别进行迁移类似,在活跃环境中逐个迁移大量文件可能效率较低,尤其是在数据变化频繁的场景下。执行此类迁移所需的资源通常也更高。
应用程序如数据库在某些情况下可能频繁更改文件数据(保持文件打开和锁定),这可能使文件迁移效率极低甚至不可能实现。
文件元数据:文件元数据,诸如访问控制列表 (ACL),可能非常复杂。许多基本工具没有提供足够的支持。当跨平台迁移时,缺乏按需支持可能会导致问题。
数据完整性:在文件迁移中,仅同步文件数据。文件系统的内部结构和元数据并未同步。对于需要在迁移后独立验证数据完整性的一些组织来说,遗留元数据是个问题。发现缺失或损坏的文件并无简单方法。
相反,如果完全迁移文件系统,包括内部文件系统结构和元数据,任何数据损坏或遗漏的数据可能会导致文件系统无法卸载,并可通过文件系统检查来检测。仅有文件数据损坏而非文件系统本身损坏的几率极低,可以在数学上忽略不计。
块级数据迁移:块级数据迁移是在存储卷级别执行的。块级迁移并不严格关注存储卷中存储的实际数据。相反,它们包括任何类型的文件系统数据、任何类型的分区、原始块存储以及来自任何应用程序的数据。
相反,如果完全迁移文件系统,包括内部文件系统结构和元数据,任何数据损坏或遗漏的数据可能会导致文件系统无法卸载,并可通过文件系统检查来检测。仅有文件数据损坏而非文件系统本身损坏的几率极低,可以在数学上忽略不计。
块级数据迁移:块级数据迁移是在存储卷级别执行的。块级迁移并不严格关注存储卷中存储的实际数据。相反,它们包括任何类型的文件系统数据、任何类型的分区、原始块存储以及来自任何应用程序的数据。
技术:块级迁移工具在不处理任何数据内容的情况下,从存储卷的开始(字节0)同步到整个卷的结束(字节N),将一个存储卷同步到另一个存储卷。所有数据都被同步,从而在目标端获得与迁移源卷逐字节相同的副本。示例:dd 命令(Linux)、Cirrus Migrate Cloud、Cirrus Migrate On-Premises,以及其他商业迁移和灾难恢复工具。
块级数据迁移的优势:
管理效率:在搬迁数据中心或更新存储设备的组织中,通常可以看到显著的效率优势。在这些场景下,目标是在新位置或存储产品中创建一个与原存储卷相同的副本。无论传输了多少数据、存储设备中存储了多少文件,或者存储设备上有多少不同类型的数据,数据迁移都作为一个相同的单元进行。
性能:数据以块级别同步,通过更精细的变更跟踪、更大的块 I/O、顺序访问等手段,实现更高效的数据复制。作为一个单元迁移整个存储卷还允许使用更先进的数据减少能力。
基本通用性:块迁移在基础架构级别将数据作为一个单元进行迁移。由于块级迁移过程不需要处理存储设备上的任何数据,因此不存在文件系统或应用程序支持或兼容性问题。从 VMware 的 VMFS 到超融合环境,再到水平扩展的软件定义存储,可以在无需处理任何数据内容的情况下进行迁移。
数据安全性:块级迁移是唯一真正安全的数据迁移方法,因为在整个迁移过程中,迁移工具不解释任何应用程序或文件数据。甚至可以在没有文件系统密钥的情况下迁移加密的文件系统。
原始存储支持:对于不从文件系统消耗数据或使用专有文件系统的专业应用程序来说,块级迁移可能是实现准确且卷一致迁移的唯一途径。
数据完整性:与其他迁移方法相比,块级迁移要简单得多。块级数据主要按顺序复制,整个存储设备作为一个单元进行同步。因此,完成迁移后的数据完整性可以通过较少的努力独立验证。
真正的实时迁移:执行块级迁移的迁移工具可以迁移真正实时的数据。在生产环境中如何使用这些数据并不重要。无论数据包含在数据库还是文件存档中,无论文件是否经常被打开和锁定,甚至文件权限发生变化,块级迁移都以相同的方式进行。
块级数据迁移的局限性:
技术复杂性:尽管概念上简单,但块级迁移在技术上相当复杂。与其他迁移方法不同,块级迁移通常涉及专业知识和技巧,而不是现成的操作系统提供的 API。这包括光纤通道和 iSCSI 协议知识、低级别特定于操作系统的内核操作等。
工具稀缺:由于块级迁移的复杂性和专业性,可用的块级迁移工具较少。专门用于块级迁移的工具更为稀缺,因为目前大多数可用的块级同步解决方案都是为数据保护和灾难恢复目的而设计的。
应用程序转换:块级迁移为迁移任何数据提供了极好的方法。然而,在应用程序进行转换且需要更改数据时,可能需要特定于应用的工具。例如,在将 Oracle 数据库实例从 AIX 主机迁移到 Linux 主机时,由于两个操作系统架构之间字节序的差异,可能更倾向于使用应用程序级别的逻辑迁移。
迁移是应用程序、文件还是块?
随着需要存储的数据量不断增加,全球各地的组织不仅在考虑如何存储数据,还在努力优化其存储环境。随着存储技术的不断发展,以及云计算逐渐成为高性能数据库和应用程序的可行选择,数据迁移和数据流动性变得尤为重要。关于数据类型、目标以及控制存储成本的方法的讨论现在已经成为中心话题。这个过程的第一步是了解各种选择,然后使策略与目标保持一致。
https://www.infoworld.com/article/3694888/understand-the-3-major-approaches-to-data-migration.html