Oracle データベースでの Amazon EBS エラスティックボリュームの使用 (パート2): LVMを 使ったデータベース
Oracle データベースでの Amazon EBS エラスティックボリュームの使用 (パート2): LVMを 使ったデータベース:
このブログシリーズのパート 1 では、エラスティックボリュームの機能について検討します。また、データベースストレージとして LVM なしの単一の Amazon EBS ボリュームを使用するシンプルなデータベースである Oracle データベースストレージレイアウトについても検討します。この記事のパート 2 では、ストレージ管理に LVM を使用する Oracle データベースである Amazon EC2 のストレージレイアウトについて検討します。さらに、可用性に影響を与えることなくデータベースストレージを拡張する方法を示します。
リサイズがデータベースのダウンタイムなしに実行されることを提示するために、
今度は、LVM を使って物理ボリュームを作成します。
注記 : デバイス名に関する考慮事項に注意してください。この例では、
次に、LVM を使用してボリュームグループを作成します。
次に、LVM を使用して論理ボリュームを作成します。
図示のように、
データファイルを格納するために、以下のように
論理ボリューム上にファイルシステムを作成し、以下のように
注記 : Ext4 および XFS はいずれもインラインでのサイズ変更をサポートしています。この例では、Ext4 がより単純な選択であるため、こちらを使用しています。
ここでは、以下のように SQL*Plus を使用して
次のように、
以下のスクリーンショットに示すように、ここでは新しく作成された表領域のサイズとデータファイルの場所を確認します。
SQL Workbench からテーブルをクエリして、レコードの挿入が開始されていることを確認します。
しばらくしてから、AWS CLI を使用してボリューム変更要求のステータスを確認します。ボリュームが最適化状態に入ったことがわかります。次のスクリーンショットに示すように、AWS Management Console に新しいサイズが表示されます。
最後に、
この例を使用して、データベースの可用性にいかなる影響をも与えることなく、ストレージ管理に LVM を使用する Oracle データベースに割り当てられたストレージを増やす方法を示します。エラスティックボリュームを使用して、データベースにプロビジョニングされた IOPS を変更したり、また EBS ボリュームタイプ (例えば、 io1 から gp2 など) を変更することも可能です。データベースの可用性やパフォーマンスに影響を与えずに行うことができます。
次の記事では、Oracle Automated Storage Management ( Oracle ASM ) を使用する Oracle データベース用の Amazon EC2 でのストレージレイアウトについて検討します。また、データベースの可用性に影響を与えずにデータベースストレージを拡張する方法を示します。
Ejaz Sayyed 氏は、アマゾン ウェブ サービスのグローバルシステムインテグレーター (GSI) チームのパートナーソリューションアーキテクトです。同氏の重点分野は、AWS データベースサービス、そして AWS 上のデータベースとデータウェアハウスの移行です。
Nael Haddad 氏は Amazon Web ServicesのElastic Block Store (EBS) チームのシニアプロダクトマネージャーです。同氏は複数の EBS 製品の提供に関連する新機能を推進しています。
このブログシリーズのパート 1 では、エラスティックボリュームの機能について検討します。また、データベースストレージとして LVM なしの単一の Amazon EBS ボリュームを使用するシンプルなデータベースである Oracle データベースストレージレイアウトについても検討します。この記事のパート 2 では、ストレージ管理に LVM を使用する Oracle データベースである Amazon EC2 のストレージレイアウトについて検討します。さらに、可用性に影響を与えることなくデータベースストレージを拡張する方法を示します。
LVM を使用したデータベースのストレージ操作
このセクションでは、ストレージ管理に LVM を使用する Oracle データベース向けの Amazon EC2 のストレージレイアウトについて簡潔に検討します。次に、プロビジョニングされたストレージを増やしたり、またプロビジョニングされた IOPS を変更するなど、 Oracle データベースストレージの変更が、エラスティックボリュームの導入前にどのように行われたかについて検討します。また、関連する課題についても取り扱います。最後に、エラスティックボリュームでこれら課題のうちのいくつかを解決する方法について例を挙げて示します。LVM を使用するデータベースのストレージレイアウト
データベースストレージ用に複数の EBS ボリュームが必要な大規模なデータベースの場合、LVM を使用してストレージを管理できます。このシナリオでは、ボリュームグループを作成し、ボリュームグループに EBS ボリュームを追加します。そして、ボリュームグループから論理ボリュームを作成し、論理ボリュームの上にファイルシステムを作成します。次の図は、LVM を使ったデータベースストレージレイアウトを示しています。エラスティックボリュームのない Oracle データベースのストレージ操作
複数の EBS ボリュームとストレージ管理用の LVM を使用するシステム用にプロビジョニングされたストレージまたは IOPS を増やすために、新しい EBS ボリュームを作成します。そして、次の手順で新しい EBS ボリュームをボリュームグループに追加します。- 新しい EBS ボリュームを作成し、EC2 インスタンスに添付する。
pvcreate
コマンドを使用して物理ボリュームを作成する。vgextend
コマンドを使用して、新しい物理ボリュームをボリュームグループに追加する。lvextend
コマンドを使用して、論理ボリュームを拡張する。- ファイルシステムのサイズを変更する。
エラスティックボリュームを使用した Oracle データベースのストレージ操作
EBS ボリュームを変更するには、AWS CLI のmodify-volume
コマンドまたは AWS Management Console の Modify Volume オプションを使用します。新しいボリュームサイズと IOPS を指定します。ボリュームサイズを変更せずにプロビジョニングされた IOPS だけを変更した場合、オペレーティングシステムまたは LVM レベルでの変更は必要はありません。EBS のボリュームサイズを変更する場合は、次の追加的な手順を実行します。pvresize
コマンドを使用して、物理ボリュームのサイズを変更する。lvresize
コマンドを使用して、論理ボリュームのサイズを変更する。- ファイルシステムのサイズを変更する。
例 : LVM を使用するデータベースのストレージを増やす
このセクションでは、ダウンタイムなしに、ストレージ管理に LVM を使用する Oracle データベース用のプロビジョニングされたストレージを増やす方法を示します。このデモンストレーションで、ストレージ管理に LVM を使用する Amazon Linux 上で動作する Oracle 12c データベースを使用します。それぞれ 100 GiB のストレージを持つ 2 つの EBS ボリュームが、物理ボリュームとして LVM に提示されます。これらのボリュームから、論理ボリューム 200 GiB が Oracle データベースストレージ用に作成されます。このデモンストレーションでは、ダウンタイムなしで 200 GiB から 400 GiB にデータベースへプロビジョニングされたストレージを増やしています。リサイズがデータベースのダウンタイムなしに実行されることを提示するために、
evtestproc
というデータベースストアドプロシージャを作成しました。このプロシージャは、レコードを 10 秒間隔で evtesttab
という表に挿入します。サイズ変更操作の実行中にこのプロシージャを実行します。レコードが 10 秒間隔で evtesttab
の表に挿入されていることを検証することで、データベースのダウンタイムなしにリサイズが完了したことを確認できます。evtestproc
ストアドプロシージャの定義については、このブログシリーズのパート 1 を参照してください。ステップ 1 : 現在の設定を確認する
AWS 管理コンソールから、EBS ボリュームのサイズを検証する。次のスクリーンショットに示すように、現在のサイズは 100 GiB です。lsblk
コマンドを使用したインスタンスに、ボリュームが接続されていることを確認する。[ec2-user@ip-172-31-55-62 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
└─xvda1 202:1 0 20G 0 part /
xvdf 202:80 0 65G 0 disk
└─dvg-lvol0 253:2 0 65G 0 lvm /u01
xvdg 202:96 0 100G 0 disk xvdh 202:112 0 100G 0 disk
続行するには、lvm
パッケージがまだインストールされていない場合はインストールする必要があります。次のコマンドを使用してインストールを確認できます。[root@ip-172-31-55-62〜]#rpm -qa | grep -i lvm
lvm2-libs-2.02.115-3.26.amzn1.x86_64
lvm2-2.02.115-3.26.amzn1.x86_64
lvm
がインストールされていない場合は、次のように yum
コマンドを使用してインストールが可能です。[root@ip-172-31-55-62 ~]# yum install lvm2*
[root @ ip-172-31-55-62 ec2-user]#pvcreate/dev/xvdg
Physical volume "/dev/sdg" successfully created
[root@ip-172-31-55-62 ec2-user]# pvcreate /dev/xvdh
Physical volume "/dev/sdh" successfully created
/dev/xvdg
と /dev/sdg
は同じデバイスを参照し、 /dev/xvdg
は /dev/sdg
のシンボリックリンクです。カーネルのブロックデバイスドライバによっては、デバイスが指定した名前と異なる名前で接続されている可能性があります。詳細については、Amazon EC2 ユーザーズガイド Linux 版をご参照ください。次に、LVM を使用してボリュームグループを作成します。
[root@ip-172-31-55-62 ec2-user]# vgcreate EV-Datafile-VG /dev/sdg /dev/sdh
Volume group "EV-Datafile-VG" successfully created
[root@ip-172-31-55-62 ec2-user]# lvcreate -l +100%FREE -n EV-Data-LV EV-Datafile-VG
Logical volume "EV-Data-LV" created.
pvdisplay
、vgdisplay
、および lvdisplay
コマンドを使用して構成を検証できます。[root@ip-172-31-55-62 ec2-user]# pvdisplay
--- Physical volume ---
PV Name /dev/sdg
VG Name EV-Datafile-VG
PV Size 100.00 GiB / not usable 4.00 MiBv
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25599
Free PE 0
Allocated PE 25599
PV UUID NTnpgJ-ZwLR-Dqx9-J7cY-zCRH-EbTz-cEv3gt
--- Physical volume ---
PV Name /dev/sdh
VG Name EV-Datafile-VG
PV Size 100.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25599
Free PE 0
Allocated PE 25599
PV UUID Sq92JP-hLO9-YdfQ-0a1c-Iew1-fugN-P3JqQ3
[root@ip-172-31-55-62 ec2-user]# vgdisplay
--- Volume group ---
VG Name EV-Datafile-VG
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 199.99 GiB
PE Size 4.00 MiB
Total PE 51198
Alloc PE / Size 0 / 0
Free PE / Size 51198 / 199.99 GiB
VG UUID GJw617-s5hP-eVnp-7MCv-VHNS-g0vs-wEjT3u
[root@ip-172-31-55-62 ~]# lvdisplay EV-Datafile-VG
--- Logical volume ---
LV Path /dev/EV-Datafile-VG/EV-Data-LV
LV Name EV-Data-LV
VG Name EV-Datafile-VG
LV UUID KhYS7n-fj5i-oEU3-2EPD-zSi6-2Tta-2XqPwe
LV Write Access read/write
LV Creation host, time ip-172-31-55-62, 2018-06-13 18:22:09 +0000
LV Status available
# open 0
LV Size 199.99 GiB
Current LE 51198
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
customdf
というディレクトリを作成します。[root@ip-172-31-55-62 ~]# mkdir -p /u01/app/oracle/oradata/cdb1/pdb1/customdf
/u01/app/oracle/oradata/cdb1/pdb1/customdf/
にマウントします。[root@ip-172-31-55-62 ec2-user]# mkfs.ext4 /dev/EV-Datafile-VG/EV-Data-LV
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 52426752 4k blocks and 13107200 inodes
Filesystem UUID: 028021c7-090e-44e3-bad7-f38733aca2c7
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@ip-172-31-55-62 ec2-user]# mount /dev/EV-Datafile-VG/EV-Data-LV /u01/app/oracle/oradata/cdb1/pdb1/customdf/
ここでは、以下のように SQL*Plus を使用して
evtestdf.dbf
という 180 GB のデータファイルを持つ EVTestTablespace
という大きなファイル表領域を作成します。SQL> CREATE BIGFILE TABLESPACE EVTestTablespace DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/customdf/EVTESTDF.dbf' SIZE 180G;
Tablespace created.
df
コマンドを使用して、OS レベルでディスク使用率を確認できます。[oracle@ip-172-31-55-62 ec2-user]$ df –h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.9G 76K 7.9G 1% /dev
tmpfs 7.9G 0 7.9G 0% /dev/shm
/dev/xvda1 20G 1.3G 19G 7% /
/dev/mapper/dvg-lvol0 64G 17G 45G 28% /u01
/dev/mapper/EV--Datafile--VG-EV--Data--LV 197G 181G 6.7G 97% /u01/app/oracle/oradata/cdb1/pdb1/customdf
ステップ 2 : ストアドプロシージャを設定する
データベースにプロビジョニングされたストレージを増やしながら、レコードをevtesttab
テーブルに挿入するには、evtestproc
ストアドプロシージャを開始します。begin
evtestproc(); //PLSQL procedure to insert records into the EVTESTTAB table at 10-second intervals
end;
ステップ 3 : EBS ボリュームのサイズ変更
AWS CLI を使用して、EBS ボリュームのサイズを 200 GiB から 100 GiB へと増やします。$ aws ec2 modify-volume --region us-east-1 --volume-id vol-0a6cc1b8519d43a69 --size 200
{
"VolumeModification": {
"TargetSize": 200,
"TargetVolumeType": "io1",
"ModificationState": "modifying",
"VolumeId": "vol-0a6cc1b8519d43a69",
"TargetIops": 3000,
"StartTime": "2018-06-13T21:48:45.000Z",
"Progress": 0,
"OriginalVolumeType": "io1",
"OriginalIops": 3000,
"OriginalSize": 100
}
}
$ aws ec2 modify-volume --region us-east-1 --volume-id vol-04d8f75ea8f27c9ee --size 200
{
"VolumeModification": {
"TargetSize": 200,
"TargetVolumeType": "io1",
"ModificationState": "modifying",
"VolumeId": "vol-04d8f75ea8f27c9ee",
"TargetIops": 3000,
"StartTime": "2018-06-13T21:51:41.000Z",
"Progress": 0,
"OriginalVolumeType": "io1",
"OriginalIops": 3000,
"OriginalSize": 100
}
}
$ aws ec2 describe-volumes-modifications --region us-east-1 --volume-id vol-0a6cc1b8519d43a69
{
"VolumesModifications": [
{
"TargetSize": 200,
"TargetVolumeType": "io1",
"ModificationState": "optimizing",
"VolumeId": "vol-0a6cc1b8519d43a69",
"TargetIops": 3000,
"StartTime": "2018-06-13T21:48:45.000Z",
"Progress": 0,
"OriginalVolumeType": "io1",
"OriginalIops": 3000,
"OriginalSize": 100
}
]
}
$ aws ec2 describe-volumes-modifications --region us-east-1 --volume-id vol-04d8f75ea8f27c9ee
{
"VolumesModifications": [
{
"TargetSize": 200,
"TargetVolumeType": "io1",
"ModificationState": "optimizing",
"VolumeId": "vol-04d8f75ea8f27c9ee",
"TargetIops": 3000,
"StartTime": "2018-06-13T21:51:41.000Z",
"Progress": 0,
"OriginalVolumeType": "io1",
"OriginalIops": 3000,
"OriginalSize": 100
}
]
}
ステップ 4 : 物理ボリューム、論理ボリューム、およびファイルシステムのサイズを変更する
物理ボリュームのサイズを変更するには、pvresize
コマンドを使用します。[root@ip-172-31-55-62 ~]# pvresize /dev/sdg
Physical volume "/dev/sdg" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
[root@ip-172-31-55-62 ~]# pvresize /dev/sdh
Physical volume "/dev/sdh" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
pvdisplay
コマンドを使用して新しいサイズが反映されていることを確認します。[root@ip-172-31-55-62 ~]# pvdisplay /dev/sdg
--- Physical volume ---
PV Name /dev/sdg
VG Name EV-Datafile-VG
PV Size 200.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 51199
Free PE 25600
Allocated PE 25599
PV UUID NTnpgJ-ZwLR-Dqx9-J7cY-zCRH-EbTz-cEv3gt
[root@ip-172-31-55-62 ~]# pvdisplay /dev/sdh
--- Physical volume ---
PV Name /dev/sdh
VG Name EV-Datafile-VG
PV Size 200.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 51199
Free PE 25600
Allocated PE 25599
PV UUID Sq92JP-hLO9-YdfQ-0a1c-Iew1-fugN-P3JqQ3
lvresize
コマンドを使用して論理ボリュームのサイズを変更します。lvresize
コマンドの -l +100%FREE
オプションは、新たに追加されたすべての領域を論理ボリュームに割り当てます。[root@ip-172-31-55-62 ~]# lvresize -l +100%FREE /dev/EV-Datafile-VG/EV-Data-LV
Size of logical volume EV-Datafile-VG/EV-Data-LV changed from 199.99 GiB (51198 extents) to 399.99 GiB (102398 extents).
Logical volume EV-Data-LV successfully resized
lvdisplay
コマンドを使用して新しいボリュームサイズが表示されることを確認します。[root@ip-172-31-55-62 ~]# lvdisplay EV-Datafile-VG
--- Logical volume ---
LV Path /dev/EV-Datafile-VG/EV-Data-LV
LV Name EV-Data-LV
VG Name EV-Datafile-VG
LV UUID KhYS7n-fj5i-oEU3-2EPD-zSi6-2Tta-2XqPwe
LV Write Access read/write
LV Creation host, time ip-172-31-55-62, 2018-06-13 18:22:09 +0000
LV Status available
# open 1
LV Size 399.99 GiB
Current LE 102398
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
resize2fs
コマンドを使用するファイルシステム ( ext4
) のサイズを変更しました。[root@ip-172-31-55-62 ~]# resize2fs /dev/EV-Datafile-VG/EV-Data-LV
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/EV-Datafile-VG/EV-Data-LV is mounted on /u01/app/oracle/oradata/cdb1/pdb1/customdf; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 25
The filesystem on /dev/EV-Datafile-VG/EV-Data-LV is now 104855552 (4k) blocks long.
df
コマンドを使用してファイルシステムのサイズが変更されていることを確認します。[root@ip-172-31-55-62 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.9G 76K 7.9G 1% /dev
tmpfs 7.9G 0 7.9G 0% /dev/shm
/dev/xvda1 20G 1.3G 19G 7% /
/dev/mapper/dvg-lvol0 64G 17G 45G 28% /u01
/dev/mapper/EV--Datafile--VG-EV--Data--LV 394G 361G 16G 96% /u01/app/oracle/oradata/cdb1/pdb1/customdf
ステップ 5 : データベースストレージの増加
以下に示すように、SQL*Plus を使用して大きなファイル表領域を 360 GB にリサイズすることにより、使用可能なデータベースストレージを増やします。[SQL> ALTER TABLESPACE EVTestTableSpace RESIZE 360G;
Tablespace altered.
次のスクリーンショットに示すように、データベースストレージが 360 GB に増大されました。ステップ 6 – ストレージサイズの変更中にデータベースのダウンタイムがなかったことを確認する
PL/SQL プロシージャの実行が中断されていないことを確認するために、evtesttab
表にクエリします。次のスクリーンショットに示すように、このクエリーはレコードが 10 秒間隔で挿入されていることを確認します。この例を使用して、データベースの可用性にいかなる影響をも与えることなく、ストレージ管理に LVM を使用する Oracle データベースに割り当てられたストレージを増やす方法を示します。エラスティックボリュームを使用して、データベースにプロビジョニングされた IOPS を変更したり、また EBS ボリュームタイプ (例えば、 io1 から gp2 など) を変更することも可能です。データベースの可用性やパフォーマンスに影響を与えずに行うことができます。
次の記事では、Oracle Automated Storage Management ( Oracle ASM ) を使用する Oracle データベース用の Amazon EC2 でのストレージレイアウトについて検討します。また、データベースの可用性に影響を与えずにデータベースストレージを拡張する方法を示します。
著者について
Ashok Shanmuga Sundaram 氏は Amazon Web Services のグローバルシステムインテグレータ (GSI) チームのパートナーソリューションアーキテクトです。同氏は GSIs と協同して、エンタープライズクラウドの採用、移行、戦略に関するガイダンスを提供しています。Ejaz Sayyed 氏は、アマゾン ウェブ サービスのグローバルシステムインテグレーター (GSI) チームのパートナーソリューションアーキテクトです。同氏の重点分野は、AWS データベースサービス、そして AWS 上のデータベースとデータウェアハウスの移行です。
Nael Haddad 氏は Amazon Web ServicesのElastic Block Store (EBS) チームのシニアプロダクトマネージャーです。同氏は複数の EBS 製品の提供に関連する新機能を推進しています。
コメント
コメントを投稿