

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理 Snowball Edge 上的 NFS 接口
<a name="shared-using-nfs"></a>

使用网络文件系统 (NFS) 界面将文件上传到 Snowball Edge，就像设备是操作系统的本地存储一样。因为您可以使用操作系统的特征（例如复制文件、拖放文件或其他图形用户界面特征），所以这是更方便用户使用的传输数据方法。设备上的每个 S3 存储桶都可用作 NFS 接口端点，并且可以装载，以便将数据复制到其中。NFS 接口可用于导入作业。

如果 Snowball Edge 设备配置为在创建订购设备的作业时包括 NFS 接口，则可以使用该接口。如果设备未配置为包含 NFS 接口，请使用 Snowball Edge 上的 S3 适配器或 Amazon S3 兼容存储来传输数据。有关 S3 Adapter 的更多信息，请参阅[使用管理 Amazon S3 适配器存储 AWS OpsHub](manage-s3.md)。有关 Snowball Edge 上与 Amazon S3 兼容存储的更多信息，请参阅。[在 Snowball Edge 上设置兼容亚马逊 S3 的存储 AWS OpsHub](s3-edge-snow-opshub.md)

启动后，NFS 接口使用 1 GB 的内存和 1 个 CPU。这可能会限制在 Snowball Edge 上运行的其他服务的数量或可以运行的 EC2兼容实例的数量。

通过 NFS 接口传输的数据未进行传输中加密。配置 NFS 接口时，您可以提供 CIDR 块，Snowball Edge 将限制地址位于这些块中的客户端计算机访问 NFS 接口。

