mongodb 集群无法启动原因不明(据推测,可能是机房断电,或者是云平台升级造成的)出现以下问题:
[root@BCI00001c95 bin]# ./mongod -f /opt/mongodb/config/shard.cnf
about to fork child process, waiting until server is ready for connections.
forked process: 30467
all output going to: /opt/mongodb/data/shard11.log
can't open [/opt/mongodb/data/shard11.log] for log file: errno:30 Read-only file system
Bad logpath value: "/opt/mongodb/data/shard11.log"; terminating.
ERROR: child process failed, exited with error number 1
很明显是文件系统只读造成,无法使mongod操作日志文件。
所以并不是mongo的问题,应该是文件系统的问题。
所以需要修复文件系统无法写操作的问题。
修复方式有很多。
1、先umount掉mongodb当前所在挂载点,
例如我的在/opt下
执行: umount /opt
再重新挂载执行: mount -a
在执行umount 操作中可能会出现如下问题
umount /opt : device is busy.(In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
这里需要查看下那个进程还在启动。
两种方法都可以查看:
lsof|grep /opt
fuser -m /opt
找到进程,然后kill -9 XXXX,杀掉即可。
再尝试启动mongod
2、以读写方式重新挂载文件系统,这个我并没有实践,因为我第一种方法就解决了问题。
mount -o remount rw /dev/vdc
dev/vdc 是我挂载的磁盘
提示: 如果该机器上有重要文件,在重新加载文件系统前 将重要文件备份到其他机器,SCP命令还是可以执行的。
如果还不行 可以唱是 fsck 检查修复磁盘,如果有非常重要的数据,建议先备份!