Недавно я перенес свою установку 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 может загрузить его, но не вызывает никаких ресурсов, в то время как документы утверждают, что сценарий инициализации сделает это, поэтому 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. Теперь я перешел на drbd84 на CentOS 7, в документации ничего не говорится об изменениях в частях модуля, которые касаются моей конфигурации 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, он просто загружает модуль, если он не загружен.
Спасибо за любые подсказки или помощь,
С уважением 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
Ненавижу отвечать на свой вопрос, но для всех будущих новичков в CentOS и drbd именно selinux отказывает мне в доступе к определенным необходимым каталогам. Я еще не обнаружил, какие именно каталоги мне нужно настроить для drbd, но установка selinux в разрешающий режим позвольте мне хотя бы проверить настройку drbd!
Это также является причиной того, что debian работал без каких-либо проблем, поскольку selinux - это функция безопасности, присутствующая только в Enterpriseiselinux, поэтому в основном это redhat и centOS.
Я знаю, что это старый пост, но я думал, что предоставлю решение для тех, кто хочет / нуждается в включенном SELinux. Сделайте это, создав локальную политику SELinux для DRBD.
Если вы введете команду «/var/log/audit/audit.log» для поиска «drbd_t» с помощью 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, вы можете повторно запустить две вышеуказанные команды для создания / установки нового пакета политики, пока у вас не исчезнет больше ошибок.
Есть ли причина, по которой вы закомментировали часть конфигурации DRBD, относящуюся к устройству?
Не должно ли это быть что-то вроде:
устройство / dev / drbd0; или / dev / drbddisk;