每个集群层均附带一组默认资源。M10+ 集群可支持自定义存储容量。
Atlas 可提供以下存储配置选项,具体取决于所选云提供商和集群层。
集群类
M40+ 集群提供多种选项,包括:
- Low CPU 
- General 
- Local NVMe SSD 
所有生产环境都可以使用 General 选项。
在 Class(类别)框中选择您首选的速度。集群类的更改会影响成本。
低 CPU 类别
一般而言,Low CPU(低 CPU)选项可为需要较多内存和较少 CPU 的应用程序提供成本更低的替代方案。此选项包含的 vCPU 仅为附带 General(常规)选项的同一层级实例的一半。例如,一个 General(常规)M40 实例包括 4 个 vCPU,而一个 Low CPU(低 CPU)M40 实例仅包括 2 个 vCPU。根据集群层的不同,此选项还可能包括较少的最大连接数。要了解详情,请参阅连接限制和集群层。
注意
尽管用户界面显示 GB,Atlas 仍为 Low CPU 和 General 集群预配存储,以吉比字节 (GiB) 为单位。
NVMe 存储
对于某些在 AWS 或 Azure 上运行的专用集群,您可以选择 Local NVMe SSD 存储选项。本地连接的临时 NVMe 固态硬盘可提供最高级别的速度和性能。Atlas 为 NVMe 集群提供以千兆字节 (GB) 为单位的存储。
每当需进行初始同步时,基于文件副本的初始同步将始终用于同步 NVME 集群的所有节点。
注意
Atlas 不支持 Google Cloud 上的 NVMe 集群。
存储容量:
若要更改服务器数据卷大小,请执行以下任务之一:
- 移动滑动条,直到文本框显示首选磁盘尺寸。 
- 在文本框中指定准确的磁盘大小。 
有关特定于 Azure 的说明,请参阅在 Azure 上更改存储容量和 IOPS。
存储容量的变化会影响成本。
注意
MongoDB 将指定存储容量的一小部分用于缓冲区文件和日志文件,确保集群正常操作。在像 WiredTiger 存储引擎这样的无覆盖存储引擎中,应使用比压缩数据占用的磁盘空间约多 20% 的磁盘空间。
Oplog 大小行为
Atlas 以不同方式管理集群的 oplog 大小及其条目,具体取决于是否为集群启用了存储自动伸缩。
- Atlas 在默认情况下启用集群存储自动伸缩。如果您选择使用存储空间自动伸缩,Atlas 会根据最小 oplog 保留窗口 (oplogminRetentionHours) 设置来管理 oplog 条目。这些 oplog 条目均附带时间戳。oplog 窗口是指 oplog 中最新与最旧时间戳之间的时间差。 - 默认情况下,Atlas 将最小 oplog 保留窗口设置为 24 小时。这意味着,除非您将最小 oplog 保留窗口设置为特定的自定义值,否则 Atlas 集群的 - mongod会将所有 oplog 条目保留至少 24 小时,直到 oplog 达到 MongoDB 最佳实践允许的最大大小。- 您可以在 Atlas 用户界面中将最小 oplog 保留窗口设置为特定值。为了成功完成存储自动伸缩,Atlas 要求最小 oplog 保留窗口 (oplogMinRetentionHours) 最多为(60 秒)*(配置的磁盘空间,以 GB 为单位)。 - 如果集群的存储容量减少,Atlas 会自动缩小 oplog 的大小,以确保其适合减少的存储大小。 
- 您可以通过取消选中 Auto-scale(自动伸缩)部分中的 Storage Scaling(存储扩展)复选框,退出集群存储自动伸缩。如果您选择退出存储自动伸缩,Atlas 会按如下方式管理 oplog 大小: - 如果您未在 UI 中指定 oplog 大小,Atlas 会将 oplog 大小设置为: - 创建集群时磁盘大小的 5%,适用于 General(常规)和 Low-CPU(低 CPU)集群 
- 具有 NVMe 存储的集群磁盘大小的 10%。 
 - 如果您更改存储大小,Atlas 会自动更改 oplog 大小。 
- 在扩展集群的存储时,您可能会选择扩展 oplog 大小。在这种情况下,请在创建群集时手动将 oplog 大小设置为特定值。当您增加集群的存储时,Atlas 会按如下方式扩展 oplog 大小: - 对于 General(常规)和 Low-CPU(低 CPU)集群,oplog 大小会扩展并保持在存储容量的 5%,而不会超过根据 MongoDB 最佳实践所确定的某一最大值。 
- 对于使用 NVMe 存储的集群,oplog 的大小在扩展时将保持在存储容量的 10%,不会超过根据 MongoDB 最佳实践确定的某个最大值。 
 
