在 Amazon EC2 Linux 实例上挂载文件共享
不管 Amazon EC2 Linux 实例是否加入 Active Directory 来访问 FSx for Windows File Server 文件系统,您都可以在该实例上挂载 FSx for Windows File Server 文件共享。
注意
以下命令中指定的参数(SMB 协议、缓存,以及读取和写入缓冲区的大小)仅作为示例。Linux
cifs
命令的参数选择以及所用 Linux 内核版本,可能会影响客户端与 Amazon FSx 文件系统之间网络操作的吞吐量和延迟。有关更多信息,请参阅cifs
文档,了解您使用的 Linux 环境。Linux 客户端不支持基于 DNS 的自动失效转移。有关更多信息,请参阅 Linux 客户端的失效转移经验。
-
如果您还没有正在运行的 EC2 Linux 实例已加入 Microsoft Active Directory,请参阅《AWS Directory Service 管理指南》中的手动加入 Linux 实例。
-
连接到 EC2 Linux 实例。有关更多信息,请参阅《Amazon EC2 用户指南》中的连接到 Linux 实例。
-
要安装
cifs-utils
包,请运行以下命令。此包用于在 Linux 上挂载 Amazon FSx 等网络文件系统。$
sudo yum install cifs-utils
-
创建挂载点目录
/mnt/fsx
。您将在此处挂载 Amazon FSx 文件系统。$
sudo mkdir -p /mnt/fsx
-
使用以下命令通过 Kerberos 进行身份验证。
$
kinit
-
使用以下命令挂载文件共享。
$
sudo mount -t cifs //
,ip=file_system_dns_name
/file_share
mount_point
--verbose -o vers=SMB_version
,sec=krb5,cruid=ad_user
,rsize=CIFSMaxBufSize
,wsize=CIFSMaxBufSize
,cache=nonepreferred-file-server-Ip
您可以在 Amazon FSx 控制台
上选择 Windows File Server、网络与安全,从而找到 DNS 名称。或者,您可以在 CreateFileSystem
或DescribeFileSystems
API 操作的响应中找到它们。对于加入 AWS 托管的 Microsoft Active Directory 的单可用区文件系统,DNS 名称如下所示。
fs-0123456789abcdef0.
ad-domain
.com对于加入自行管理的 Active Directory 的单可用区文件系统,以及所有多可用区文件系统,DNS 名称如下所示。
amznfsxaa11bb22.
ad-domain
.com
将
替换为内核允许的最大值。运行以下命令,以获取此值。CIFSMaxBufSize
$
modinfo cifs | grep CIFSMaxBufSizeparm: CIFSMaxBufSize:Network buffer size (not including header). Default: 16384 Range: 8192 to 130048 (uint)
输出显示最大缓冲区大小为 130048。
-
运行以下命令,验证文件系统是否已挂载,该命令仅返回通用 Internet 文件系统(CIFS)类型的文件系统。
$
mount -l -t cifs
//fs-0123456789abcdef0/share on /mnt/fsx type cifs (rw,relatime,vers=
SMB_version
,sec=krb5,cache=cache_mode
,username=user1@CORP.NETWORK.COM,uid=0,noforceuid,gid=0,noforcegid,addr=192.0.2.0,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
此过程中使用的挂载命令会在指定点执行以下操作:
-
//
– 指定要挂载的文件系统的 DNS 名称和共享。file_system_dns_name
/file_share
-
mount_point
– 要挂载文件系统的 EC2 实例上的目录。 -
-t cifs vers=
– 将文件系统的类型指定为 CIFS 和 SMB 协议版本。Amazon FSx for Windows File Server 支持 SMB 版本 2.0 至 3.1.1。SMB_version
-
sec=krb5
– 指定使用 Kerberos 版本 5 进行身份验证。 -
cache=
– 设置缓存模式。此 CIFS 缓存选项可能会影响性能,您应该测试哪些设置更适合您的内核和工作负载(并查看 Linux 文档)。建议使用选项cache_mode
strict
和none
,因为loose
可能会因协议语义较宽松而导致数据不一致。 -
cruid=
– 将凭证缓存所有者的 UID 设置为 AD 目录管理员。ad_user
-
– 在 EC2 实例上指定 Amazon FSx 文件共享的挂载点。/mnt/fsx
-
rsize=
– 将读取和写入缓冲区大小指定为 CIFS 协议允许的最大值。将CIFSMaxBufSize
,wsize=CIFSMaxBufSize
替换为内核允许的最大值。通过运行以下命令来确定CIFSMaxBufSize
CIFSMaxBufSize
。$
modinfo cifs | grep CIFSMaxBufSizeparm: CIFSMaxBufSize:Network buffer size (not including header). Default: 16384 Range: 8192 to 130048 (uint)
输出显示最大缓冲区大小为 130048。
-
ip=
– 将目标 IP 地址设置为文件系统首选文件服务器的 IP 地址。preferred-file-server-Ip
您可以按如下方式检索文件系统的首选文件服务器 IP 地址:
使用 Amazon FSx 控制台,在文件系统详细信息页面的网络与安全选项卡上。
在
describe-file-systems
CLI 命令或等效 DescribeFileSystems API 命令的响应中。
以下过程将 Amazon FSx 文件共享挂载到未加入 Active Directory(AD)的 Amazon EC2 Linux 实例。对于未加入 AD 的 EC2 Linux 实例,您只能使用其私有 IP 地址挂载 FSx for Windows File Server 文件共享。您可以访问 Amazon FSx 控制台
此示例使用 NTLM 身份验证。为此,您需要以用户身份(即,FSx for Windows File Server 文件系统所加入的 Microsoft Active Directory 域的成员)挂载文件系统。EC2 实例 creds.txt
上所创建的文本文件中会提供用户账户的凭证。此文件包含用户的用户名、密码和域。
$
cat creds.txt
username=user1 password=Password123 domain=EXAMPLE.COM
启动和配置 Amazon Linux EC2 实例
-
使用 Amazon EC2 控制台
启动 Amazon Linux EC2 实例。有关更多信息,请参阅《Amazon EC2 用户指南》中的启动实例。 -
连接到 Amazon Linux EC2 实例。有关更多信息,请参阅《Amazon EC2 用户指南》中的连接到 Linux 实例。
-
要安装
cifs-utils
包,请运行以下命令。此包用于在 Linux 上挂载 Amazon FSx 等网络文件系统。$
sudo yum install cifs-utils
-
创建您计划挂载 Amazon FSx 文件系统的挂载点
/mnt/fsxx
。$
sudo mkdir -p /mnt/fsx
-
使用之前显示的格式在
/home/ec2-user
目录中创建creds.txt
凭证文件。 -
设置
creds.txt
文件权限,以便只有您(所有者)可以通过运行以下命令来读取和写入文件。$
chmod 700 creds.txt
挂载文件系统
-
您可以使用私有 IP 地址挂载未加入 Active Directory 的文件共享。您可以访问 Amazon FSx 控制台
,在网络与安全选项卡上的首选文件服务器 IP 地址中获取文件系统的私有 IP 地址。 -
使用以下命令挂载文件系统:
$
sudo mount -t cifs //
file-system-IP-address
/file_share
/mnt/fsx --verbose -o vers=SMB_version
,sec=ntlmsspi,cred=/home/ec2-user/creds.txt,rsize=CIFSMaxBufSize
,wsize=CIFSMaxBufSize
,cache=none将
替换为内核允许的最大值。运行以下命令,以获取此值。CIFSMaxBufSize
$
modinfo cifs | grep CIFSMaxBufSizeparm: CIFSMaxBufSize:Network buffer size (not including header). Default: 16384 Range: 8192 to 130048 (uint)
输出显示最大缓冲区大小为 130048。
-
运行以下命令,验证是否挂载了文件系统,该命令仅返回 CIFS 文件系统。
$
mount -l -t cifs
//
file-system-IP-address
/file_share
on /mnt/fsx type cifs (rw,relatime,vers=SMB_version
,sec=ntlmsspi,cache=cache_mode
,username=user1,domain=CORP.EXAMPLE.COM,uid=0,noforceuid,gid=0,noforcegid,addr=192.0.2.0,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
此过程中使用的挂载命令会在指定点执行以下操作:
-
//
– 指定要挂载的文件系统的 IP 地址和共享。file-system-IP-address
/file_share
-
-t cifs vers=
– 将文件系统的类型指定为 CIFS 和 SMB 协议版本。Amazon FSx for Windows File Server 支持 SMB 版本 2.0 至 3.1.1。SMB_version
-
sec=ntlmsspi
– 指定使用 NT LAN Manager Security Support Provider Interface(NTLMSSPI)进行身份验证。 -
cache=
– 设置缓存模式。此 CIFS 缓存选项可能会影响性能,您应该测试哪些设置更适合您的内核和工作负载(并查看 Linux 文档)。建议使用选项cache_mode
strict
和none
,因为loose
可能会因协议语义较宽松而导致数据不一致。 -
cred=/home/ec2-user/creds.txt
– 指定从何处获取用户凭证。 -
– 在 EC2 实例上指定 Amazon FSx 文件共享的挂载点。/mnt/fsx
-
rsize=
– 将读取和写入缓冲区大小指定为 CIFS 协议允许的最大值。将CIFSMaxBufSize
,wsize=CIFSMaxBufSize
替换为内核允许的最大值。通过运行以下命令来确定CIFSMaxBufSize
CIFSMaxBufSize
。$
modinfo cifs | grep CIFSMaxBufSizeparm: CIFSMaxBufSize:Network buffer size (not including header). Default: 16384 Range: 8192 to 130048 (uint)