ノード:
両方のノードにこの方法でインストールされた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
_
それを使用することの何が問題になっていますか?
両方のノードでdd if=/dev/zero of=/dev/sdb(sdc) bs=1M oflag=direct status=progress
を実行した後、_drbdadm up r0
_を正常に実行することもできません。
_No valid meta data found
Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 255
_
_??: 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
_
この時点で、両方のノードで_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
_
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
の出力を確認すると、デバイスがConnected
、Secondary/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は明らかに優れたツールであり、基本を理解すれば簡単に使用できますが、ストレージを扱うため、永続的な方法で混乱させる余地がたくさんあります。