- 如果扩展集群的存储, Atlas会使用之前的 oplog-to-disk 比率按扩展缩减oplog 。 示例,如果您使用25 GB的oplog (比率为0.25 )从100 GB扩展到50 GB ,则新oplog大小的比率也将为0.25 ,这将使其12.5 GB。 唯一的例外是新oplog大小小于存储容量的5 %(对于NVMe 存储,小于10 %)。 在这种情况下, Atlas会使用oplog大小的较高值,即存储容量的5 %(对于NVMe 存储为10 %)。 
 
更改 AWS 上的存储容量或 IOPS
根据您是要增加还是减少 AWS 上的存储容量或存储吞吐量 (IOPS),Atlas 会以不同的方式处理更改。
增加容量或吞吐量
如果之前的更改已完成,AWS 通常约需六小时才能增大存储容量或 IOPS。但是,此时间范围可能会根据磁盘上存储的数据大小而有所不同。要了解更多信息,请参阅 AWS 文档。Atlas 支持在卷修改更改的时间范围内进行更多更改。
AWS 支持扩展存储,但有以下限制:
- M40:最多 4TB 
- M50/M60:最高 8TB 
- M80+:最多 14TB 
如果您启用扩展存储,初始同步和跨项目快照恢复的速度会减慢,并可能降低高可用性。对于将来可能需要额外存储容量的集群,启用扩展存储是一种临时解决方案。我们建议您启用分片功能,以便长期扩展存储容量。
Atlas如何在卷修改更改的时间范围内处理其他更改,取决于主机数据卷的大小以及自上次修改卷以来经过的时间。 AWS 的冷却时间为6 小时,或每6 TB 卷大小为 小时,以较长者为准。
- 对于第一个更改, Atlas在增加磁盘大小时就地修改数据卷,无需停机。 
- 对于后续磁盘大小的增加: 数据卷大小自上次存储更改以来的时间Atlas 采取的操作- 小于 1 TB - 少于 6 小时 - Atlas 会预配新卷并同步旧卷中的数据。如果 Atlas 预配新卷,则您可访问集群。在 AWS 附加新卷之前,您无法访问 AWS 修改的节点。 - 小于 1 TB - 6 小时或更长时间 - Atlas会等到冷却时间到期,然后在不停机的情况下就地修改主机的数据卷。 - 超过 1TB - 小于卷修改冷却时间(每 TB 6 小时) - Atlas 会预配新卷并同步旧卷中的数据。如果 Atlas 预配新卷,则您可访问集群。在 AWS 附加新卷之前,您无法访问 AWS 修改的节点。 - 超过 1TB - 卷修改冷却时间或更长(每 TB 6 小时) - Atlas会等到冷却时间到期,然后在不停机的情况下就地修改主机的数据卷。这比预配新卷和将数据从旧卷同步到新卷所需的时间更少。如果您在上次修改磁盘后的 4 小时内修改了磁盘大小, Atlas会首先优先考虑计算升级,然后是磁盘修改。 
在应用存储容量或 IOPS 增加之前,Review Changes(查看更改)页面会介绍 Atlas 如何实现此增加。
如果 Atlas 等到六小时窗口关闭才修改集群的存储容量或 IOPS,则 Clusters(集群)页面会显示一条横幅:
- 由于 AWS 对卷增加的限制,在之前的磁盘更改仍在优化时,一些 EBS 卷更改会延迟。 
这些行为适用于 Atlas 在自动伸缩期间更改容量的情况。
要学习;了解有关Amazon Web Services限制的更多信息,请参阅Amazon Web Services文档。
降低容量或吞吐量
- AWS 不允许就地减少存储容量。 - Atlas可以通过以下方式减少存储容量:首先预配新卷,然后通过就地 rsync进程将数据从旧卷同步到新卷。这可以解决 AWS 的限制,但在此进程中,每个节点都会停机。 
- AWS 允许您在不迁移数据的情况下降低 IOPS。 - 对于磁盘大小的减小, Atlas始终会预配新卷并将数据从旧卷同步到新卷。无论卷修改冷却时间如何,此进程都需要在 rsync 操作期间在每个节点上停机。 
在 Azure 上更改存储容量和 IOPS
对于在 Azure 上部署的 Low CPU 或General 集群,您可以在 Atlas UI 中扩展 IOPS 和数据卷的存储容量。
如果增加 Low CPU 或General 集群的磁盘存储,您可以:
- 在同一集群层的集群上获得更多 IOPS。 
- 使用这些集群来托管具有高 IO 工作负载要求的应用程序,无需通过配置分片将应用程序的工作负载分散到多个服务器上。 
注意
并非所有 Azure 区域都支持扩展存储。详情请参阅支持的区域。
Azure具有卷修改冷却时间,这可能会限制更改存储的频率。
以下语句描述了 Atlas UI 中用于 IOPS 和 Azure 集群存储管理的选项。
- 最初,当你选择 Azure Low CPU 或 General 集群时,Atlas 会根据你选择的层级分配默认存储大小和 IOPS。 
- 根据您所在地区使用的存储卷的具体特征以及集群是否位于支持扩展存储的区域,您可以执行以下操作之一: 
- 如果在增加存储卷大小后,增加后的 IOPS 数量仍然不够,并且集群的层级位于支持扩展存储的区域,则可以使用 IOPS 滑块进一步扩展 IOPS 数量,而无需更改集群层。 
以下部分介绍如何增加存储大小和 IOPS。
在 Azure 上更改数据卷大小
若要更改服务器的数据卷大小,请执行以下操作:
- 在 Cluster tier > Storage 部分中,您可以根据区域执行以下操作之一: - 如果您的区域支持扩展存储,请将滑块向右移动并选择您喜欢的磁盘大小。 - 滑块右侧的文本框会动态更改,并指示新的磁盘大小。Atlas 还增加了 IOPS 以对应增加的存储大小。 
- 如果您所在的区域不支持扩展存储,您可以按预设量增加磁盘容量。在这种情况下,Atlas 不会增加 IOPS。 
 - 对于增加的存储容量, Atlas会就地增加存储容量,而无需复制数据或执行初始同步。 - 注意- 如果您更改为其他区域或多区域集群,则特定存储卷功能或扩展存储可能不可用。Atlas UI 会通知您 IOPS 将会降低。此更改可能会影响应用程序的性能、从备份恢复数据或将备份从这些区域复制到其他区域的速度。如要保持相同的性能,请继续使用相同的地区。如要了解更多信息,请参阅支持扩展存储的区域。 - Azure不允许就地减少存储容量。为了减少Azure上集群的存储容量, Atlas会预配新卷,然后使用基于逻辑或文件副本的初始同步将数据从旧卷同步到新卷。在应用存储容量减少之前, 页面会通知您,当您进行此更改时,Review Changes Atlas会触发集群的滚动重启。 - 初始同步会通过网络复制数据,并重新构建所有索引。在此期间,您仍可访问集群,但是 Azure 所修改的每个节点在该节点的初始同步完成之前都是不可用的。对于大型集群来说,每个节点的初始同步可能需要几个小时才能完成。 
