はじめに
以前よりNextcloudを構築・運用しており、「1ミリもデータを無くしたくない!」という思いから、その保存用HDDの冗長化の過程を備忘録としてまとめたものになります。
昨今では、「そろそろ南海トラフがくる!」と騒がれて止まないのと、メインHDDがぶっ壊れたても大丈夫なように、名古屋⇔北海道間でバックアップ体制の構築を行いました。
自分的メモのため、詳しくは書いていませんが、ご参考程度にどうぞ。
構成
・DRBDのバージョン:9.0
・各ノードのOS:Ubuntu 22.04 LTS
・ノード1(192.168.100.1
, Proxmox上のVM)
・ホスト名:node-1
・ノード2(192.168.100.2
, Raspberry Pi 4B)
・ホスト名:node-2
以下、全てホスト名で書いていきます。
リージョン間のバックボーンネットワークは、OCI上に構築済みのWireguardを利用しており、各リージョン間で通信できるようになっています。(ちなみに、実家や兄弟の家などを含め、全てWireguardのバックボーンネットワークに接続・通信できるようになっています。)
使用しているHDDは、下記。
https://www.amazon.co.jp/dp/B07BK6696F?psc=1&ref=ppx_yo2ov_dt_b_product_details
DRBDのインストール
node-1, node-2で実行する
# リポジトリの追加
$ sudo add-apt-repository ppa:linbit/linbit-drbd9-stack
# リポジトリのアップデート
$ sudo apt update
# 構築に必要なDRBDをインストール
$ sudo apt install drbd-utils drbd-dkms -y
# カーネルモジュールのロード
$ sudo modprobe drbd
# インストールできたか確認
$ cat /proc/drbd
冗長化するディスクの準備・初期設定
node-1, node-2で実行
# fdiskなどで、対象のHDDのデバイス名を調べておいてください。
# 今回は「/dev/sda」としますが、各自で適当なデバイス名に置き換えてください。
$ sudo pvcreate /dev/sda
Physical volume "/dev/sda" successfully created.
$ sudo vgcreate vg0 /dev/sda
Volume group "vg0" successfully created
$ sudo lvcreate -l100%FREE -n lv0 vg0
Logical volume "lv0" created.
作成できたか確認
$ lsblk
ホスト名の確認(node-1, node-2)
$ uname -n
node-1
node-1, node-2で実行
$ sudo tee /etc/drbd.d/global_common.conf <<EOF > /dev/null
global {
usage-count no;
}
common {
net {
protocol C;
}
}
EOF
node-1,node-2で実行
$ sudo tee /etc/drbd.d/r0.res <<EOF > /dev/null
resource r0 {
device /dev/drbd0;
disk /dev/vg0/lv0;
meta-disk internal;
on <node-1のホスト名> {
address 192.168.100.101:7789;
}
on <node-2のホスト名> {
address 192.168.100.102:7799;
}
}
EOF
node-1,node-2で実行
# メタデータの作成
$ sudo drbdadm create-md r0
# DRBDの起動
$ sudo drbdadm up r0
# statusの確認
$ sudo drbdadm status r0
この時点では、起動しただけで同期は始まらないので、下記のコマンドをnode-1
で実行します。
$ sudo drbdadm primary --force r0
同期まで時間がかかるので、待機
もし、どちらのHDDにも何もデータがない場合は、初回フル同期はスキップすることができます。
その場合は、$ sudo drbdadm primary --force r0
ではなく、下記のコマンド(node-1
で実行)を使ってください。(公式ドキュメント)
$ sudo drbdadm new-current-uuid --clear-bitmap r0
備考
追記があれば、適宜追記していきます。