我最近把我的drbd设置从Ubutnu迁移到了centos 7,我得到了一个奇怪的错误:
我可以正常地加载和卸载模块,整个事情似乎工作
#>modprobe drbd #>lsmod | grep drbd drbd 373504 2 ...
我现在可以发出drbdadm up drbdres命令,查看资源的状态,似乎一切正在运行。 我也可以卸载模块
#>rmmod drbd #>lsmod | grep drbd #>drbdadm cstate all 0: Failure: (127) Device minor not allocated ... #> lsmod | grep drbd drbd 373504 2 ...
所以我可以加载模块,drbdadm能够加载它,但不提供任何资源,而文档声称init脚本会这样做,所以drbd显然不会以这种方式初始化模块。
正常情况下,在/etc/init.d/drbd init脚本启动时,/etc/drbd.conf中configuration的所有资源都会自动启用。
(来源: http : //www.drbd.org/users-guide-8.3/s-enable-disable.html )
如果我尝试运行init.d脚本,我得到一个奇怪的错误:
#>/etc/init.d/drbd start script i get: Starting DRBD resources: sh: modinfo: command not found open(".") failed: permission denied #>
我能find发生这种情况的行:
$DRBDADM="drbdadm" ... out=$(&DRBDADM sh-nop 2>&1); ex=? [[ $ex = 127 ]] && exit 5 #LSB for "not installed" log_daemon_msg "Starting DRBD resources" if [[ $ex != 0 ]] ; then printf"\n%s\n" "$out" >&2 exit1 fi
我插入一行logging$前,它说“3”,所以这似乎意味着:
drbdadm sh-nop返回“open(”。“)失败:permission denied”错误“3”。
我无法找出这应该告诉我,运行
#>drbdadm sh-nop
不会在terminal中返回任何东西或写入我所知道的日志。 我也无法find打开(“。”)将被调用的任何文件中的一个点。
进出口远离在Linux上的专家,尤其是centOS /红帽,因为我习惯了debian,我可以告诉的是,Ubuntu 14.04在drbd83下的这种configuration运行良好。 我现在已经在centOS 7上切换到了drbd84,文档没有提到任何有关触摸我的configurationafaik的模块部分的更改。 唯一的问题是,我不能再将元数据存储在内部,因为整个drbd设备将作为磁盘交给虚拟机。
我希望这个错误在于“以debian方式来做事”,因为我找不到任何与drbd有关的configuration问题。
我会追加我的configuration:
global { usage-count no; } common { syncer { rate 100M; } } resource drbdres { device minor 0; net { protocol C; } startup { wfc-timeout 0; degr-wfc-timeout 60; } disk { on-io-error detach; } #NODES on node1 { disk /dev/mapper/vmachines-lvdrbd; # device drbddisk; address 192.168.8.133:7788; meta-disk /dev/mapper/vmachines-lvdrbdMeta; #!internal } on node2 { disk /dev/mapper/vmachines-lvdrbd; # device drbddisk; address 192.168.8.132:7788; meta-disk /dev/mapper/vmachines-lvdrbdMeta; #!internal } }
如果我附加我的第二个主机来testing设置,无论这些问题,都启动drbd,并卡住状态“WFConnection”,他们为其他主机configuration的IP地址是正确的,所以我假设服务确实不是由drbdadm启动,它只是加载模块,如果它没有加载。
感谢任何提示或帮助,
关心BillDoor
(原文: https : //stackoverflow.com/questions/25680702/centos-7-drbd-cannot-start-service )
编辑:
我configuration的存储库:
Centos7 base ELrepo e17 Centos7 extras centos7 updates
我安装了软件包:
drbd84-utils.x86_64 drbd84-utils-sysvinit.x86_64 kmod-drbd.x86_64
我发出yum install drbd84安装drbd
我知道这是一个旧post,但我想我会为那些想要/需要SELinux的用户提供一个解决scheme。 通过为DRBD创build本地SELinux策略来执行此操作。
如果你grep的“/var/log/audit/audit.log”为“drbd_t”,你应该看到一些错误; 将这些错误pipe理到“audit2allow”将允许您生成一个新的SELinux策略包,允许之前被拒绝的操作。 然后你可以用'semodule -i'来安装这个策略:
# grep drbd_t /var/log/audit/audit.log | audit2allow -M drbdlocal ******************** IMPORTANT *********************** To make this policy package active, execute: semodule -i drbdlocal.pp # semodule -i drbdlocal.pp
如果遇到另一个SELinux错误,可以重新运行上述两个命令来创build/安装一个新的策略包,直到没有更多的错误。
我讨厌回答我自己的问题,但是对于所有未来的新手来说,centos和drbd,selinux是拒绝我访问某些必要目录的人。 我还没有发现我需要为drbdconfiguration什么目录,但是将selinux设置为permissive-mode让我至less可以testingdrbd设置!
这也是debian运行没有任何问题的原因,因为selinux是一个安全特性,只存在于企业Linux中,所以主要是redhat和centOS。
是否有一个原因,你已经注释掉你的设备部分DRBDconfiguration?
应该不是这样的:
设备/ dev / drbd0; 或/ dev / drbddisk;