Compartir a través de

教程:通过 NFS 将数据复制到 Azure Data Box

重要

Azure Data Box 现在支持 Blob 级别的访问层分配。 本教程中包含的步骤反映了已更新的数据的复制过程,且专门针对块 Blob。

有关确定适用于块 Blob 的访问层的帮助,请参阅确定适用于块 Blob 的访问层部分。 按照将数据复制到 Data Box 部分中包含的步骤将数据复制到适当的访问层。

本部分中包含的信息适用于在 2024 年 4 月 1 日之后下达的订单。

本教程介绍如何使用本地 Web UI 连接到主机并从中复制数据。

在本教程中,你将了解如何执行以下操作:

  • 先决条件
  • 连接到 Data Box
  • 将数据复制到 Data Box

先决条件

在开始之前,请确保:

  1. 完成教程:设置 Azure Data Box
  2. 你收到 Data Box,并且门户中的订单状态为“已送达”。
  3. 你有一台主机,其中的数据需复制到 Data Box。 该主机必须:
    • 运行支持的操作系统
    • 连接到高速网络。 强烈建议你至少建立一个 10-GbE 连接。 如果 10-GbE 连接不可用,则可使用 1-GbE 数据链路,但复制速度会受影响。

连接到 Data Box

根据选择的存储帐户,Data Box 将会:

  • 为每个关联的 GPv1 和 GPv2 存储帐户最多创建三个共享。
  • 用于高级存储的一个共享。
  • 一个共享(针对一个 Blob 存储帐户),其中包含四个文件夹,分别用于四个访问层。

下表中确定了可连接到的 Data Box 共享的名称,以及上传到目标存储帐户的数据类型。 它还确定了将源数据复制到其中的共享和目录的层次结构。

存储类型 共享名 第一级实体 第二级实体 第三级实体
块 blob <storageAccountName>_BlockBlob <\accessTier> <\containerName> <\blockBlob>
页 blob <\storageAccountName>_PageBlob <\containerName> <\pageBlob>
文件存储 <\storageAccountName>_AzFile <\fileShareName> <\file>

不能将文件直接复制到任何 Data Box 共享的根文件夹中。 请改为根据用例在 Data Box 共享中创建文件夹。

块 Blob 支持在文件级别分配访问层。 将文件复制到块 Blob 共享之前,建议的最佳做法是在适当的访问层中添加新的子文件夹。 接下来,在创建新的子文件夹后,请根据需要继续向每个子文件夹添加文件。

为驻留在块 blob 共享根目录中的任何文件夹创建一个新容器。 文件夹中的任何文件都作为块 blob 复制到存储帐户的默认访问层。

有关 Blob 访问层的详细信息,请参阅 Blob 数据的访问层。 如需详细了解访问层的最佳做法,请参阅有关使用 blob 访问层的最佳做法

下表显示了 Data Box 上共享的 UNC 路径,以及数据上传到的相应 Azure 存储路径 URL。 最终的 Azure 存储路径 URL 可以从 UNC 共享路径派生。

