你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

本教程介绍如何通过 NFS 连接到 Data Box 的本地 Web UI 并从中将数据复制到本地数据服务器。 Data Box 上的数据是从 Azure 存储帐户导出的。

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

  • 先决条件
  • 连接到 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 存储帐户的一个共享。

在块 blob 和页 blob 共享下,一级实体为容器,二级实体为 blob。 在 Azure 文件共享下,一级实体为共享,二级实体为文件。

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

Blob 和文件 路径和 URL
Azure 块 Blob
  • UNC 共享路径:\\<DeviceIPAddress>\<StorageAccountName_BlockBlob>\<ContainerName>\files\a.txt
  • Azure 存储 URL:https://<StorageAccountName>.blob.core.windows.net/<ContainerName>/files/a.txt
  • Azure 页 Blob
  • UNC 共享路径:\\<DeviceIPAddres>\<StorageAccountName_PageBlob>\<ContainerName>\files\a.txt
  • Azure 存储 URL:https://<StorageAccountName>.blob.core.windows.net/<ContainerName>/files/a.txt
  • Azure 文件
  • UNC 共享路径:\\<DeviceIPAddres>\<StorageAccountName_AzFile>\<ShareName>\files\a.txt
  • Azure 存储 URL:https://<StorageAccountName>.file.core.windows.net/<ShareName>/files/a.txt
  • 如果使用 Linux 主机,请执行以下步骤将 Data Box 配置为允许 NFS 客户端访问。 Data Box 一次最多可以连接五个 NFS 客户端。

    1. 提供允许访问共享的客户端的 IP 地址:

      1. 在本地 Web UI 中,转到“连接和复制”页。 在“NFS 设置”下,单击“NFS 客户端访问”。

        打开 NFS 客户端访问

      2. 若要添加 NFS 客户端,请提供客户端的 IP 地址,并单击“添加”。 Data Box 一次最多可以连接五个 NFS 客户端。 完成后,单击“确定”。

        添加 NFS 客户端

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

    3. 安装 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 和页 blob 共享下创建的文件夹表示将数据作为 blob 上传到的容器。 无法将文件直接复制到存储帐户中的 root 文件夹。

    从 Data Box 复制数据

    连接到 Data Box 共享后,下一步是复制数据。

    复制数据前的准备工作:

    1. 下载复制日志。 在“连接和复制”页中,选择“复制日志” 。 出现提示时,将日志保存在系统上。

      如果复制日志太大,则需要使用 Azure 存储资源管理器AzCopy 来下载复制日志,防止出现任何故障。

      • 如果使用 Azure 存储资源管理器下载复制日志,可以在 Azure 存储资源管理器中映射 Azure 存储帐户,然后下载原始文件。
      • 如果使用 AzCopy 下载复制日志,可以使用 AzCopy copy 命令将日志文件从存储帐户复制到本地系统。

      下载复制日志 1

      重复上述步骤,下载详细日志。

    2. 查看详细日志。 详细日志包含从 Azure 存储帐户成功导出的所有文件的列表。 该日志还包含文件大小和校验和计算。

      <File CloudFormat="BlockBlob" Path="validblobdata/test1.2.3.4" Size="1024" crc64="7573843669953104266">
      </File><File CloudFormat="BlockBlob" Path="validblobdata/helloEndWithDot..txt" Size="11" crc64="7320094093915972193">
      </File><File CloudFormat="BlockBlob" Path="validblobdata/test..txt" Size="12" crc64="17906086011702236012">
      </File><File CloudFormat="BlockBlob" Path="validblobdata/test1" Size="1024" crc64="7573843669953104266">
      </File><File CloudFormat="BlockBlob" Path="validblobdata/test1.2.3" Size="1024" crc64="7573843669953104266">
      </File><File CloudFormat="BlockBlob" Path="validblobdata/.......txt" Size="11" crc64="7320094093915972193">
      </File><File CloudFormat="BlockBlob" Path="validblobdata/copylogb08fa3095564421bb550d775fff143ed====..txt" Size="53638" crc64="1147139997367113454">
      </File><File CloudFormat="BlockBlob" Path="validblobdata/testmaxChars-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-123456790-12345679" Size="1024" crc64="7573843669953104266">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/file0" Size="0" crc64="0">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/file1" Size="0" crc64="0">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/file4096_000001" Size="4096" crc64="16969371397892565512">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/file4096_000000" Size="4096" crc64="16969371397892565512">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/64KB-Seed10.dat" Size="65536" crc64="10746682179555216785">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/LiveSiteReport_Oct.xlsx" Size="7028" crc64="6103506546789189963">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/NE_Oct_GeoReport.xlsx" Size="103197" crc64="13305485882546035852">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/64KB-Seed1.dat" Size="65536" crc64="3140622834011462581">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/1mbfiles-0-0" Size="1048576" crc64="16086591317856295272">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/file524288_000001" Size="524288" crc64="8908547729214703832">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/4mbfiles-0-0" Size="4194304" crc64="1339017920798612765">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/file524288_000000" Size="524288" crc64="8908547729214703832">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/8mbfiles-0-1" Size="8388608" crc64="3963298606737216548">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/1mbfiles-0-1" Size="1048576" crc64="11061759121415905887">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/XLS-10MB.xls" Size="1199104" crc64="2218419493992437463">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/8mbfiles-0-0" Size="8388608" crc64="1072783424245035917">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/4mbfiles-0-1" Size="4194304" crc64="9991307204216370812">
      </File><File CloudFormat="BlockBlob" Path="export-ut-container/VL_Piracy_Negtive10_TPNameAndGCS.xlsx" Size="12398699" crc64="13526033021067702820">
      </File>
      
    3. 检查复制日志是否有任何错误。 此日志指示由于错误无法复制的文件。

      下面是以下情况的复制日志的示例输出:在数据复制过程中没有出现任何错误且所有文件已从 Azure 复制到了 Data Box。

      <CopyLog Summary="Summary">
        <Status>Succeeded</Status>
        <TotalFiles_Blobs>5521</TotalFiles_Blobs>
        <FilesErrored>0</FilesErrored>
      </CopyLog>
      

      下面是在复制日志包含错误且某些文件未能从 Azure 复制时的示例输出。

      <ErroredEntity CloudFormat="AppendBlob" Path="export-ut-appendblob/wastorage.v140.3.0.2.nupkg">
        <Category>UploadErrorCloudHttp</Category>
        <ErrorCode>400</ErrorCode>
        <ErrorMessage>UnsupportBlobType</ErrorMessage>
        <Type>File</Type>
      </ErroredEntity><ErroredEntity CloudFormat="AppendBlob" Path="export-ut-appendblob/xunit.console.Primary_2020-05-07_03-54-42-PM_27444.hcsml">
        <Category>UploadErrorCloudHttp</Category>
        <ErrorCode>400</ErrorCode>
        <ErrorMessage>UnsupportBlobType</ErrorMessage>
        <Type>File</Type>
      </ErroredEntity><ErroredEntity CloudFormat="AppendBlob" Path="export-ut-appendblob/xunit.console.Primary_2020-05-07_03-54-42-PM_27444 (1).hcsml">
        <Category>UploadErrorCloudHttp</Category>
        <ErrorCode>400</ErrorCode>
        <ErrorMessage>UnsupportBlobType</ErrorMessage>
        <Type>File</Type>
      </ErroredEntity><CopyLog Summary="Summary">
        <Status>Failed</Status>
        <TotalFiles_Blobs>4</TotalFiles_Blobs>
        <FilesErrored>3</FilesErrored>
      </CopyLog>    
      

      你可以使用以下选项导出这些文件:

      • 你可以传输无法通过网络复制的文件。
      • 如果数据大小大于可用设备容量,则会发生部分复制,且未复制的所有文件都将在此日志中列出。 你可以将此日志用作输入 XML 来创建新的 Data Box 订单,然后复制这些文件。

    现在即可开始复制数据。 如果使用 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 文件类型:符号链接、字符文件、块文件、套接字和管道。 在准备交付步骤期间,这些文件类型将导致失败。

    复制完成后,转到“仪表板”,检查设备上的已用空间和可用空间。

    现在,你可以继续将 Data Box 交付到 Microsoft。

    后续步骤

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

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

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