最近、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/drbdinitスクリプトによって自動的に有効になります。
(出典: 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:permissiondenied」を返します。これはエラー「3」です。
これが何を教えてくれるのかわからない、走っている
#>drbdadm sh-nop
ターミナルに何も返さないか、私が知っているログに書き込みません。また、open( "。")が呼び出されるファイル内のポイントを見つけることができません。
Linuxの専門家、特にdebianに慣れているcentOS/redhatからはほど遠いですが、Ubuntu14.04がdrbd83でこの構成でうまく機能したことがわかります。私はcentOS7でdrbd84に切り替えましたが、ドキュメントには、私の構成に影響を与えるモジュールの部分の変更については何も書かれていません。唯一のことは、drbdデバイス全体がディスクとして仮想マシンに渡されるため、メタデータを内部に保存できなくなったことです。
Drbdの設定に関する問題が見つからないため、エラーが「debianのやり方でやっている」ことにあることを願っています。
私は私の設定を追加します:
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
}
}
これらの問題に関係なく、2つ目のホストを接続してセットアップをテストすると、両方が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
drbdをインストールするためにyum install drbd84
を発行しました
私はこれが古い投稿であることを知っていますが、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エラーが発生した場合は、上記の2つのコマンドを再実行して、エラーがなくなるまで新しいポリシーパッケージを作成/インストールできます。
私は自分の質問に答えたくありませんが、centOSとdrbdに将来参加するすべての人にとって、selinuxは特定の必要なディレクトリへのアクセスを拒否するものです。 drbd用に正確に構成する必要のあるディレクトリはまだわかりませんが、selinuxをpermissive-modeに設定すると、少なくともdrbdのセットアップをテストできます。
SelinuxはEnterpriselinuxにのみ存在するセキュリティ機能であり、主にredhatとcentOSであるため、これがdebianが問題なく実行された理由でもあります。
DRBD設定のデバイス部分をコメントアウトした理由はありますか?
それが次のようなものでない場合:
デバイス/ dev/drbd0;または/ dev/drbddisk;