将MongoDB dbpath移动到AWS EBS设备

时间:2015-09-18 20:04:10

标签: mongodb amazon-web-services amazon-ec2 docker

我通过AWS使用CentOS 7。

我希望将MongoDB数据存储在附加的EBS而不是默认的/ var / lib路径上。

但是,当我编辑 Grade2z = as.data.frame(scale(Grade2[ ,c(1,9:14)]))#create new dataframe that ONLY has the scaled CBM and aR scores colnames(Grade2z) = c("Fallz", "Winterz", "Springz", "aRFallz", "aRWinterz", "aRSpringz") Grade2 = merge(Grade2, Grade2z) 以指向新的 dbpath 时,我收到了拒绝权限错误。

权限已正确设置为目录上的mongod.mongod。

是什么给出了?

1 个答案:

答案 0 :(得分:0)

TL; DR - 问题是SELinux,它影响守护进程可以访问的内容。运行setenforce 0暂时停用。

您正在使用一种使用SELinux的Linux。

来自维基百科:

  

SELinux可以控制系统允许的活动   用户,进程和守护进程,具有非常精确的规范。然而,   它主要用于限制守护进程[需要引用],如数据库   具有更明确定义的数据访问权限的引擎或Web服务器   活动权利。这限制了受限守护进程的潜在危害   这会变得妥协。普通的用户进程经常在   无限制域,不受SELinux限制,但仍受限制   经典的Linux访问权限

暂时修复:

sudo setenforce 0

这应该禁用SELinux策略并允许服务运行。

永久修复:

修改/etc/sysconfig/selinux并设置:

SELINUX=disabled

然后重启。

该服务现在应该可以正常启动。

数据目录也适用于Docker,例如:

docker run --name db -v /mnt/path-to-mounted-ebs:/data/db -p 27017:27017 mongo:latest

警告:两种解决方案都禁用SELinux提供的安全性,这会削弱您的整体安全性。更好的解决方案是了解SELinux的工作原理,并在与mongod一起使用的新数据目录上创建策略。有关更完整的教程,请参阅https://wiki.centos.org/HowTos/SELinux