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 初始化腳本自動啟用。
(來源: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 錯誤,您可以重新執行上述兩個命令來創建/安裝新的策略包,直到不再出現錯誤為止。