配置和使用 Mountpoint - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置和使用 Mountpoint

要使用适用于 Amazon S3 的 Mountpoint,您的主机需要有效的 Amazon 凭证,有权访问您要挂载的一个或多个通用存储桶。有关不同的身份验证方式,请参阅 GitHub 上的 Mountpoint Amazon 凭证

例如,您可以创建一个新的 Amazon Identity and Access Management(IAM)用户和角色用于此目的。请确保此角色有权访问您要挂载的一个或多个存储桶。您可以通过实例配置文件将 IAM 角色传递给您的 Amazon EC2 实例。

使用适用于 Amazon S3 的 Mountpoint

使用适用于 Amazon S3 的 Mountpoint 执行以下操作:

  1. 使用 mount-s3 命令挂载通用存储桶。

    在下面的示例中,将 amzn-s3-demo-bucket 替换为 S3 通用存储桶的名称,并将 ~/mnt 替换为主机上您希望在其中挂载 S3 存储桶的目录。

    mkdir ~/mnt mount-s3 amzn-s3-demo-bucket ~/mnt

    由于 Mountpoint 客户端在默认情况下在后台运行,因此 ~/mnt 目录现在允许您访问 S3 存储桶中的对象。

  2. 通过 Mountpoint 访问通用存储桶中的对象。

    在本地挂载存储桶后,您可以使用常用的 Linux 命令(例如 catls)来处理您的 S3 对象。适用于 Amazon S3 的 Mountpoint 通过以正斜杠(/)字符为界拆分 S3 存储桶中的密钥,将这些密钥解释为文件系统路径。例如,如果您的存储桶中有对象密钥 Data/2023-01-01.csv,那么您的 Mountpoint 文件系统中将有一个名为 Data 的目录,其中有一个名称为 2023-01-01.csv 的文件。

  3. 使用 umount 命令卸载您的存储桶。此命令卸载您的 S3 存储桶并退出 Mountpoint。

    要使用以下示例命令,请将 ~/mnt 替换为主机上挂载 S3 存储桶的目录。

    umount ~/mnt
    注意

    要获取此命令的选项列表,请运行 umount --help

有关 Mountpoint 配置的其他详细信息,请参阅 GitHub 上的 S3 存储桶配置文件系统配置

在 Mountpoint 中配置缓存

适用于 Amazon S3 的 Mountpoint 支持不同类型的数据缓存。要加快重复读取请求的速度,您可以选择以下选项:

  • 本地缓存 – 您可以在 Amazon EC2 实例存储或 Amazon Elastic Block Store 卷中使用本地缓存。如果您重复从同一个计算实例读取相同的数据,并且本地实例存储中有未使用的空间用于存放重复读取的数据集,则应该选择使用本地缓存。

  • 共享缓存 – 您可以在 S3 Express One Zone 上使用共享缓存。如果您重复读取多个计算实例中的小对象,或者您不知道重复读取的数据集的大小并希望从弹性缓存大小中受益,则应选择使用共享缓存。选择该选项后,Mountpoint 会在使用 S3 Express One Zone 的目录存储桶中,保留大小不超过一兆字节的对象。

  • 合并本地缓存和共享缓存 – 如果您的本地缓存中有未使用的空间,但又想在多个实例之间共享缓存,则可以选择同时使用本地缓存和共享缓存。

在 Mountpoint 中缓存非常适合重复读取相同数据的使用场景,这些数据在多次读取期间不会发生更改。例如,可以将缓存用于需要多次读取训练数据集的机器学习训练作业,以提高模型精度。

有关如何在 Mountpoint 中配置缓存的更多信息,请参阅以下示例。

本地缓存

您可以利用 --cache CACHE_PATH 标志选择使用本地缓存。在以下示例中,将 CACHE_PATH 替换为要在其中缓存数据的目录的文件路径。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称,并将 ~/mnt 替换为主机上您希望在其中挂载 S3 存储桶的目录。

mkdir ~/mnt mount-s3 --cache CACHE_PATH amzn-s3-demo-bucket ~/mnt

当您在挂载 S3 存储桶时选择使用本地缓存,Mountpoint 会在配置的缓存位置创建一个空的子目录(如果该子目录尚不存在)。首次挂载存储桶以及卸载存储桶时,Mountpoint 会删除本地缓存的内容。

重要

如果启用本地缓存,Mountpoint 会将挂载的 S3 存储桶中的未加密对象内容,保存在挂载时提供的本地缓存位置。为了保护您的数据,您应使用文件系统访问控制机制,限制对数据缓存位置的访问。

共享缓存

如果您重复读取多个计算实例中的小对象(最大 1 MB),或者重复读取的数据集大小通常超过本地缓存的大小,则应在 S3 Express One Zone 中使用共享缓存。当您从多个实例重复读取相同的数据时,这样可以避免向挂载的 S3 存储桶发出冗余请求,从而缩短延迟。

选择使用共享缓存后,您需要为缓存在您的 S3 Express One Zone 目录存储桶中的数据付费。您还需要为针对您在 S3 Express One Zone 目录存储桶中存储的数据发出的请求付费。有关更多信息,请参阅 Amazon S3 定价。Mountpoint 从不删除目录存储桶中的缓存对象。要管理存储成本,您应该在目录存储桶上设置生命周期策略,以便在您指定的时间段后,Amazon S3 可使 S3 Express One Zone 中的缓存数据过期。有关更多信息,请参阅 GitHub 上的 Mountpoint for Amazon S3 caching configuration

要在将通用存储桶挂载到计算实例时选择在 S3 Express One Zone 中进行缓存,请使用 --cache-xz 标志并将目录存储桶指定为缓存位置。在以下示例中,替换用户输入占位符

mount-s3 amzn-s3-demo-bucket ~/mnt --cache-xz amzn-s3-demo-bucket--usw2-az1--x-s3

合并本地缓存和共享缓存

如果您的实例上有未使用的空间,但又想在多个实例之间使用共享缓存,则可以选择同时使用本地缓存和共享缓存。使用此缓存配置,当所需数据缓存在本地存储中时,您可以避免从同一实例向目录存储桶中的共享缓存发送冗余读取请求。这可以降低请求成本并提高性能。

要在挂载 S3 存储桶时同时选择使用本地缓存和共享缓存,请使用 --cache--cache-xz 标志来指定这两个缓存位置。要利用以下示例来选择同时使用本地缓存和共享缓存,请替换用户输入占位符

mount -s3 amzn-s3-demo-bucket ~/mnt --cache /path/to/mountpoint/cache --cache -xz amzn-s3-demo-bucket--usw2-az1--x-s3

有关更多信息,请参阅 GitHub 上的 Mountpoint for Amazon S3 caching configuration

重要

如果您启用共享缓存,Mountpoint 会将对象内容从挂载的 S3 存储桶复制到您作为共享缓存位置提供的 S3 目录存储桶中,从而使任何有权访问 S3 目录存储桶的调用方都可以访问这些内容。要保护缓存的数据,您应遵循 Amazon S3 的安全最佳实践以确保存储桶使用了正确的策略,并且不是公开可访问的。您应该使用专用于 Mountpoint 共享缓存的目录存储桶,并仅向 Mountpoint 客户端授予访问权限。