|
クローニング |
バックアップ |
説明 |
ソース・ブロック・ボリュームのコピーを
新しいブロック・ボリュームとして
即時作成する。 |
ブロック・ボリューム内のデータを
オブジェクト・ストレージにバックアップする。
バックアップからリストアすることで、
新しいブロック・ボリュームを作成できる。 |
使用例 |
既存のボリュームを素早く複製し、
別環境を作成する。 |
ビジネス継続性の要件を満たすため、
データの破損等に備えたバックアップを
取得する |
速度 |
高速 |
低速 |
コスト |
高コスト |
低コスト |
保持ポリシー |
有効期限なし |
ポリシーベースのバックアップでは
有効期限を指定可能 |
範囲 |
可用性ドメイン |
リージョン |
ブロック・ボリュームのクローニング検証
検証環境について
それでは検証していきましょう!
今回の検証の流れは下記のようになります。
- 検証環境1にアタッチされたソース・ブロック・ボリュームをクローニングする
- クローニングで作成されたブロック・ボリュームを検証環境2にアタッチする
- 検証環境2にアタッチしたブロック・ボリュームをマウントする
検証環境1と2の情報はそれぞれ下記となります。
【検証環境1】
インスタンス名:test_instance
OS:Oracle Linux 8
shape:VM.Standard.E4.Flex
【検証環境2】
インスタンス名:test_instance_clone
OS:Oracle Linux 8
shape:VM.Standard.E4.Flex
また、ソース・ブロック・ボリュームの情報は下記になります。
ブロック・ボリューム名:test_block_volume
初期サイズ:50GB
デバイス・パス:/dev/oracleoci/oraclevdb
ボリューム名:/dev/sda
ボリュームのパーティション:/dev/sda1
マウント先:/mnt/blockvol1
以下、検証環境1で確認したソース・ブロック・ボリュームです。
50GBのパーティション「sda1」が「/mnt/blockvol1」にマウントされていますね!
[opc@test-instance ~]$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
Lsda1 8:1 0 50G 0 part /mnt/blockvol1
ブロック・ボリュームを作成してインスタンスにアタッチする方法は前述の
OCI ブロック・ボリュームをインスタンスにアタッチしてみよう!やマニュアルをご参照ください。
また、テストデータとして100MBの空ファイルを「/mnt/blockvol1」配下に配置しています。
作成コマンドは「dd if=/dev/zero of=test_data bs=1M count=100」です。
[opc@test-instance ~]$ cd /mnt/blockvol1
[opc@test-instance blockvol1]$
[opc@test-instance blockvol1]$ dd if=/dev/zero of=test_data bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0500826 s, 2.1 GB/s
[opc@test-instance blockvol1]$
[opc@test-instance blockvol1]$ ls -ltr
total 102400
-rw-rw-r--. 1 opc opc 104857600 Mar 15 05:27 test_data
[opc@test-instance blockvol1]$
それではブロック・ボリュームをクローニングしていきましょう!
ブロック・ボリュームのクローニング
ブロック・ボリュームのクローニングはOCIのコンソールからできます。
ナビゲーション・メニューを開き、「ストレージ」>「ブロック・ボリューム」の順にクリックします。
ブロック・ボリュームの一覧からソース・ブロック・ボリュームを選択肢します。
今回は「test_block_volume」です。
「test_block_volume」の詳細画面がでてきます。
左下の「リソース」から「ブロック・ボリュームのクローン」を選択肢し、
「クローンの作成」をクリックします。
すると、下記のように「クローンの作成」画面がでてきます。
まず作成するクローンの名前を記入します。今回は「test_block_volume_clone」とします。
また、クローンを作成するコンパーメントを選択します。
次に「ボリュームサイズとパフォーマンス」から、クローンのサイズを指定します。
前述の通り、
ここでソース・ブロック・ボリュームより小さいサイズは指定できないことに注意してください。
今回はせっかくなので、10GBだけ拡張してみましょう!
「カスタム」を選択し、サイズに「60GB」を指定してみます。
パフォーマンスについてはソース・ブロック・ボリュームと同じ「より低いコスト」にしています。
最後に「クロス・リージョン・レプリケーション」を「オフ」、
「暗号化」を「Oracle管理キーを使用した暗号化」と設定し、「クローンの作成」をクリックします。
無事にソース・ブロック・ボリュームのクローンが完成しました!
サイズも60GBになっていますね!
クローンのインスタンスへのアタッチ
次に作成したクローンを検証環境2にアタッチします!
ナビゲーション・メニューを開き、「コンピュート」>「インスタンス」の順にクリックします。
インスタンス一覧から、クローンをアタッチするインスタンスを選びます。
今回は「test_instance_clone」です。
「test_instance_clone」の詳細画面がでてきます。
左下の「リソース」から「アタッチされたブロック・ボリューム」を選択肢し、
「ブロック・ボリュームのアタッチ」をクリックします。
すると、下記のように「ブロック・ボリュームのアタッチ」画面がでてきます。
最初にアタッチするボリュームを指定します。
「ボリュームの選択」クリックし、「test_block_volume_clone」を選択します。
次に「アタッチメント・タイプ」を設定します。
「カスタム」を選択し、「準仮想化」を選択します。
また「転送中の暗号化」はチェックを入れず、「デバイス・パス・オプション」に「/dev/oracleoci/oraclevdb」を指定します。
最後に「アクセス」で「読取り/書込み」を選択肢、「アタッチ」をクリックします。
無事に「test_block_volume_clone」がインスタンスにアタッチされました!
ブロック・ボリュームのマウント
パーティションの拡張
最後にインスタンスにアタッチされたクローンが使用できるように
ディレクトリにマウントしていきたいと思います!
クローンのデバイスパスは「/dev/oracleoci/oraclevdb」ですので、
まずはボリュームが存在するか確認してみます。
[opc@test-instance-clone ~]$ ls -ltr /dev/oracleoci
total 0
・
【中略】
・
lrwxrwxrwx. 1 root root 6 Mar 13 08:55 oraclevdb -> ../sdb
lrwxrwxrwx. 1 root root 7 Mar 13 08:55 oraclevdb1 -> ../sdb1
[opc@test-instance-clone ~]$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
・
【中略】
・
sdb 8:16 0 60G 0 disk
Lsdb1 8:17 0 50G 0 part
[opc@test-instance-clone ~]$
「/dev/oracleoci/oraclevdb」が存在することが確認できました。
デバイスパスと紐づいたボリューム名は「/dev/sdb」です。
また「slbk」コマンドの結果を見ると、既にパーティションが作成されていることも確認できますね!
しかし、ボリュームサイズが50GBから60GBに拡張されているのに対して、
パーティションは50GBのままです。
そこで、「parted」コマンドを用いてパーティションの拡張を実施します!
なお、「parted」コマンドを実行すると下記のようなエラーが発生することがあります。
この場合はエラーを修正する「FIX」を選択してください!
[opc@test-instance-clone ~]$ sudo parted -l
Warning: Not all of the space available to /dev/sda appears to be used, you can
fix the GPT to use all of the space (an extra 7180288 blocks) or continue with
the current setting?
Fix/Ignore? Fix
まずは「parted /dev/sdb」で編集するパーティションを含むボリュームを選択します。
[opc@test-instance-clone ~]$ sudo parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
次にボリュームの正確な開始位置がわかるように「unit s」コマンドを実行し、
表示単位はセクターに変更します。
さらに現在の現在のパーティション情報を「print」コマンドで表示させます。
(parted) unit s
(parted)
(parted) print
Model: ORACLE BlockVolume (scsi)
Disk /dev/sdb: 125829120s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2048s 104855551s 104853504s xfs primary
(parted)
ここの「Number」列、「Start」列、「File system Name」列の値は後々に使用しますので、
メモしておいてください!
次に既存のパーティションを「rm <Partition Number>」コマンドで削除します。
<Partition Number>は先ほど確認した「Number」列の値を使用するので、今回は「rm 1」です。
(parted) rm 1
削除が完了したら、新しいパーティションを作成しましょう!
コマンドは「mkpart」コマンドを使用します。いくつか質問されますので、以下のように回答しましょう!
- Partition name?
パーティションの名前を指定します。特に指定しない場合はそのまま「enter」を押してください。
- File system type?
ファイルシステムを指定します。
今回は「print」コマンドで確認した「File system Name」列の値である「xfs」を指定します。
- Start?
「print」コマンドで確認した「Start」列の値である「2048s」を指定します。
- End?
「100%」を指定します。
(parted) mkpart
Partition name? []?
File system type? [ext2]? xfs
Start? 2048s
End? 100%
(parted)
最後に「quit」で「parted」から抜けます。
(parted) quit
Information: You may need to update /etc/fstab.
[opc@test-instance-clone ~]$
「lsblk」コマンドで確認してみると60GBのパーティションが作成されていることが確認できます!
[opc@test-instance-clone ~]$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
・
【中略】
・
sdb 8:16 0 60G 0 disk
Lsdb1 8:17 0 60G 0 part
[opc@test-instance-clone ~]$
ファイル・システムの拡張
続きまして、ファイル・システムを拡張します。
※今回の手順は「XFS」ファイル・システムの手順になります。
他のファイル・システムの場合は手順が異なりますので、詳細はマニュアル等をご参照ください。
最初に「xfs_repair <partition_Name>」を実行します。
今回の<partition_Name>は「/dev/sdb1」です。
[opc@test-instance-clone ~]$ sudo xfs_repair /dev/sdb1
Phase 1 - find and verify superblock...
・
【中略】
・
- moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done
[opc@test-instance-clone ~]$
次に「/dev/sdb1」に対してディレクトリをマウントします。
今回はマウントターゲットディレクトリとして「/mnt/blockvol1_clone」を作成しています。
[opc@test-instance-clone ~]$ ls -ld /mnt/blockvol1_clone
drwxr-xr-x. 2 opc opc 6 Mar 13 09:03 /mnt/blockvol1_clone
[opc@test-instance-clone ~]$
マウントは「mount <partition_Name> <Mount Target Directory> -o nouuid」コマンドで
実行します。
[opc@test-instance-clone ~]$ sudo mount /dev/sdb1 /mnt/blockvol1_clone -o nouuid
[opc@test-instance-clone ~]$
最後に「xfs_growfs -d <Mount Target Directory>」を実行します。
[opc@test-instance-clone ~]$ sudo xfs_growfs -d /mnt/blockvol1_clone
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=3276672 blks
・
【中略】
・
data blocks changed from 13106688 to 15728128
[opc@test-instance-clone ~]$
以上でマウント作業は完了です!
それでは確認してみましょう!
[opc@test-instance-clone ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
・
【中略】
・
/dev/sdb1 60G 561M 60G 1% /mnt/blockvol1_clone
[opc@test-instance-clone ~]$
[opc@test-instance-clone ~]$ cd /mnt/blockvol1_clone
[opc@test-instance-clone blockvol1_clone]$ ls -lh
total 100M
-rw-rw-r--. 1 opc opc 100M Mar 13 07:42 test_data
[opc@test-instance-clone blockvol1_clone]$
無事にマウント出来ていることを確認できましたね!
また、ソース・ブロック・ボリュームに作成した100MBの空ファイルもしっかりコピーできています!
ちなみにOS再起動後もマウント状態を維持するためには下記のような流れで
「/etc/fstab」を編集してください。
①
パーティションのUUIDを確認する。
[opc@test-instance-clone ~]$ lsblk -o +UUID
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT UUID
・
【中略】
・
sdb 8:16 0 60G 0 disk
Lsdb1 8:17 0 60G 0 part 20075ff4-2e88-4b3a-a599-3f8391324bc3
[opc@test-instance-clone ~]$
②
「/etc/fstab」に下記を追記する
「UUID=<①で確認したパーティションのUUID> <Mount Target Directory> xfs defaults,_netdev,nofail 0 2」
[opc@test-instance-clone ~]$ sudo vi /etc/fstab
※/etc/fstabに「UUID=20075ff4-2e88-4b3a-a599-3f8391324bc3 /mnt/blockvol1_clone xfs defaults,_netdev,nofail 0 2」を追記
[opc@test-instance-clone ~]$ cat /etc/fstab
・
【中略】
・
UUID=20075ff4-2e88-4b3a-a599-3f8391324bc3 /mnt/blockvol1_clone xfs defaults,_netdev,nofail 0 2
[opc@test-instance-clone ~]$