web-dev-qa-db-ja.com

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/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を発行しました

4
billdoor

私はこれが古い投稿であることを知っていますが、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つのコマンドを再実行して、エラーがなくなるまで新しいポリシーパッケージを作成/インストールできます。

2
Matt Kereczman

私は自分の質問に答えたくありませんが、centOSとdrbdに将来参加するすべての人にとって、selinuxは特定の必要なディレクトリへのアクセスを拒否するものです。 drbd用に正確に構成する必要のあるディレクトリはまだわかりませんが、selinuxをpermissive-modeに設定すると、少なくともdrbdのセットアップをテストできます。

SelinuxはEnterpriselinuxにのみ存在するセキュリティ機能であり、主にredhatとcentOSであるため、これがdebianが問題なく実行された理由でもあります。

3
billdoor

DRBD設定のデバイス部分をコメントアウトした理由はありますか?

それが次のようなものでない場合:

デバイス/ dev/drbd0;または/ dev/drbddisk;

0
gmck