由于MongoDB的索引是指向磁盘上位置的指针,所以在磁盘上移动块数据时,O/S是否会破坏这些索引?即碎片整理或RAID再平衡。
发布于 2018-02-04 20:43:40
磁盘上存储格式的实现因存储引擎的不同而不同,但在MongoDB 3.6中,索引引用磁盘文件中的位置,而不是指向块设备的原始指针。在文件系统或设备级别上的块更改不需要对MongoDB的内部数据文件结构进行更改。
但是,对于在MongoDB (或其他应用程序)活动的文件系统上运行碎片整理或RAID再平衡实用程序,我会非常谨慎。存储维护将有很大的性能开销。根据您的环境(O/S、文件系统和所使用的实用程序),碎片整理活动文件系统还可能需要文件锁定,这可能会干扰运行中的应用程序。
如果您的目标是碎片整理以重新获得MongoDB数据文件中的空间或效率,则推荐的方法是使用副本集部署(或由副本集支持的切分群集),在这里您可以同时使用重新同步一个备用。重新同步辅助文件和索引将重建数据文件和索引,并且可以作为一个在线过程来完成,前提是您与副本集中的其他包含数据的成员拥有足够的容错性。
还请注意,MongoDB生产部署不建议使用RAID 5。根据MongoDB生产备注,RAID 10被推荐用于最佳RAID性能。
https://stackoverflow.com/questions/48608912
复制相似问题