OCIブロックボリュームのアタッチ・リストア
はじめに
OCIのブロックボリュームのアタッチ・リストアを試す。
以下の順に進める。
・ブロックボリュームを作成、インスタンスにアタッチ ・lv・ファイルシステムを作成のうえ、OSからマウント ・ブロックボリュームのバックアップ・リストアを実行 ・元のブロックボリュームを一度OSからデタッチ ・リストアしたブロックボリュームをアタッチ
ブロックボリューム作成・インスタンスにアタッチ
コンソールからブロックボリュームを作成

作成できたら、「インスタンスのアタッチ」のボタンで 既存のインスタンスにブロックボリュームをアタッチする。 今回はiSCSI接続を使用する。

アタッチが完了後、OSでiSCSI接続のコマンド打鍵が必要。 コンソールの「iSCSIコマンドおよび情報」から必要な情報を確認して打鍵する。(画像を取り忘れたので添付はイメージのみ)


# まだ何も接続されていない状態 [root@my-instance ~]# iscsiadm --mode session iscsiadm: No active sessions. # コンソールで表示された3コマンドを打鍵し、作成したBVとiSCSI接続する [root@my-instance ~]# sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87 -p 169.254.2.2:3260 New iSCSI node [tcp:[hw=,ip=,net_if=,iscsi_if=default] 169.254.2.2,3260,-1 iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87] added [root@my-instance ~]# sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87 -n node.startup -v automatic [root@my-instance ~]# sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87 -p 169.254.2.2:3260 -l Logging in to [iface: default, target: iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87, portal: 169.254.2.2,3260] (multiple) Login to [iface: default, target: iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87, portal: 169.254.2.2,3260] successful. # iSCSI接続が認識された [root@my-instance ~]# iscsiadm --mode session tcp: [1] 169.254.2.2:3260,1 iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87 (non-flash)
lv・ファイルシステムを作成のうえ、OSからマウント
https://dev.classmethod.jp/articles/eetann-use-lvm-ebs/
上記を参考にlvmの設定を行う。 パーティション→pv→vg→lv→ファイルシステム→マウント の順に作業する
初期状態
iSCSI接続を行った最初の状態では、以下のような状態。
lsblkにはsdbとして表示される
# [root@my-instance ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 50G 0 disk sda 8:0 0 46.6G 0 disk ├─sda2 8:2 0 8G 0 part [SWAP] ├─sda3 8:3 0 38.4G 0 part / └─sda1 8:1 0 200M 0 part /boot/efi
parted で確認すると、unknownの状態。
[root@my-instance ~]# parted -l モデル: ORACLE BlockVolume (scsi) ディスク /dev/sda: 50.0GB セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 1049kB 211MB 210MB fat16 EFI System Partition boot 2 211MB 8801MB 8590MB linux-swap(v1) 3 8801MB 50.0GB 41.2GB xfs エラー: /dev/sdb: ディスクラベルが認識できません。 モデル: ORACLE BlockVolume (scsi) ディスク /dev/sdb: 53.7GB セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: unknown ディスクフラグ:
パーティション作成
[root@my-instance ~]# gdisk /dev/sdb GPT fdisk (gdisk) version 0.8.10 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. # 何もないのでパーティションを作るよう促される Command (? for help): ? # コマンド確認 b back up GPT data to a file c change a partition's name d delete a partition i show detailed information on a partition l list known partition types n add a new partition o create a new empty GUID partition table (GPT) p print the partition table q quit without saving changes r recovery and transformation options (experts only) s sort partitions t change a partition's type code v verify disk w write table to disk and exit x extra functionality (experts only) ? print this menu Command (? for help): n # n : 新しいパーティションを作成 Partition number (1-128, default 1): First sector (34-104857566, default = 2048) or {+-}size{KMGTP}: Last sector (2048-104857566, default = 104857566) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): L # OS固有のHex Code入力を求められる。確認の上 8e00 (Linux LVM) を選択 0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE 3000 ONIE boot 3001 ONIE config 4100 PowerPC PReP boot 4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS 7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved 8200 Linux swap 8300 Linux filesystem 8301 Linux reserved 8302 Linux /home 8400 Intel Rapid Start 8e00 Linux LVM a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID a580 Midnight BSD data a581 Midnight BSD boot a582 Midnight BSD swap a583 Midnight BSD UFS a584 Midnight BSD ZFS a585 Midnight BSD Vinum a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+ af01 Apple RAID af02 Apple RAID offline af03 Apple label af04 AppleTV recovery af05 Apple Core Storage be00 Solaris boot bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2 bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5 c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit Press the <Enter> key to see more codes: Hex code or GUID (L to show codes, Enter = 8300): 8e00 # OS固有のHex Code入力を求められる。確認の上 8e00 (Linux LVM) を選択 Changed type of partition to 'Linux LVM' Command (? for help): p # p : 情報表示。パーティションが作成された。 Disk /dev/sdb: 104857600 sectors, 50.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): 6C169F02-9F66-4E80-A226-768DCE2974D9 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 104857566 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 104857566 50.0 GiB 8E00 Linux LVM Command (? for help): w # w: write table to disk and exit この処理をもってパーティション作成完了となる? Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sdb. The operation has completed successfully.
パーティションを作成したことで、lsblkの表示にもsdb1の名前で表れるようになる。
[root@my-instance ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 50G 0 disk └─sdb1 8:17 0 50G 0 part #★先ほど作成したパーティション sda 8:0 0 46.6G 0 disk ├─sda2 8:2 0 8G 0 part [SWAP] ├─sda3 8:3 0 38.4G 0 part / └─sda1 8:1 0 200M 0 part /boot/efi
partedの表示にも、指定した通りlinux LVMとして認識される。
[root@my-instance ~]# parted /dev/sdb print モデル: ORACLE BlockVolume (scsi) ディスク /dev/sdb: 53.7GB セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 1049kB 53.7GB 53.7GB Linux LVM lvm
pv・vg・lvの作成
pv作成
[root@my-instance ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@my-instance ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- <50.00g <50.00g [root@my-instance ~]# pvdisplay "/dev/sdb1" is a new physical volume of "<50.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size <50.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID NYFPWF-ue2C-QAra-nL2Y-E5g5-a2xr-R8572M
vg作成
[root@my-instance ~]# vgcreate myvg1 /dev/sdb1 Volume group "myvg1" successfully created [root@my-instance ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg1 1 0 0 wz--n- <50.00g <50.00g
lv作成
[root@my-instance ~]# lvcreate --size 5G --name mylv1 myvg1 WARNING: ext4 signature detected on /dev/myvg1/mylv1 at offset 1080. Wipe it? [y/n]: y Wiping ext4 signature on /dev/myvg1/mylv1. Logical volume "mylv1" created. [root@my-instance ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv1 myvg1 -wi-a----- 5.00g [root@my-instance ~]# lvdisplay --- Logical volume --- LV Path /dev/myvg1/mylv1 LV Name mylv1 VG Name myvg1 LV UUID XqEIvG-owlZ-lhoJ-M30g-7Uwd-hI6w-TQwhFC LV Write Access read/write LV Creation host, time my-instance, 2024-12-30 13:17:51 +0900 LV Status available # open 0 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0
ファイルシステム作成
[root@my-instance ~]# mkfs -t ext4 /dev/myvg1/mylv1 mke2fs 1.45.4 (23-Sep-2019) Discarding device blocks: done Creating filesystem with 1310720 4k blocks and 327680 inodes Filesystem UUID: b6b2a0f7-1562-4211-8eea-618c559d96b4 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
マウント
[root@my-instance ~]# df -h #事前状態ではdfの結果に何も乗ってこない ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 294M 0 294M 0% /dev tmpfs 335M 12K 335M 1% /dev/shm tmpfs 335M 35M 301M 11% /run tmpfs 335M 0 335M 0% /sys/fs/cgroup /dev/sda3 39G 19G 20G 49% / /dev/sda1 200M 7.4M 193M 4% /boot/efi tmpfs 67M 0 67M 0% /run/user/1000 tmpfs 67M 0 67M 0% /run/user/993 overlay 39G 19G 20G 49% /var/lib/docker/overlay2/e58ec42d0354623fcf4abbb1cfec8a402619b988e5c6316037521c325ebc4611/merged overlay 39G 19G 20G 49% /var/lib/docker/overlay2/0aab146f51b1f57f957bd4d000ead990c297ebc7753f6b3f986df1a43de7c6c8/merged [root@my-instance ~]# mkdir /mountdir-for-mylv1 # マウントポイント用ディレクトリ作成 [root@my-instance ~]# vi /etc/fstab # マウント設定を追加 [root@my-instance ~]# cat /etc/fstab (略) /dev/myvg1/mylv1 /mountdir-for-mylv1 ext4 defaults 0 0 #★viで追加した行 [root@my-instance ~]# mount -a [root@my-instance ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 294M 0 294M 0% /dev tmpfs 335M 12K 335M 1% /dev/shm tmpfs 335M 35M 301M 11% /run tmpfs 335M 0 335M 0% /sys/fs/cgroup /dev/sda3 39G 19G 20G 49% / /dev/sda1 200M 7.4M 193M 4% /boot/efi tmpfs 67M 0 67M 0% /run/user/1000 tmpfs 67M 0 67M 0% /run/user/993 overlay 39G 19G 20G 49% /var/lib/docker/overlay2/e58ec42d0354623fcf4abbb1cfec8a402619b988e5c6316037521c325ebc4611/merged overlay 39G 19G 20G 49% /var/lib/docker/overlay2/0aab146f51b1f57f957bd4d000ead990c297ebc7753f6b3f986df1a43de7c6c8/merged /dev/mapper/myvg1-mylv1 4.9G 24K 4.6G 1% /mountdir-for-mylv1 #★マウントできた [root@my-instance mountdir-for-mylv1]# dd if=/dev/urandom of=/mountdir-for-mylv1/testfile bs=1M count=100 #★書き込み確認もOK 100+0 レコード入力 100+0 レコード出力 104857600 バイト (105 MB) コピーされました、 2.98914 秒、 35.1 MB/秒 [root@my-instance mountdir-for-mylv1]# ll 合計 102416 drwx------. 2 root root 16384 12月 30 13:19 lost+found -rw-r--r--. 1 root root 104857600 12月 30 13:29 testfile
ブロックボリュームのバックアップ・リストアを実行
この断面で、ブロックボリュームのバックアップを取得・リストアを実行する。
コンソールから「手動バックアップの作成」を選択。

名前だけ決めて作成。

作成されたバックアップからリストアを実行。


ブロックボリュームのバックアップからリストアが作成された。

元のブロックボリュームを一度OSからデタッチ
リストアの確認として、この時点で、先ほど元のブロックボリューム上に作成したテストファイルは削除しておく。
[root@my-instance mountdir-for-mylv1]# rm testfile rm: 通常ファイル `testfile' を削除しますか? y
元のブロックボリュームはいったんデタッチする。

デタッチしようとすると、事前に
・fstabからは抜いておくこと
・(アンマウントしておくこと)
・iscsiのデタッチのコマンドを打つこと
が求められる。(画像を取り忘れたため表記はイメージのみ)

横着して、 ・(アンマウントしておくこと) ・iscsiのデタッチのコマンドを打つこと だけ実施したのち(以下)、「デタッチの続行」を押下。
[root@my-instance /]# umount /mountdir-for-mylv1 #アンマウント [root@my-instance /]# iscsiadm --mode session tcp: [1] 169.254.2.2:3260,1 iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87 (non-flash) [root@my-instance /]# sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87 -p 169.254.2.2:3260 -u # ociから言われたコマンドを実施 Logging out of session [sid: 1, target: iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87, portal: 169.254.2.2,3260] Logout of [sid: 1, target: iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87, portal: 169.254.2.2,3260] successful. [root@my-instance /]# sudo iscsiadm -m node -o delete -T iqn.2015-12.com.oracleiaas:b95d1766-a8c6-490d-8c22-899a3330ce87 -p 169.254.2.2:3260 [root@my-instance /]# iscsiadm --mode session # iSCSI接続がデタッチされた iscsiadm: No active sessions.
この時点でlsblkに表示されなくなる。(デバイスの接続を外したので当然)
[root@my-instance /]# pvs [root@my-instance /]# vgs [root@my-instance /]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 46.6G 0 disk ├─sda2 8:2 0 8G 0 part [SWAP] ├─sda3 8:3 0 38.4G 0 part / └─sda1 8:1 0 200M 0 part /boot/efi
リストアしたブロックボリュームをアタッチ
先ほどと同じ要領で、リストアしたブロックボリュームをインスタンスにアタッチする。 コンソールでアタッチの操作を実行後、コンソール上で指示される以下を打鍵する。
[root@my-instance /]# sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:7c079e04-c57a-4133-9bfb-fac5c65d2d12 -p 169.254.2.3:3260 New iSCSI node [tcp:[hw=,ip=,net_if=,iscsi_if=default] 169.254.2.3,3260,-1 iqn.2015-12.com.oracleiaas:7c079e04-c57a-4133-9bfb-fac5c65d2d12] added [root@my-instance /]# sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:7c079e04-c57a-4133-9bfb-fac5c65d2d12 -n node.startup -v automatic [root@my-instance /]# sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:7c079e04-c57a-4133-9bfb-fac5c65d2d12 -p 169.254.2.3:3260 -l Logging in to [iface: default, target: iqn.2015-12.com.oracleiaas:7c079e04-c57a-4133-9bfb-fac5c65d2d12, portal: 169.254.2.3,3260] (multiple) Login to [iface: default, target: iqn.2015-12.com.oracleiaas:7c079e04-c57a-4133-9bfb-fac5c65d2d12, portal: 169.254.2.3,3260] successful.
この時点でpvs, lvs等の表示が復活する。 UUIDが以前と同じものであることに注意。これが同じだからか特に設定せずとも以前のvgの情報を思い出してくれる?
[root@my-instance /]# iscsiadm --mode session tcp: [2] 169.254.2.3:3260,1 iqn.2015-12.com.oracleiaas:7c079e04-c57a-4133-9bfb-fac5c65d2d12 (non-flash) [root@my-instance /]# pvs PV VG Fmt Attr PSize PFree /dev/sdc1 myvg1 lvm2 a-- <50.00g <45.00g [root@my-instance /]# vgs VG #PV #LV #SN Attr VSize VFree myvg1 1 1 0 wz--n- <50.00g <45.00g [root@my-instance /]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv1 myvg1 -wi-a----- 5.00g [root@my-instance /]# lvdisplay --- Logical volume --- LV Path /dev/myvg1/mylv1 LV Name mylv1 VG Name myvg1 LV UUID XqEIvG-owlZ-lhoJ-M30g-7Uwd-hI6w-TQwhFC #ブロックボリュームをリストアすると、UUIDは以前と同じものを引きつぐ LV Write Access read/write LV Creation host, time my-instance, 2024-12-30 13:17:51 +0900 LV Status available # open 0 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0
ただし、マウントには失敗している。前の情報が何かしら残ってしまっている?
[root@my-instance /]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 294M 0 294M 0% /dev tmpfs 335M 12K 335M 1% /dev/shm tmpfs 335M 35M 301M 11% /run tmpfs 335M 0 335M 0% /sys/fs/cgroup /dev/sda3 39G 19G 20G 48% / /dev/sda1 200M 7.4M 193M 4% /boot/efi tmpfs 67M 0 67M 0% /run/user/1000 tmpfs 67M 0 67M 0% /run/user/993 overlay 39G 19G 20G 48% /var/lib/docker/overlay2/e58ec42d0354623fcf4abbb1cfec8a402619b988e5c6316037521c325ebc4611/merged overlay 39G 19G 20G 48% /var/lib/docker/overlay2/0aab146f51b1f57f957bd4d000ead990c297ebc7753f6b3f986df1a43de7c6c8/merged [root@my-instance /]# mount -a mount: wrong fs type, bad option, bad superblock on /dev/mapper/myvg1-mylv1, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so.
仕方ないのでコンソールからサーバをリブートしたところ解消。 リブート後は問題なくマウントできていた。
[opc@my-instance ~]$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 294M 0 294M 0% /dev tmpfs 335M 0 335M 0% /dev/shm tmpfs 335M 4.9M 330M 2% /run tmpfs 335M 0 335M 0% /sys/fs/cgroup /dev/sda3 39G 19G 20G 48% / /dev/sda1 200M 7.4M 193M 4% /boot/efi /dev/mapper/myvg1-mylv1 4.9G 101M 4.5G 3% /mountdir-for-mylv1 #マウントできている tmpfs 67M 0 67M 0% /run/user/993 tmpfs 67M 0 67M 0% /run/user/1000
おわりに
UUIDが同じだと・・違うと・・・という話が毎回もやもやするポイント。 次回は横着せずにfstabからも一度外してリブートする。