過去に一度、PBS は諦めた。ただ、その時は DeskMini のメモリーの相性に問題があったのが原因なので、今の環境で再度試してみる。
といいつつも新規に PC を調達するのは無駄なので、公式では推奨されていないけど仮想マシンに PBS をインストールする。ちなみに各ホストともメモリーは 32GB に増設済み。
ついでに、DS118 は iSCSI にも対応しているから、NFS じゃなく iSCSI を使ってみる。本来は PBS 用の物理マシンを用意して、ストレージもローカル(SSD)が望ましいけど自鯖だから良しとする。
NFS をストレージにする場合はこちらのサイトなどを参考に。
DS118 の設定(iSCSI Target サービスの開始)
Synology のサイトを見ながら設定した。
で、いきなりつまずいたのが SAN Manager 。NFS はコントロールパネルのファイルサービスから有効化できるけど、iSCSI はメニューに無い。どこにあるんだろうと少し探してみたらパッケージセンターにあった(画像はインストール後)。DS118 を全然使いこなしてないのがバレバレ。

最初の画面はこんな感じ。

LUN をクリックして「作成」。

LUN のプロパティを設定する。サイズは後から小さくすることはできないから注意。
必要事項を入力して次へ。

そのまま次へ。

LAN 内の全てのイニシエータを許可するからそのまま次へ。

設定の確認。

LUN の設定完了画面。ステータス「正常」で以下、設定どおりになっているハズ。

続いて iSCSI を作成する。

名前はご自由に。CHAP は自宅 LAN の閉じられた環境なので今回はチェックしない。次へ。

既存の LUN にマッピングする。

設定を確認して完了。

Proxmox Backup Server の設定
インストール手順は割愛。以下のサイトをご覧ください。
PBS で外部ストレージの iSCSI を使うのは冒頭のとおり本来の推奨構成じゃない。そのせいなのか GUI の設定画面はなく、基本的にコマンドラインで設定する。次のサイトが分かりやすかった。
PBS と iSCSI(DS118)の接続テスト
DS118 の IP アドレスは 192.168.1.11。iscsiadm を実行すると次の2行が表示される。
root@pbs:~# iscsiadm -m discovery -t st -p 192.168.1.11
192.168.1.11:3260,1 iqn.2000-01.com.synology:DS118.Target-1.123456ABCDE
[fe80::9209:d0ff:fe0c:6267]:3260,1 iqn.2000-01.com.synology:DS118.Target-1.123456ABCDE
最初のコマンドで /etc/iscsi/nodes/iqn.2000-01.com.synology:DS118.Target-1.123456ABCDE/192.168.1.11,3260,1 のディレクトリが作られる。後で、この中のファイル default を編集する。
2つ目のコマンドでターゲットに接続できることを確認(ctrl + c で抜ける)。
root@pbs:~# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2000-01.com.synology:DS118.default-target.c86fb5b741b, portal: fe80::9209:d0ff:fe0c:6267,3260]
Logging in to [iface: default, target: iqn.2000-01.com.synology:DS118.default-target.c86fb5b741b, portal: 192.168.1.11,3260]
^Ciscsiadm: caught SIGINT, exiting...
★ctrl+c で抜けた後logoutする場合は以下。
root@pbs:~# iscsiadm --mode node --logoutall=all
Logging out of session [sid: 4, target: iqn.2000-01.com.synology:DS118.default-target.c86fb5b741b, portal: 192.168.1.11,3260]
Logout of [sid: 4, target: iqn.2000-01.com.synology:DS118.default-target.c86fb5b741b, portal: 192.168.1.11,3260] successful.
root@pbs:~#
3つ目のコマンドで tcp の session が確立していることを確認。
root@pbs:~# iscsiadm -m session -o show
tcp: [1] 192.168.1.11:3260,1 iqn.2000-01.com.synology:DS118.Target-1.123456ABCDE (non-flash)
root@pbs:~#
パーティションの確認。ターゲットのデバイスが sdb として 500GB で認識されている。
root@pbs:~# cat /proc/partitions
major minor #blocks name
8 0 33554432 sda
8 1 1007 sda1
8 2 524288 sda2
8 3 33029103 sda3
253 0 4063232 dm-0
253 1 24903680 dm-1
8 16 524288000 sdb
root@pbs:~#
iSCSI が起動時に有効になるよう、 ファイル default を編集する。
root@pbs:~# vi /etc/iscsi/nodes/iqn.2000-01.com.synology\:DS118.Target-1.123456ABCDE/192.168.1.11\,3260\,1/default
次の2行を manual から automatic に変更
node.startup = automatic
node.conn[0].startup = automatic
/etc/iscsi/iscsid.conf も同様に。
root@pbs:~# vi /etc/iscsi/iscsid.conf
次の行を manual から automatic に変更
node.startup = automatic
ZFS pool の作成
例では backups という名称の ZFS pool を作成する。次の例は /mnt/datastore/backups にマウントする場合。
root@pbs:~# zpool create -f -m /mnt/datastore/backups backups /dev/sdb
root@pbs:~# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backups 496G 106K 496G - - 0% 0% 1.00x ONLINE -
root@pbs:~#
PBS 管理画面にログインしてストレージ/ディスクの ZFS を確認すると backups という名前で pool が作成、ONLINE であることが確認できる。

