0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DRBD9で分散ストレージを手短に構築したよって話

Posted at

はじめに

以前より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

備考

追記があれば、適宜追記していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?