Linux

drbd 服務無法啟動/WFConnection

  • February 6, 2015

我最近將我的 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 初始化腳本自動啟用。

(來源: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,文件沒有說明模組中涉及我的配置 afaik 的部分更改。唯一的問題是我不能再在內部儲存元數據,因為整個 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 啟動的,如果沒有載入,它只會載入模組。

感謝您的任何提示或幫助,

問候比爾門

(原文: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

我知道這是一篇舊文章,但我想我會為那些想要/需要啟用 SELinux 的人提供一個解決方案。通過為 DRBD 創建本地 SELinux 策略來做到這一點。

如果您對“drbd_t”使用 ‘/var/log/audit/audit.log’ 進行 grep,您應該會看到一些錯誤;將這些錯誤傳送到“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 錯誤,您可以重新執行上述兩個命令來創建/安裝新的策略包,直到不再出現錯誤為止。

引用自:https://serverfault.com/questions/626466