drbd 服务无法启动/WFConnection

drbd 服务无法启动/WFConnection

我最近将我的 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/drbd.conf 中配置的所有资源都会在系统启动时由 /etc/init.d/drbd init 脚本自动启用。

(来源: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
#>

我能够找到发生这种情况的行:

$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

我插入了一行来记录 $ex 并且它显示“3”,所以这似乎意味着:

drbdadm sh-nop 返回“open(.) failed: permission denied”,即错误“3”。

我不知道这应该告诉我什么,运行

#>drbdadm sh-nop

没有在终端中返回任何内容,也没有写入我所知道的日志。我也无法在任何文件中找到调用 open(“.”) 的位置。

我远非 Linux 专家,尤其是 centOS/redhat,因为我习惯使用 debian,我只能说 Ubuntu 14.04 在 drbd83 下使用此配置运行良好。我现在已经切换到 centOS 7 上的 drbd84,据我所知,文档没有提到模块部分与我的配置相关的更改。唯一的问题是我无法再将元数据存储在内部,因为整个 drbd 设备将作为磁盘交给虚拟机。

我希望错误出在我“按照 debian 方式做事”上,因为我找不到 drbd 的任何配置问题。

我将附加我的配置:

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
    }
}

如果我连接我的第二台主机来测试设置,不管这些问题如何,都启动 drbd,并卡在“WFConnection”状态,它们为其他主机配置的 ip 地址是正确的,所以我假设该服务确实不是由 drbdadm 启动的,如果模块未加载,它只会加载该模块。

谢谢您的任何提示或帮助,

问候 BillDoor

(原来的:https://stackoverflow.com/questions/25680702/centos-7-drbd-cannot-start-service

编辑:

我配置的存储库:

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 的任务

答案1

我知道这是一篇老帖子,但我想为那些想要/需要启用 SELinux 的人提供一个解决方案。通过为 DRBD 创建本地 SELinux 策略来实现这一点。

如果您在“/var/log/audit/audit.log”中查找“drbd_t”,则应该会看到一些错误;将这些错误导入“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 错误,您可以重新运行上述两个命令来创建/安装新的策略包,直到没有更多错误。

答案2

我讨厌回答自己的问题,但对于所有未来的 centOS 和 drbd 新手来说,selinux 就是拒绝我访问某些必要目录的人。我还没有发现我到底需要为 drbd 配置哪些目录,但设置selinux 到宽容模式至少让我测试一下 drbd 设置!

这也是为什么 debian 运行时没有任何问题的原因,因为 selinux 是仅存在于 Enterpriselinux 中的安全功能,因此主要存在于 redhat 和 centOS 中。

答案3

您注释掉 DRBD 配置的设备部分有什么原因吗?

那不应该是这样的吗:

设备 /dev/drbd0;或 /dev/drbddisk;

相关内容