メインコンテンツへスキップ

iSCSIからPostgreSQLのデータを回収する【おうちK8s復旧シリーズ #1】

·990 文字·2 分
Development kubernetes postgresql iscsi おうちインフラ シリーズ
目次
おうちK8s復旧シリーズ - この記事は連載の一部です
パート : この記事

これまでのあらすじ
#

おうち K8s の証明書が切れちゃったので入れ替えをしていたら更新に失敗して control plane に接続できなくなってしまった!
試行錯誤していたらどうしようもなくなったので大事なデータだけ復旧してクラスターを作り直そう!

復旧の記録(復旧に手をつけるまで半年放置しています)
#

open-iscsiのインストール
#

ubuntu に open-iscsi を入れる

sudo apt update
sudo apt install open-iscsi

iSCSI LUNの発見
#

discovery できた

$ sudo iscsiadm -m discoverydb -t st -p 192.168.2.1 --discover
192.168.2.1:3260,1 iqn.2000-01.com.synology:*****.pvc-7f1f9439-d1f5-4826-89e5-5eebbbbe4daf
192.168.2.1:3260,1 iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee
192.168.2.1:3260,1 iqn.2000-01.com.synology:*****.pvc-4ae52490-ffb9-4320-ac51-f98ab08c733a
192.168.2.1:3260,1 iqn.2000-01.com.synology:*****.pvc-3fe54bf4-9c71-47a4-a24c-8b626ba3a59a

邪魔なものは消しておく

$ sudo iscsiadm -m node -T iqn.2000-01.com.synology:*****.pvc-7f1f9439-d1f5-4826-89e5-5eebbbbe4daf --op=delete
$ sudo iscsiadm -m node -T iqn.2000-01.com.synology:*****.pvc-4ae52490-ffb9-4320-ac51-f98ab08c733a --op=delete
$ sudo iscsiadm -m node -T iqn.2000-01.com.synology:*****.pvc-4ae52490-ffb9-4320-ac51-f98ab08c733a --op=delete

接続トラブルシューティング
#

接続できんが〜〜〜〜〜?

$ sudo iscsiadm -m node -T iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee -l
Logging in to [iface: default, target: iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee, portal: 192.168.2.1,3260]
iscsiadm: Could not login to [iface: default, target: iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee, portal: 192.168.2.1,3260].
iscsiadm: initiator reported error (19 - encountered non-retryable iSCSI login failure)
iscsiadm: Could not log into all portals

K8s の残骸が悪さをしているかもしれないので一旦全てのノードをシャットダウン

Logging in to [iface: default, target: iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee, portal: 192.168.2.1,3260]
Login to [iface: default, target: iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee, portal: 192.168.2.1,3260] successful.

予想通りだった!

データ回収
#

ではマウントして回収する

$ sudo lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0  49.3M  1 loop /snap/snapd/24792
loop1         7:1    0     4K  1 loop /snap/bare/5
loop3         7:3    0   576K  1 loop /snap/snapd-desktop-integration/315
loop4         7:4    0 245.3M  1 loop /snap/firefox/6495
loop5         7:5    0  10.7M  1 loop /snap/firmware-updater/127
loop6         7:6    0  11.1M  1 loop /snap/firmware-updater/167
loop7         7:7    0 505.1M  1 loop /snap/gnome-42-2204/176
loop8         7:8    0   516M  1 loop /snap/gnome-42-2204/202
loop9         7:9    0  91.7M  1 loop /snap/gtk-common-themes/1535
loop10        7:10   0  10.8M  1 loop /snap/snap-store/1248
loop11        7:11   0  10.8M  1 loop /snap/snap-store/1270
loop12        7:12   0 245.3M  1 loop /snap/firefox/6436
loop13        7:13   0  50.9M  1 loop
loop14        7:14   0  73.9M  1 loop /snap/core22/2045
loop15        7:15   0   568K  1 loop /snap/snapd-desktop-integration/253
loop16        7:16   0  73.9M  1 loop /snap/core22/2010
loop17        7:17   0  50.9M  1 loop /snap/snapd/24718
sda           8:0    0    10G  0 disk
nvme0n1     259:0    0 931.5G  0 disk
├─nvme0n1p1 259:1    0     1G  0 part /boot/efi
└─nvme0n1p2 259:2    0 930.5G  0 part /

10GB の LUN なので sda が対象ということがわかる。
ファイルシステムを確認

$ sudo blkid /dev/sda
/dev/sda: UUID="44e0bd39-56c8-488c-ba78-d92d78a2ab16" UUID_SUB="f30fff50-a274-4ad5-b47d-f0890339d421" BLOCK_SIZE="4096" TYPE="btrfs"

btrfs って読めたっけ???
読めそう。マウントする

$ sudo mkdir -p /mnt/iscsi
$ sudo mount -t btrfs /dev/sda /mnt/iscsi
$ tree -L 2 /mnt/iscsi
/mnt/iscsi
└── pgroot
    ├── data
    └── pg_log

読めてる!
全部回収する、今回は 5GB とちょっとなので

$ mkdir pg_backup
$ sudo cp -a /mnt/iscsi/pgroot/data pg_backup
$ sudo cp -a /mnt/iscsi/pgroot/pg_log pg_backup

権限調整とクリーンアップ
#

一旦権限を自分に変更しておく

$ ls -la pg_backup
合計 16
drwxrwxr-x  4 sun-yryr   sun-yryr 4096  7月 23 01:46 .
drwxr-xr-x  7 sun-yryr   sun-yryr 4096  7月 23 01:44 ..
drwx------ 19 messagebus uuidd    4096  7月 22 09:00 data
drwxr-xr-x  2 messagebus uuidd    4096  4月  4 09:00 pg_log

$ sudo chown -R sun-yryr:sun-yryr pg_backup
$ ls -la pg_backup
合計 16
drwxrwxr-x  4 sun-yryr sun-yryr 4096  7月 23 01:46 .
drwxr-xr-x  7 sun-yryr sun-yryr 4096  7月 23 01:44 ..
drwx------ 19 sun-yryr sun-yryr 4096  7月 22 09:00 data
drwxr-xr-x  2 sun-yryr sun-yryr 4096  4月  4 09:00 pg_log

OK!マウントを解除して iSCSI もログアウトしておく

$ sudo umount /mnt/iscsi
$ sudo iscsiadm -m node -T iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee -p 192.168.2.1 --logout
Logging out of session [sid: 3, target: iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee, portal: 192.168.2.1,3260]
Logout of [sid: 3, target: iqn.2000-01.com.synology:*****.pvc-2182b46c-5f40-4302-aff1-bfd12aa212ee, portal: 192.168.2.1,3260] successful.

まとめ
#

一旦ここまで。次はローカルでこのデータから DB を復元して dump を取得する(最終的に復活させた K8s 上の DB に入れるので、dump にしておくと取り回しが良い)

続きはこちら
PostgreSQLダンプ作成編【おうちK8s復旧シリーズ #2】(準備中)

Taiyo Minagawa (sun-yryr)
著者
Taiyo Minagawa (sun-yryr)
おうちK8s復旧シリーズ - この記事は連載の一部です
パート : この記事