MongoDB-数据库磁盘已满时被终止

MongoDB-数据库磁盘已满时被终止

我正在使用 MongoDB 3.6.5(已经在 3.2 / 3.4 上测试过)并且我已在/etc/mongo.conf

#mongod.conf

storage:
   dbPath: /var/lib/mongodb
   journal:
     enabled: true
   directoryPerDB: true

我为我的数据库创建了 LVM 磁盘,并将其符号链接到/var/lib/mongodb

问题如下:

当其中一个 lvm 已满时,它将终止mongod 服务,所以我无法使用其余的数据库,因为存储上有可用空间。因此,这将杀死我的主节点,随后杀死辅助节点。

有没有什么办法可以解决这个问题?

对你的帮助表示感谢!

答案1

根据您的需要,您可以创建一个大的 LVM 并将其安装到 /var/lib/mongodb并在大型 LVM 上创建文件夹。这将使所有数据库都可以访问全部容量。

另一种方法是为每个数据库过度配置单个 LVM。要么根据实际需要为 LVM 使用更多物理空间,要么利用 LVM 的精简池。
第一种方法非常静态,浪费空间。
使用精简池可以稍后根据需要添加物理存储。
这两种方法都需要良好的规划,但可能仍不能满足您的需求。当空间不足时,可能还需要调整 LVM 和文件系统的大小,这在生产系统中始终是一条关键路径。

我认为也可以运行多个实例mongodb这样,当空间不足时,应该只会影响单个实例。但我认为这也意味着在不同的端口上运行实例,这会使事情变得更加复杂。

另一个想法是切换到文件系统或者文件系统。这两种文件系统都采用与 LVM 类似的方法,但从卷中添加或删除空间要容易得多,而且您不必扩大/缩小文件系统。因此,它更加灵活,但代价是复杂性更高。

无论如何,您都希望使用 Nagios、Icinga2、Prometheus 或 TICK 堆栈或任何您想要使用的监控来监控空间使用情况。根据您的需要,您还可以在达到空间限制时运行脚本来处理这种情况。

对于我自己来说,我会选择第一个选项,只使用一个大的 LVM 并在其中创建文件夹。其次,我会选择文件系统或者文件系统因为这些文件系统使您能够轻松管理存储空间,而无需调整 LVM 和文件系统的大小。

相关内容