有什么方法可以加快 Windows 中映射的 EFS 共享?

有什么方法可以加快 Windows 中映射的 EFS 共享?

我们刚刚获得了一个 AWS 账户,我正在测试 EFS。我创建了一个 EFS,将其安装在 Amazon Linux 实例上,并将其设置为在 Samba 中共享。然后我能够将共享映射为 Windows 7 和 Windows Server 2012 中的驱动器,但与之相关的一切都非常慢(查看文件、创建文件、查看共享属性 - 一切)。我认为这是因为安装是 8艾克斯字节。

有没有办法在实例或 samba 中安装它时调整共享大小或将其分成更小的部分?

有没有办法直接调整 efs 的大小?我们永远不会使用 8 EB!

有没有办法判断除了尺寸之外,是否还有其他因素导致其速度变慢?

我们确实需要能够将其映射为 Windows 中的驱动器。

答案1

我们遇到了类似的问题,并找到了解决方案。我们能够将问题缩小到 SAMBA 未能及时报告 EFS 大小。更具体地说,samba 未能执行 sys_get_nfs4_quota(),大约 60 秒后超时。

为了解决这个问题,我们在 Samba 中添加了一个自定义脚本,可以立即报告 8 EB,而无需计算大小。鉴于这是无限的 EFS(理论上),报告的大小无关紧要,返回固定数字就可以了。这解决了 60 秒超时的问题。

为此,在 /etc/samba/samba-dfree 中创建一个文件并添加以下两行:

#!/bin/bash
echo "8000000000 8000000000"

然后在 samba 配置文件中,根据需要将以下参数添加到全局部分或特定的 EFS 挂载部分:

dfree command = /etc/samba/samba-dfree
dfree cache time = 60

保存配置文件。重新启动 SAMBA,延迟应该会消失。希望这能有所帮助。

答案2

EFS 在 IO 信用系统上运行,这些信用是根据您在 EFS 中使用的空间量全天不断生成的。

每次读取或写入 EFS 卷时,您都会消耗这些信用。如果您的余额中没有 IO 信用,则读取和写入将等待,直到您有为止。

我认为这很有可能,你已经用完了所有的信用,而后台 IO 不断消耗你的信用,导致性能非常糟糕。

您可以通过检查 cloudwatch 来检查 EFS 卷的信用额度。

再进一步说明一下。如果您在 EFS 磁盘上仅使用 1GiB,则每次以超过 50KiB/s 的速率读取/写入时都会消耗信用,而每次以低于 50KiB/s 的速率读取/写入时都会生成信用。

相比之下,如果 EFS 磁盘有 10GiB,您将能够维持 500KiB/s。

我正在将 EFS 与一项服务结合使用,发现我必须生成大约 80GiB 的原始无用数据,这些数据仅位于 EFS 磁盘上以生成足够的 IO 信用以允许我的应用程序使用共享。

我设置了一个云监视警报,如果我的信用额度低于阈值,它会通知我,这样我就有时间向 EFS 磁盘添加更多“无用数据”,以便我维持正常的性能。

我建议阅读亚马逊关于 EFS 吞吐量扩展的官方建议如果您认为这会影响到您。

编辑:AWS 现在支持 EFS 的预配置吞吐量,尽管这不会比上述方法节省任何费用,并且需要了解预期吞吐量,否则会高估使用量。有关详细信息,请参阅链接文档。

答案3

我在 Windows 上安装的 samba 共享中也遇到了类似的慢速访问。在 EC2 上,我获得了良好的性能(在浏览目录等时,访问时间至少为几分之一秒)。Windows 需要几分钟才能从安装驱动器的“我的电脑”/“这台电脑”视图访问 - 不过,一旦我进入目录,它似乎确实相当高效。

那么 - 这是不是像 Windows 试图找出 8 EB 文件系统的大小那样愚蠢的事情?

使用 cmd 似乎支持这一点。进入文件系统并运行“dir”,然后列出目录,然后经过长时间的延迟,然后出现“可用字节数”

我知道这不是一个答案,希望这对比我更有能力的人来说可能是有用的信息

相关内容