ここで PBS を再起動してみると、pool は消える。
このままだと PBS を再起動する度に手動で pool を追加しないとダメなので、ZFS service を作る。
最初に、次のコマンドでディスクを決定する(例では1行目)。
root@pbs:~# systemctl list-units --all --full | grep disk | grep 192.168.1.11
dev-disk-by\x2dpath-ip\x2d192.168.1.11:3260\x2discsi\x2diqn.2000\x2d01.com.synology:DS118.Target\x2d1.123456ABCDE\x2dlun\x2d1.device loaded active plugged Storage
dev-disk-by\x2dpath-ip\x2d192.168.1.11:3260\x2discsi\x2diqn.2000\x2d01.com.synology:DS118.Target\x2d1.123456ABCDE\x2dlun\x2d1\x2dpart1.device loaded active plugged Storage backups
dev-disk-by\x2dpath-ip\x2d192.168.1.11:3260\x2discsi\x2diqn.2000\x2d01.com.synology:DS118.Target\x2d1.123456ABCDE\x2dlun\x2d1\x2dpart9.device loaded active plugged Storage 9
続いて pool "backups" をインポートするため、pbsbks-pool.service(名称は参考サイトのまま)を作る。device の名称が長いから自分の環境に合わせてコピペ推奨。
root@pbs:~# vi /etc/systemd/system/pbsbks-pool.service
[Unit]
After=dev-disk-by\x2dpath-ip\x2d192.168.1.11:3260\x2discsi\x2diqn.2000\x2d01.com.synology:DS118.Target\x2d1.123456ABCDE\x2dlun\x2d1.device
[Service]
ExecStart=/usr/sbin/zpool import backups
ExecStartPost=/usr/bin/logger "started ZFS pool backups"
RemainAfterExit=yes
[Install]
WantedBy=dev-disk-by\x2dpath-ip\x2d192.168.1.11:3260\x2discsi\x2diqn.2000\x2d01.com.synology:DS118.Target\x2d1.123456ABCDE\x2dlun\x2d1.device
systemctl でサービスを登録、実行する。
root@pbs:~# systemctl daemon-reload
root@pbs:~# systemctl enable pbsbks-pool
Created symlink /etc/systemd/system/dev-disk-by\x2dpath-ip\x2d192.168.1.11:3260\x2discsi\x2diqn.2000\x2d01.com.synology:DS118.Target\x2d1.123456ABCDE\x2dlun\x2d1.device.wants/pbsbks-pool.service → /etc/systemd/system/pbsbks-pool.service.
root@pbs:~# systemctl restart pbsbks-pool
PBS を再起動して backups が出来ていたらOK。
datastore の作成
ここからは PBS の管理画面で設定する。画面左ペインから「データストア追加」をクリックして必要情報を入力する。名称はご自由に。Backing Path は作成した zpool の /mnt/datastore/backups(絶対パス)。Prune オプションは後から作成した datastore の設定画面で変更可能。
データストアの削除は CUI で(root@pbs:~# proxmox-backup-manager datastore remove datastore)。


DS118 の SAN Manager で確認すると正常に動作している。

PVE の設定
データセンターのストレージから Proxmox Backup Server を選択して追加する。2段階認証を設定している場合は、PBS 側で API Token の設定を忘れずに。

PBS で API token を追加
最初に PBS で普通にユーザーを追加する。画像の例では user というユーザーで、2段階認証の設定済み。
root だけで運用することもできるけどお勧めはしない。

続いて API トークンを追加する。このとき、慌てて画面を閉じないように注意。APIトークンのシークレット値が表示されるのでコピーしておくこと。あとで、PVE にストレージを追加するときのパスワードになる。


user@pbs に datastore に対するアクセス権限を付与する。ロールは DatastoreAdmin。
この権限を継承する形で、API トークンにも同じように権限を付与する。
新規ユーザーを追加せず、トークン root@pam!token を作って権限を与えることでも可能。

これで PBS 側の基本的な設定は終了。バックアップを何世代残すか等の運用方法は適宜設定を。
PVE 側で PBS を追加
管理画面のデータセンターのストレージから Proxmox Backup Server を追加する。
ID は区別しやすい名前でOK。サーバー欄には PBS の IP アドレスを入力。ユーザー名は先に PBS で追加した API トークンの user@pbs!token。パスワードはコピーしておいたシークレット値。Datastore 欄は PBS で追加したデータストアの名称(datastore) 。入力間違いさえなければ各ノードのストレージに PBS が出てくる。

注意
今回は PBS を仮想マシンとして追加している。この状態で PBS を iSCSI へのバックアップ対象として設定するとエラーになった。NFS へのバックアップには仮想マシンとしての PBS を含めても大丈夫。ローカルのデバイスではない iSCSI は含まれずにバックアップされる。
停電時の動作は少し気になる。PBS のイニシエータが停止してからターゲットの DS118 がシャットダウンを開始すればいいだろうということで、DS118 だけシャットダウンの開始を他より10秒遅らせて130秒にしてみた。
ということで、しばらく NFS へのバックアップと iSCSI への PBS によるバックアップの2種類で運用してみる。どっちも DS118 のストレージに対して実行するから無駄な設定といえばそのとおりだけど、自鯖だから誰にも迷惑をかけずに試してみることができるのは何かと便利。
コメント