要将集群总存储扩展为超出集群层的限制,您可以在“项目设置”中为支持扩展存储的区域启用扩展存储。
Azure 支持扩展存储,但有以下限制:
- M40:最多 4TB 
- M50/M60:最高 8TB 
- M80+:最多 14TB 
如果您启用扩展存储,初始同步和跨项目快照恢复的速度会减慢,并可能降低高可用性。对于将来可能需要额外存储容量的集群,启用扩展存储是一种临时解决方案。我们建议您启用分片功能,以便长期扩展存储容量。
在 Azure 上扩展 IOPS
以下步骤介绍了如何在同一集群层中增加存储容量时获得的 IOPS 数量之外,再获得扩展 IOPS。
对于支持扩展存储的区域,您可以更改 M40+ Atlas 集群的 IOPS 数量。
要扩展 IOPS 的数量,请执行以下操作:
更改 Google Cloud 上的存储容量
Google Cloud 支持扩展存储,但有以下限制:
- M40:最多 4TB 
- M50/M60:最高 8TB 
- M80+:最多 14TB 
与 AWS 不同,Google Cloud 没有卷修改冷却时间。因此,可以立即进行存储更改,而无需等待先前的修改完成。
当您增加集群的存储容量时, Atlas会以滚动方式修改服务器数据量的大小,且无需停机。 Atlas无需复制数据或执行初始同步即可就地增加存储容量。
但是,Google Cloud 不允许就地减少存储容量。如果减少集群的存储容量, Atlas会预配新卷,然后使用基于逻辑或文件副本的初始同步将数据从旧卷同步到新卷。
如果您启用扩展存储,初始同步和跨项目快照恢复的速度会减慢,并可能降低高可用性。对于将来可能需要额外存储容量的集群,启用扩展存储是一种临时解决方案。我们建议您启用分片功能,以便长期扩展存储容量。
在应用存储容量缩减之前,Review Changes 页面会通知您:当您进行此更改时,Atlas 会触发集群的滚动重启。
Atlas 对单个副本集有磁盘容量限制,对于更高的集群层可扩展到 4 TB。要将集群总存储空间扩展到默认限制以外,可以在项目设置中启用扩展存储。为适应未来的进一步扩展,可启用分片功能,以便实现长期扩展。
更改多云提供商集群的存储容量
Atlas 会在三个云提供商之间选择最小公分母。这确保了多云部署的一致性。
无法调整多云集群的 IOPS。
IOPS(仅限 AWS)
AWS 支持的 M30+ 集群提供用于预配 IOPS 的选项。
AWS 中的预配 IOPS 与标准 IOPS
通过预配置 IOPS 可以自定义集群的最大 IOPS 速率。它们还可以:
- 较之标准 IOPS,如此配置的 IOPS 速率更为稳定。 
- 降低集群的 p90 延迟(衡量服务器的响应时间)。90% 的服务器请求的响应速度快于 p90 延迟值,因此较低的 p90 延迟值通常意味着更快的响应时间。 
要详细了解使用预配 IOPS 与标准 IOPS 的优点,请参阅 经 Amazon EBS 优化的实例。请参阅以下摘要:
- 通用型 SSD 卷旨在在 99% 的时间内提供其基线性能。 
- 预配置的 IOPS 固态硬盘卷的目标是在 99.9% 的时间内提供预配置的性能。 
注意
更改 IOPS 预配会影响特征、性能和成本。选择 Provision IOPS 时,存储会从 General Purpose SSD(通用 SSD)卷更改为 Provisioned IOPS SSD(预配 IOPS SSD)卷。
配置 IOPS 速率
标准 IOPS
如果在创建 M30+ 层集群时未选择 Provision IOPS(预配 IOPS)选项,该集群则使用标准 IOPS。默认的标准 IOPS 速率会随集群存储容量的变化而变化。如果要预置精确的 IOPS 值,请启用预配功能。
M30+ 层级集群的最低标准 IOPS 为 3000。除非您将集群存储大小设置为 1TB 或更大,否则标准IOPS值将保持在 3000。如果您的 M30+ 集群的存储空间达到或超过 1TB,Atlas 会使用 IOPS 与存储比率 3:1 来提高标准 IOPS 速率,对于 AWS 网络存储卷最高可达 16k IOPS。
本地 NVMe 固态硬盘类集群必须使用标准 IOPS。
预调配 IOPS
仅 M30+ 层级 AWS 集群支持预配 IOPS。要为 M30+ 层级 AWS 集群预配 IOPS,请选择 Provision IOPS(预配 IOPS)并执行以下任一操作:
- 在文本框中指定准确的 IOPS 速率,或 
- 移动滑动条,直到文本框显示您的首选 IOPS 速率。 
注意
集群的可用预配 IOPS 范围与磁盘存储容量有关。更改集群的存储容量会更改可用预配 IOPS 的范围。
最小磁盘容量与内存的比率
Atlas 对给定的集群层强制实施以下最小比率。这样可以使集群性能与大型数据集保持一致。
大小为 M10 到 M40 的实例的磁盘容量与系统内存之比为 60:1。对于大于 M40 的实例,此比率则为 120:1。
例子
要支持 3 TB(或 3,072 GB)磁盘容量,请选择至少具有 32 GB RAM 的集群层。这将是 M50 或更大。
Atlas 对单个副本集有磁盘容量限制,对于更高的集群层可扩展到 4 TB。要将集群总存储空间扩展到默认限制以外,可以在项目设置中启用扩展存储。为适应未来的进一步扩展,可启用分片功能,以便实现长期扩展。
提示
要进一步了解每个云服务提供商的默认资源和可用配置选项,请参阅:
自动扩展集群层和存储容量
Atlas 集群层级响应式自动伸缩适用于 General 和 Low-CPU集群类下的所有专用集群层。
对于新集群,Atlas 会自动启用集群层自动伸缩和存储自动伸缩。
使用 Auto-scale(自动扩展)选项配置集群,以便根据集群使用情况自动扩展集群层、存储容量或两者。
重要
迁移期间,如果待恢复的快照大于目标集群的存储容量,则集群不会自动扩展。
您可以选择退出集群层和存储自动伸缩。要了解详情,请参阅 Atlas 如何扩展集群层和 Atlas 如何扩展集群存储。