web-dev-qa-db-ja.com

CentOS 7.3でDRBD 8.4を使用してdrbdadmを実行できない

ノード:

  • node1
  • node2

両方のノードにこの方法でインストールされたDRBDを使用します。

_rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
yum -y install drbd84-utils kmod-drbd84
_

新しいハードディスクを追加し、両方のノードでパーティションを作成します。

_fdisk /dev/sdb
_

次に、パーティションをフォーマットします。

_mkfs.ext4 /dev/sdb
_

(node2で失敗したため、削除して新しいディスクを追加すると_/dev/sdc_になります。フォーマット済みです。)

公式ガイドに従って、両方のノードで基本リソースを構成します。

http://docs.linbit.com/docs/users-guide-8.4/p-build-install-configure/#ch-configure

両方のノードで_/etc/drbd.d/r0.res_を作成:

_resource r0 {
    protocol C;
    on node1 {
            device /dev/drbd0;
            disk /dev/sdb;
            address 192.168.0.1:7789;
            meta-disk internal;
    }
    on node2 {
            device /dev/drbd0;
            disk /dev/sdc;
            address 192.168.0.2:7789;
            meta-disk internal;
    }
}
_

両方のノードでiptablesを編集します。

_iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7788 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7799 -j ACCEPT
service iptables save
_

両方のノードでデータを初期化します。

_drbdadm create-md r0
_

大丈夫。

リソースを両方のノードに配置します:_drbdadm up r0_

node1:

_Device '0' is configured!
Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 20
_

node2:

_??: Failure: (162) Invalid configuration request
additional info from kernel:
minor exists in different resource
Command 'drbdsetup-84 new-minor r0 0 0' terminated with exit code 10
_

どちらも問題が発生しました。

両方のノードで_cat /proc/drbd_を実行します。

node1:

_version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----s
    ns:0 nr:0 dw:0 dr:912 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2097052
_

node2:

_version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
 0: cs:WFConnection ro:Secondary/Unknown ds:Diskless/DUnknown C r----s
    ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
_

PrimaryおよびSecondary不明。

Node1で_drbdadm connect all_を実行します。

_r0: Failure: (125) Device has a net-config (use disconnect first)
Command 'drbdsetup-84 connect r0 ipv4:192.168.0.1:7789 ipv4:192.168.0.2:7789 --protocol=C' terminated with exit code 10
_

Node2で_drbdadm -- --discard-my-data connect all_を実行します。

_r0: Failure: (102) Local address(port) already in use.
Command 'drbdsetup-84 connect r0 ipv4:192.168.0.1:7789 ipv4:192.168.0.2:7789 --protocol=C --discard-my-data' terminated with exit code 10
_

それを使用することの何が問題になっていますか?


編集1

両方のノードでdd if=/dev/zero of=/dev/sdb(sdc) bs=1M oflag=direct status=progressを実行した後、_drbdadm up r0_を正常に実行することもできません。

node1

_No valid meta data found
Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 255
_

node2

_??: Failure: (162) Invalid configuration request
additional info from kernel:
minor exists in different resource
Command 'drbdsetup-84 new-minor r0 0 0' terminated with exit code 10
_

編集2

この時点で、両方のノードで_systemctl start brdb_を実行しましたが、すべてが保留になりました。しばらく待っても結果は返りません。

そして_lsblk -a_を実行しました:

_NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   10G  0 disk
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0    9G  0 part
  ├─cl-root 253:0    0    8G  0 lvm  /
  └─cl-swap 253:1    0    1G  0 lvm  [SWAP]
sdb           8:32   0   16G  0 disk
sr0          11:0    1 1024M  0 rom
drbd0       147:0    0    2G  0 disk
_
1
cloud_cloud

DRBD(sdbおよびsdc);のバッキングディスクにファイルシステムを作成したくない場合。最初にDRBDを作成し、次に、作成されたDRBDデバイスをファイルシステムでフォーマットします。それは別の方法で行うことができますが、その後、バッキングパーティションを拡大するか、DRBDのスペースを作るためにファイルシステムのサイズを減らす必要がありますメタデータ(内部メタデータを使用する場合、ブロックデバイスの最後にあります)。

プロセスは次のようになります。

-上記で行ったようにすべてのソフトウェアをインストールします。

-両方のノードでパーティションをゼロにする(オプションですが、実行します):

# dd if=/dev/zero of=/dev/sdb bs=1M oflag=direct status=progress
# dd if=/dev/zero of=/dev/sdc bs=1M oflag=direct status=progress

-上記と同じように、DRBDリソースの構成ファイルを作成します。

-上記で行ったようにファイアウォールルールを追加します(構成で使用されていないため、ポート7799は実際には必要ありません)。

-バッキングブロックデバイスでDRBDのメタデータを作成し、両方のノードでr0を起動します。

# drbdadm create-md r0
# drbdadm up r0
# cat /proc/drbd

-cat /proc/drbdの出力を確認すると、デバイスがConnectedSecondary/Secondary、およびInconsistent/Inconsistentであることがわかります。それらのいずれかが[〜#〜] not [〜#〜] true、[〜#〜] stop [〜#〜]である場合、何かが正しくありません。

-次に、いずれかのノード(両方ではない)を選択し、強制的にプライマリにします(DRBDでは、Inconsistentデータのあるノードでプライマリに移行できません)。FSを作成します。

# drbdadm primary r0 --force
# mkfs.ext4 /dev/drbd0

次に、/dev/drbd0または/dev/sdaを使用するのと同じように、/dev/sdcを使用します。自分がやっていることに自信がない限り、/dev/sdb/dev/sdcに触れないでください。 DRBDのバッキングディスクに触れると、DRBDが認識しない不整合が発生する可能性があります(verifyを実行するか、ブロックを上書きするまで)。

LINBITのドキュメントを読んでください。 DRBDは明らかに優れたツールであり、基本を理解すれば簡単に使用できますが、ストレージを扱うため、永続的な方法で混乱させる余地がたくさんあります。

5
Matt Kereczman