当设备寄回给 AWS时，设备上的文件会传输到 Amazon S3。有关更多信息，请参阅[将任务导入 Amazon S3 S AWS](https://docs.aws.amazon.com/snowball/latest/developer-guide/importtype.html) 原理。

有关在计算机操作系统上使用 NFS 的更多信息，请参阅操作系统的文档。

在使用 NFS 接口时，请记住以下详细信息：
+ NFS 接口为设备上的数据存储提供了本地存储桶。对于导入任务，不会将本地存储桶中的数据导入到 Amazon S3。
+ 文件名是 Snowball Edge 上本地 S3 存储桶中的对象密钥。键的名称是 Unicode 字符序列，它的 UTF-8 编码长度最大为 1,024 字节。我们建议尽可能使用 NFSv4 .1 并使用 Unicode UTF-8 对文件名进行编码，以确保成功导入数据。未使用 UTF-8 编码的文件名可能无法上传到 S3，或者可能使用其他文件名上传到 S3，具体取决于您使用的 NFS 编码。
+ 确保文件路径的最大长度小于 1024 个字符。Snowball Edge 不支持大于 1024 个字符的文件路径。超过此文件路径长度将导致文件导入错误。
+ 有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》中的[对象键](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html)。
+ 对于基于 NFS 的传输，当您的对象从 Snowball Edge 导入到 Amazon S3 时，标准的 POSIX 样式元数据将添加到您的对象中。此外，你还将看到元数据 “-x-amz-meta-user agent aws-datasync”，这是我们目前使用的 Amazon S3 内部导入机制的一部分，用于使用 AWS DataSync NFS 选项导入 Snowball Edge。
+ 您可以使用单台 Snowball Edge 设备传输最多 4000 万个文件。如果您需要在单个作业中传输超过 4000 万个文件，请对文件进行批处理，从而减少每次传输的文件数量。对于具有增强型 NFS 接口或 S3 接口的 Snowball Edge 设备，单个文件在不超过 5 TB 的情况下大小不限。

您还可以使用 GUI 工具配置和管理 NFS 接口。 AWS OpsHub有关更多信息，请参阅[管理 NFS 接口](https://docs.aws.amazon.com/snowball/latest/developer-guide/manage-nfs.html)。

## Snowball Edge 的 NFS 配置
<a name="NFS-interface-configuration"></a>

默认情况下，NFS 接口未在 Snowball Edge 设备上运行，因此您需要启动该接口才能将数据传输到该设备。您可以通过提供在 Snowball Edge 上运行的虚拟网络接口 (VNI) 的 IP 地址来配置 NFS 接口，并在需要时限制对文件共享的访问。在配置 NFS 接口之前，请在 Snowball Edge 上设置虚拟网络接口 (VNI)。有关更多信息，请参阅[计算实例的网络配置](https://docs.aws.amazon.com/snowball/latest/developer-guide/network-config-ec2.html)。

### 为 NFS 接口配置 Snowball Edge
<a name="configure-snow-nfs"></a>
+ 使用 `describe-service` 命令确定 NFS 接口是否处于活动状态。

  ```
  snowballEdge describe-service --service-id nfs
  ```

  该命令将返回 NFS 服务的状态：`ACTIVE` 或 `INACTIVE`。

  ```
  {
    "ServiceId" : "nfs",
    "Status" : {
    "State" : "ACTIVE"
    }
  }
  ```

  如果`State`名称的值为，则表示 NFS 接口服务处于活动状态`ACTIVE`，您可以装载 Snowball Edge NFS 卷。有关更多信息，请参阅 [ 在客户端计算机上装载 NFS 端点  启动 NFS 接口后，将该端点作为本地存储装载到客户端计算机上。 以下是 Windows、Linux 和 macOS 操作系统的默认装载命令。   Windows: 

  ```
  mount -o nolock rsize=128 wsize=128 mtype=hard nfs-interface-ip-address:/buckets/BucketName *
  ```     Linux： 

  ```
  mount -t nfs nfs-interface-ip-address:/buckets/BucketName mount_point
  ```     macOS： 

  ```
  mount -t nfs -o vers=3,rsize=131072,wsize=131072,nolocks,hard,retrans=2 nfs-interface-ip-address:/buckets/$bucketname mount_point
  ```   ](#mount-snow-nfs-volume.title)。如果值为 `INACTIVE`，则必须启动服务。

### 在 Snowball Edge 上启动 NFS 服务
<a name="start-snow-nfs-service"></a>

如有必要，启动虚拟网络接口 (VNI)，然后在 Snowball Edge 上启动 NFS 服务。如有必要，在启动 NFS 服务时，请提供允许的网络地址范围。如果不提供任何地址，则对 NFS 端点的访问将不受限制。

1. 使用`describe-virtual-network-interface`命令查看 Snowball Edge 上 VNIs 可用的内容。

   ```
   snowballEdge describe-virtual-network-interfaces
   ```

   如果 Snowball Edge 上有一个或多个 VNIs 处于活动状态，则该命令将返回以下内容。

   ```
   snowballEdge describe-virtual-network-interfaces
   [
     {
       "VirtualNetworkInterfaceArn" : "arn:aws:snowball-device:::interface/s.ni-8EXAMPLE8EXAMPLE8",
       "PhysicalNetworkInterfaceId" : "s.ni-8EXAMPLEaEXAMPLEd",
       "IpAddressAssignment" : "DHCP",
       "IpAddress" : "192.0.2.0",
       "Netmask" : "255.255.255.0",
       "DefaultGateway" : "192.0.2.1",
       "MacAddress" : "EX:AM:PL:E1:23:45"
     },{
       "VirtualNetworkInterfaceArn" : "arn:aws:snowball-device:::interface/s.ni-1EXAMPLE1EXAMPLE1",
       "PhysicalNetworkInterfaceId" : "s.ni-8EXAMPLEaEXAMPLEd",
       "IpAddressAssignment" : "DHCP",
       "IpAddress" : "192.0.2.2",
       "Netmask" : "255.255.255.0",
       "DefaultGateway" : "192.0.2.1",
       "MacAddress" : "12:34:5E:XA:MP:LE"
     }  
   ]
   ```

   记下要用于 NFS 接口的 VNI 的 `VirtualNetworkInterfaceArn` 名称的值。

1. 如果没有可 VNIs 用，请使用`create-virtual-network-interface`命令为 NFS 接口创建 VNI。有关更多信息，请参阅[设置虚拟网络接口（VNI）](https://docs.aws.amazon.com/snowball/latest/developer-guide/network-config-ec2.html#snowcone-setup-vni)。

1. 使用 `start-service` 命令启动 NFS 服务并将其与 VNI 关联。要限制对 NFS 接口的访问，请在命令中包括 `service-configuration` 和 `AllowedHosts` 参数。

   ```
   snowballEdge start-service --virtual-network-interface-arns arn-of-vni --service-id nfs --service-configuration AllowedHosts=CIDR-address-range
   ```

1. 使用 `describe-service` 命令来检查服务状态。当 `State` 名称的值为 `ACTIVE` 时，服务正在运行。

   ```
   snowballEdge describe-service --service-id nfs
   ```

   该命令返回服务状态、NFS 端点的 IP 地址和端口号以及允许访问该端点的 CIDR 范围。

   ```
   {
    "ServiceId" : "nfs",
    "Status" : {
    "State" : "ACTIVE"
    },
    "Endpoints" : [ {
    "Protocol" : "nfs",
    "Port" : 2049,
    "Host" : "192.0.2.0"
    } ],
    "ServiceConfiguration" : {
    "AllowedHosts" : [ "10.24.34.0/23", "198.51.100.0/24" ]
    }
   }
   ```

### 在客户端计算机上装载 NFS 端点
<a name="mount-snow-nfs-volume"></a>

启动 NFS 接口后，将该端点作为本地存储装载到客户端计算机上。

以下是 Windows、Linux 和 macOS 操作系统的默认装载命令。
+ Windows:

  ```
  mount -o nolock rsize=128 wsize=128 mtype=hard nfs-interface-ip-address:/buckets/BucketName *
  ```
+ Linux：

  ```
  mount -t nfs nfs-interface-ip-address:/buckets/BucketName mount_point
  ```
+ macOS：

  ```
  mount -t nfs -o vers=3,rsize=131072,wsize=131072,nolocks,hard,retrans=2 nfs-interface-ip-address:/buckets/$bucketname mount_point
  ```

### 停止 Snowball Edge 上的 NFS 界面
<a name="stop-nfs-interface"></a>

通过 NFS 接口完成文件传输后，在关闭 Snowball Edge 电源之前，请使用`stop-service`命令停止 NFS 服务。

```
snowballEdge stop-service --service-id nfs
```