此页面提供关于在裸机和虚拟化环境中为自管理 mongot (MongoDB Search 和 MongoDB 向量搜索进程) 部署选择存储的指导。
性能取决于整个存储系统(设备、控制器、主机、网络和文件系统)。在部署到生产环境之前,在代表性负载下验证所选的类。
为什么存储类很重要 mongot
mongot 基于 Apache Lucene 构建,它通过内存映射文件访问索引段,并依赖低延迟随机读取来服务于查询服务和后台索引维护。存储延迟会影响:
查询延迟。缓存丢失会在每个查询的关键路径上落到磁盘。
索引和复制吞吐量。段合并、初始同步和复制都会读取现有段并写入新段。仅写入假设不成立。
负载下的稳定性。随着文件系统缓存压力的增加,查询延迟会随着存储延迟非线性降级。
这些属性使存储类成为 mongot 部署的最具影响力的基础设施决策之一。
建议总结
生产
mongot索引存储默认使用专用本地 NVMe 固态硬盘。仅当 NVMe 不可用且工作负载较小到中等时,才可使用本地企业 SATA 或串行附加 SCSI (SAS) 固态硬盘(SSD)。
仅当全闪存 SAN 作为块设备呈现并在代表性混合读写负载下进行验证时,才可使用全闪存 SAN。
请勿使用:
NFS、NAS、SMB 或其他共享文件协议
将通用云固态硬盘用作生产索引层级
任何旋转媒体
存储类指导
下表汇总了每个存储类的建议。延迟和 IOPS 带反映了该类的常规公开基准。您的硬件可能会有所不同。您的结果可能会有所不同。
category | 存储类 | 随机读取延迟带 | 随机读取 IOPS 带宽 | 建议 |
|---|---|---|---|---|
推荐 | 本地 PCIe/NVMe 固态硬盘 | ~20-150 微秒 | 每个设备 170K+,可扩展到 1M+,在高端企业级驱动器上 | 生产环境的推荐默认值。最适合 Lucene 的随机读取配置文件。 |
可选的 | 本地企业 SATA/SAS 固态硬盘 | ~100-200 微秒 | 每个设备的范围为 ~95K-100K | 专用数据量上的中小工作负载的可接受基线。不建议用于延迟敏感或索引密集的部署。 |
可选的 | 全闪存 SAN、块设备(FC、iSCSI、NVMe-oF) | 在正常负载下小于一毫秒,但实际上因协议和网络而异。 | 在数组上达到 200K+,但实际吞吐量取决于完整的主机到数组路径 | 仅当在代表性负载下进行块挂载、全闪存和端到端验证时,才是可接受的第二选择。 |
不推荐 | 通用型云固态硬盘 (例如,面向启动的网络固态硬盘层级) | 个位毫秒 | 几千个基线 IOPS,可随预配进行扩展 | 适用于启动、开发、测试和广泛的交易使用。不适用于低延迟随机读取工作负载。 |
不推荐 | NFS、NAS、SMB 或其他共享文件协议 | 参见理由 | 参见理由 | 除了性能之外,还存在正确性风险:Lucene 已经记录了 NFS 上的文件锁定和缓存一致性故障。请勿使用。 |
不推荐 | HDD、吞吐量优化的 HDD、冷 HDD 或其他磁性媒体 | 5-10 毫秒 | 75-500 per volume | 明显慢于固态硬盘类媒体,并与 Lucene 的访问模式基本不匹配。 |
监控您的存储选择
将存储选择与监控相结合,尤其是当存储类不是本地 NVMe 时。
调查索引卷上持续磁盘 IOPS 高于 ~1K 的情况。健康操作不应该靠近设备的饱和点。
监控搜索页面故障高于约 1000/s,因为这些故障表明操作系统反复从磁盘拉取所需的索引页面,而不是从文件系统缓存中提供。连同升高的 IOPS,这表明关键路径上存储或内存压力过大。
当负载增加时,观察 p99 查询延迟是否呈非线性增长。存储受限的部署会急剧降级,而不是平稳降级。
如果在 SAN、通用或 SATA/SAS 部署上看到这些信号,请在扩展前重新检查存储类。如果在本地 NVMe 上看到这些信号,请首先查看文件系统缓存的内存余量以及卷是否真正专用于 mongot。