配置和使用 Mountpoint
要使用适用于 Amazon S3 的 Mountpoint,您的主机需要有效的 AWS 凭证,有权访问您要挂载的一个或多个 Amazon S3 存储桶。有关不同的身份验证方式,请参阅 GitHub 上的 Mountpoint AWS 凭证
例如,您可以创建一个新的 AWS Identity and Access Management(IAM)用户和角色用于此目的。请确保此角色有权访问您要挂载的一个或多个存储桶。您可以通过实例配置文件将 IAM 角色传递给您的 Amazon EC2 实例。
使用适用于 Amazon S3 的 Mountpoint
使用适用于 Amazon S3 的 Mountpoint 执行以下操作:
-
挂载 Amazon S3 存储桶。
-
您可以使用
mount-s3
命令手动挂载 Amazon S3 存储桶。在下面的示例中,将
替换为 S3 存储桶的名称,并将amzn-s3-demo-bucket
替换为主机上您希望在其中挂载 S3 存储桶的目录。~/mnt
mkdir
~/mnt
mount-s3amzn-s3-demo-bucket
~/mnt
由于 Mountpoint 客户端默认情况下在后台运行,因此
目录现在支持您访问 Amazon S3 存储桶中的对象。~/mnt
-
或者,您可以配置在实例启动或重启时自动挂载 Amazon S3 存储桶。
对于现有或正在运行的 Amazon EC2 实例,请在 Linux 系统的
/etc/fstab
目录中找到fstab
文件。然后,向fstab
文件中添加一行。例如,要使用前缀example-prefix/
将amzn-s3-demo-bucket
挂载到系统路径/mnt/mountpoint
,请参阅以下内容。要使用以下示例,请将用户输入占位符
替换为您自己的信息。s3://
/amzn-s3-demo-bucket
example-prefix
//mnt/mountpoint
mount-s3 _netdev,nosuid,nodev,nofail,rw 0 0有关示例中使用的选项的解释,请参阅下表。
选项 描述 _netdev
指定文件系统需要联网才能进行挂载。
nosuid
指定文件系统不能包含所设置的用户 ID 文件。
nodev
指定文件系统不能包含特殊设备。
nofail
指定如果无法挂载文件系统,则仍应支持系统启动。
rw
指定使用读取和写入权限创建挂载点。或者,使用
ro
以仅进行读取。对于新的 Amazon EC2 实例,您可以修改 Amazon EC2 模板上的用户数据,并按如下方式设置
fstab
文件。要使用以下示例,请将用户输入占位符
替换为您自己的信息。#!/bin/bash -e MP_RPM=$(mktemp --suffix=.rpm) curl https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm > $MP_RPM yum install -y $MP_RPM rm $MP_RPM MNT_PATH=/mnt/mountpoint echo "s3://
/ ${MNT_PATH} mount-s3 _netdev,nosuid,nodev,rw,allow-other,nofail" >> /etc/fstab mkdir $MNT_PATH systemctl daemon-reload mount -aamzn-s3-demo-bucket
-
-
通过 Mountpoint 访问 Amazon S3 存储桶中的对象。
在本地挂载存储桶后,您可以使用常用的 Linux 命令(例如
cat
或ls
)来处理您的 S3 对象。适用于 Amazon S3 的 Mountpoint 通过以正斜杠 (/
) 字符为界拆分 Amazon S3 存储桶中的密钥,将这些密钥解释为文件系统路径。例如,如果您的存储桶中有对象密钥Data/2023-01-01.csv
,那么您的 Mountpoint 文件系统中将有一个名为Data
的目录,其中有一个名称为2023-01-01.csv
的文件。适用于 Amazon S3 的 Mountpoint 特意不实现文件系统的完整 POSIX
标准规范。Mountpoint 针对以下工作负载进行了优化:此类工作负载需要通过文件系统接口对存储在 Amazon S3 中的数据进行高吞吐量读写访问,但不依赖文件系统功能。有关更多信息,请参阅 GitHub 上的适用于 Amazon S3 的 Mountpoint 的文件系统行为 。需要更丰富的文件系统语义的客户应该考虑其他 AWS 文件服务,例如 Amazon Elastic File System(Amazon EFS) 或 Amazon FSx 。 -
使用
umount
命令卸载 Amazon S3 存储桶。此命令卸载您的 S3 存储桶并退出 Mountpoint。要使用以下示例命令,请将
替换为主机上挂载 S3 存储桶的目录。~/mnt
umount
~/mnt
注意
要获取此命令的选项列表,请运行
umount --help
。
有关其它 Mountpoint 配置详细信息,请参阅 GitHub 上的 Amazon S3 bucket configuration
在 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
替换为 Amazon S3 存储桶的名称,并将 amzn-s3-demo-bucket
替换为主机上您希望在其中挂载 S3 存储桶的目录。~/mnt
mkdir
~/mnt
mount-s3 --cacheCACHE_PATH
amzn-s3-demo-bucket
~/mnt
如果您在挂载 Amazon S3 存储桶时选择使用本地缓存,Mountpoint 会在所配置的缓存位置创建一个空的子目录(如果该子目录尚不存在)。首次挂载存储桶以及卸载存储桶时,Mountpoint 会删除本地缓存的内容。
重要
如果启用本地缓存,Mountpoint 会将挂载的 Amazon S3 存储桶中的未加密对象内容,持久保存在挂载时提供的本地缓存位置。为了保护您的数据,您应使用文件系统访问控制机制,限制对数据缓存位置的访问。
共享缓存
如果您重复读取多个计算实例中的小对象(最大 1 MB),或者重复读取的数据集大小通常超过本地缓存的大小,则应在 S3 Express One Zone
选择使用共享缓存后,您需要为缓存在您的 S3 Express One Zone 目录存储桶中的数据付费。您还需要为针对您在 S3 Express One Zone 目录存储桶中存储的数据发出的请求付费。有关更多信息,请参阅 Amazon S3 定价
要在将 Amazon S3 存储桶挂载到计算实例时选择在 S3 Express One Zone 中进行缓存,请使用 --cache-xz
标志并将目录存储桶指定为缓存位置。在以下示例中,替换用户输入占位符
。
mount-s3
amzn-s3-demo-bucket
~/mnt
--cache-xz
amzn-s3-demo-bucket--usw2-az1--x-s3
合并本地缓存和共享缓存
如果您的实例上有未使用的空间,但又想在多个实例之间使用共享缓存,则可以选择同时使用本地缓存和共享缓存。使用此缓存配置,当所需数据缓存在本地存储中时,您可以避免从同一实例向目录存储桶中的共享缓存发送冗余读取请求。这可以降低请求成本并提高性能。
要在挂载 Amazon 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 会将对象内容从挂载的 Amazon S3 存储桶复制到您作为共享缓存位置提供的 S3 目录存储桶中,从而使任何有权访问 S3 目录存储桶的调用方都可以访问这些内容。要保护缓存的数据,您应遵循 Amazon S3 的安全最佳实践以确保存储桶使用了正确的策略,并且不是公开可访问的。您应该使用专用于 Mountpoint 共享缓存的目录存储桶,并仅向 Mountpoint 客户端授予访问权限。