Azure 存储类型 Data Box 共享
Azure 块 Blob
  • UNC 共享路径:\\<DeviceIPAddress>\<storageaccountname_BlockBlob>\<accessTier>\<ContainerName>\myBlob.txt
  • Azure 存储 URL:https://<storageaccountname>.blob.core.chinacloudapi.cn/<ContainerName>/myBlob.txt
  • Azure 页 Blob
  • UNC 共享路径:\\<DeviceIPAddress>\<storageaccountname_PageBlob>\<ContainerName>\myBlob.vhd
  • Azure 存储 URL:https://<storageaccountname>.blob.core.chinacloudapi.cn/<ContainerName>/myBlob.vhd
  • Azure 文件
  • UNC 共享路径:\\<DeviceIPAddress>\<storageaccountname_AzFile>\<ShareName>\myFile.txt
  • Azure 存储 URL:https://<storageaccountname>.file.core.chinacloudapi.cn/<ShareName>/myFile.txt
  • 如果使用 Linux 主机,请执行以下步骤将 Data Box 配置为允许 NFS 客户端访问。

    1. 提供允许访问共享的客户端的 IP 地址。 在本地 Web UI 中,转到“连接和复制”页。 在“NFS 设置”下,选择“NFS 客户端访问”

      配置 NFS 客户端访问

    2. 提供 NFS 客户端的 IP 地址,然后选择“添加”。 可以重复此步骤为多个 NFS 客户端配置访问。 选择“确定”

      配置 NFS 客户端的 IP 地址

    3. 确保 Linux 主机上已安装受支持版本的 NFS 客户端。 使用特定版本的 Linux 分发版。

    4. 安装 NFS 客户端后,使用以下命令在 Data Box 设备上装载 NFS 共享:

      sudo mount <Data Box device IP>:/<NFS share on Data Box device> <Path to the folder on local Linux computer>

      使用以下示例通过 NFS 连接到 Data Box 共享。 在示例中,Data Box 设备 IP 为 10.161.23.130。 共享 Mystoracct_Blob 装载在 ubuntuVM 上,装载点为 /home/databoxubuntuhost/databox

      sudo mount -t nfs 10.161.23.130:/Mystoracct_Blob /home/databoxubuntuhost/databox

      对于 Mac 客户端,需要添加一个额外的选项,如下所示:

      sudo mount -t nfs -o sec=sys,resvport 10.161.23.130:/Mystoracct_Blob /home/databoxubuntuhost/databox

      重要

      无法将文件直接复制到存储帐户的根文件夹。 在块 Blob 存储帐户的根文件夹中,可以找到对应于每个可用访问层的文件夹。

      若要将数据复制到 Azure Data Box,必须先选择对应于其中一个访问层的文件夹。 接下来,在该层的文件夹中创建一个子文件夹来存储数据。 最后,将数据复制到新创建的子文件夹。 新的子文件夹表示引入期间在存储帐户中创建的容器。 数据以 blob 的形式上传到此容器。

    确定块 blob 的适当访问层

    重要

    本部分中包含的信息适用于在 2024 年 4 月 1 日之后下达的订单

    Azure 存储允许在同一存储帐户中的多个访问层中存储块 blob 数据。 通过此功能,可根据数据的访问频率更高效地组织和存储数据。 下表包含有关 Azure 存储访问层的信息和建议。

    建议 最佳做法
    对于经常访问或修改的在线数据很有用。 此层的存储成本最高,但访问成本最低。 此层中的数据应是定期且积极使用的数据。
    对于不经常访问或修改的在线数据很有用。 此层与热层相比,存储成本较低,访问成本较高。 此层中的数据应至少存储 30 天。
    对于很少访问或修改但仍需要快速检索的在线数据很有用。 此层与冷层相比,存储成本较低,访问成本较高。 此层中的数据应至少存储 90 天。
    存档 对于很少访问且对延迟要求较低的离线数据很有用。 此层中的数据应至少存储 180 天。 对于 180 天内从存档层删除的数据,需支付提前删除费。

    有关 Blob 访问层的详细信息,请参阅 Blob 数据的访问层。 有关更多详细的最佳做法,请参阅使用 Blob 访问层的最佳做法

    通过将块 Blob 数据复制到 Data Box 中的相应文件夹,可以将块 Blob 数据传输到相应的访问层。 将数据复制到 Azure Data Box 部分更详细地讨论了此过程。

    将数据复制到 Data Box

    连接到一个或多个 Data Box 共享后,下一步是复制数据。 在开始数据复制之前,请考虑以下限制:

    • 请确保将数据复制到与所需数据格式相对应的共享。 例如,将块 blob 数据复制到块 blob 的共享。 将 VHD 复制到页 blob 共享。 如果数据格式与相应的共享类型不匹配,则上传到 Azure 的数据将在后续步骤中失败。
    • 将数据复制到 AzFile 或 PageBlob 共享时,请先在共享的根目录中创建一个文件夹,然后将文件复制到该文件夹
    • 将数据复制到 BlockBlob 共享时,请在所需的访问层中创建子文件夹,然后将数据复制到新创建的子文件夹。 子文件夹表示将数据作为 blob 上传到的容器。 无法将文件直接复制到共享的根文件夹中
    • 复制数据时,请确保数据大小符合 Azure 存储帐户限制中所述的大小限制。
    • Data Box 和另一个非 Data Box 应用程序同时上传可能会导致上传作业失败和数据损坏。
    • 如果将 SMB 和 NFS 协议用于数据副本,建议:
      • 对 SMB 和 NFS 使用不同的存储帐户。
      • 不要使用 SMB 和 NFS 将相同的数据复制到 Azure 中的同一端目标。 在这些情况下,最终的结果不可确定。
      • 尽管可以同时通过 SMB 和 NFS 进行复制,但我们不建议这样做,因为这很容易出现人为错误。 等待 SMB 数据复制完成,然后启动 NFS 数据复制。
    • 将数据复制到块 blob 共享时,请在所需的访问层中创建子文件夹,然后将数据复制到新创建的子文件夹。 子文件夹表示将数据作为 blob 上传到其中的容器。 不能将文件直接复制到存储帐户中的 root 文件夹。
    • 如果从 NFS 共享中将区分大小写的目录和文件名引入到 Data Box 上的 NFS:
      • 名称将保留大小写。

      • 文件不区分大小写。

        例如,如果复制 SampleFile.txtSamplefile.Txt,则在复制到 Data Box 时,名称会保留大小写。 但是,上传的最后一个文件会覆盖第一个文件,因为这些文件被视为同一文件。

    重要

    请确保保留源数据的副本,直到可以确认数据已复制到 Azure 存储中为止。

    如果使用 Linux 主机,请使用类似于 Robocopy 的复制实用工具。 在 Linux 中可用的一些替代工具包括 rsyncFreeFileSyncUnisonUltracopier

    cp 命令是用于复制目录的最佳选项之一。 有关用法详细信息,请转到 cp 手册页

    如果使用 rsync 选项进行多线程复制,请遵循以下准则:

    • 根据 Linux 客户端所用的文件系统,安装 CIFS UtilsNFS Utils 包。

      sudo apt-get install cifs-utils

      sudo apt-get install nfs-utils

    • 安装 rsync 和“Parallel”(根据 Linux 分发版而异)。

      sudo apt-get install rsync

      sudo apt-get install parallel

    • 创建装入点。

      sudo mkdir /mnt/databox

    • 装载卷。

      sudo mount -t NFS4 //Databox IP Address/share_name /mnt/databox

    • 镜像文件夹目录结构。

      rsync -za --include='*/' --exclude='*' /local_path/ /mnt/databox

    • 复制文件。

      cd /local_path/; find -L . -type f | parallel -j X rsync -za {} /mnt/databox/{}

      其中,j 指定并行化数目,X 为并行副本数

      我们建议从 16 个并行副本开始,并根据可用的资源增加线程数。

    重要

    不支持以下 Linux 文件类型:符号链接、字符文件、块文件、套接字和管道。 在准备交付步骤期间,这些文件类型将导致失败。

    在复制过程中显示通知以标识错误。

    下载并查看“连接和复制”上的错误

    选择“下载问题列表”。

    下载复制错误的问题列表

    打开列表以查看错误的详细信息,并选择解析 URL 以查看推荐的解决方法。

    复制错误问题列表中的问题

    有关详细信息,请参阅查看将数据复制到 Data Box 期间的错误日志。 有关数据复制期间的错误详细列表,请参阅 Data Box 问题故障排除

    为确保数据完整性,复制数据时将以内联方式计算校验和。 复制完成后,检查设备上的已用空间和可用空间。

    在仪表板上检查可用空间和已用空间

    后续步骤

    本教程介绍了有关 Azure Data Box 的主题,例如:

    • Data Box 数据复制先决条件
    • 连接到 Data Box
    • 确定块 blob 的适当访问层
    • 将数据复制到 Data Box

    请继续学习下一篇教程,了解如何将 Data Box 寄回 Azure。