ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で提供されています。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときは、これらの値をクラウド環境に固有の値に置き換えます。
Oracle LinuxでのRAID論理ボリュームの構成
イントロダクション
LVM RAIDは、複数の物理デバイスを使用してパフォーマンスを改善したり、デバイスの障害を許容したりする論理ボリューム(LV)を作成する方法です。LVMでは、物理デバイスは単一のボリュームグループ(VG)内の物理ボリューム(PV)です。
このチュートリアルでは、Oracle Linux Volume Managerユーティリティーと連携してRAID論理ボリュームを作成し、ディスク障害に対処します。
目的
- RAID論理ボリュームの作成
- RAID論理ボリュームのサイズ変更
- 障害が発生したRAIDデバイスを回復する
前提条件
次の構成を持つ任意の Oracle Linux 8システム:
- sudo権限を持つroot以外のユーザー
- LVMで使用する追加のブロック・ボリューム
演習環境の設定
ノート:無料ラボ環境を使用する場合、接続およびその他の使用手順については、Oracle Linux Labの基本を参照してください。
-
まだ接続していない場合は、端末を開き、ssh経由で前述の各インスタンスに接続します。
ssh oracle@<ip_address_of_instance>
-
ブロック・ボリュームが存在することを確認します。
sudo lsblk
空きラボ環境の出力には、既存のファイルシステムの /dev/sdaと、使用可能なディスク /dev/sdb、/dev/sdc、/dev/sdd、および /dev/sdeが表示されます。2つの追加のディスク(/dev/sdf、/dev/sdg)もあり、あとで使用します。
物理ボリューム(PV)
-
使用可能なディスクを使用して物理ボリューム(PV)を作成します。
sudo pvcreate -v /dev/sd[b-e]
-v
オプションを指定してコマンドを実行し、詳細情報を取得します。 -
PV作成を確認します。
sudo pvs
出力例:
[oracle@ol-node01 ~]$ sudo pvs PV VG Fmt Attr PSize PFree /dev/sda3 ocivolume lvm2 a-- 45.47g 0 /dev/sdb lvm2 --- 50.00g 50.00g /dev/sdc lvm2 --- 50.00g 50.00g /dev/sdd lvm2 --- 50.00g 50.00g /dev/sde lvm2 --- 50.00g 50.00g
ボリューム・グループ(VG)
-
新しく作成した物理ボリュームを使用してボリューム・グループ(VG)を作成します。
sudo vgcreate -v foo /dev/sd[b-e]
-
VGの作成を確認します。
sudo vgs
出力例:
[oracle@ol-node01 ~]$ sudo vgs VG #PV #LV #SN Attr VSize VFree foo 4 0 0 wz--n- 199.98g 199.98g ocivolume 1 2 0 wz--n- 45.47g 0
論理ボリューム(LV)
-
RAID論理ボリューム(LV)を作成します。
sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo
--type
: RAIDレベルを設定します。LVMは、RAIDレベル0、1、4、5、6、および10をサポートします。-i
: RAID 4/5/6論理ボリュームのストライプ(デバイス)の番号(n)を設定します。raid5 LVには n+1デバイスが必要です。-L
: RAIDアレイの合計サイズ。-n
: RAIDアレイの名前。
出力例:
[oracle@ol-node01 ~]$ sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo Using default stripesize 64.00 KiB. Rounding size 5.00 GiB (1280 extents) up to stripe boundary size 5.00 GiB (1281 extents). Logical volume "rr" created.
詳細は、
lvmraid(7)
マニュアル・ページを参照してください。 -
LVの作成を確認します。
sudo lvdisplay foo
出力には、foo VG内に含まれるすべての論理ボリュームが表示されます。
出力例:
[oracle@ol-node01 ~]$ sudo lvdisplay foo --- Logical volume --- LV Path /dev/foo/rr LV Name rr VG Name foo LV UUID vghyRi-nKGM-3b9t-tB1I-biJX-10h6-UJWvm2 LV Write Access read/write LV Creation host, time ol-node01, 2022-05-19 01:23:46 +0000 LV Status available # open 0 LV Size 5.00 GiB Current LE 1281 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 1024 Block device 252:10
-
LVタイプを表示します。
sudo lvs -o name,segtype foo/rr
lvs
コマンドは、結果を絞り込むオプションとしてフルLVパスを使用できます。
出力例:
[oracle@ol-node01 ~]$ sudo lvs -o name,segtype /dev/foo/rr LV Type rr raid5
ファイルシステムの作成
-
RAID LVにXFSファイル・システムを作成します。
sudo mkfs.xfs -f /dev/foo/rr
-f
:既存のファイル・システムを上書きします。
出力例:
[oracle@ol-node01 ~]$ sudo mkfs.xfs -f /dev/foo/rr meta-data=/dev/foo/rr isize=512 agcount=8, agsize=163952 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=1311616, imaxpct=25 = sunit=16 swidth=48 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
ノート: XFSファイル・システムは、作成後にサイズを減らすことはできません。ただし、xfs_growfsコマンドでは拡大できます。
RAID LVのマウント
-
ファイルシステムをマウントします。
sudo mkdir -p /u01 sudo mount /dev/foo/rr /u01
-
ファイル・システムのディスク使用量をレポートします。
df -h
出力例:
[oracle@ol-node01 ~]$ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/foo-rr 5.0G 69M 5.0G 2% /u01
RAID LVのサイズ変更
RAID LVのサイズを変更するには、いくつかの方法があります。
- LVを増やすには、
lvresize
またはlvextend
を使用します。 - LVを縮小するには、
lvresize
またはlvreduce
を使用します。 lvconvert
を--stripes N
パラメータとともに使用して、ストライプの数を変更します。
重要: LVの縮小は危険であるため、データが失われる可能性があります。LVでXFSファイルシステムを実行するときは、XFSがファイルシステムのサイズを減らさないため、LVの縮小を回避してください。
RAID LV容量を増やす
-
VGで使用可能な空き領域を使用して、RAID LVサイズを10Gに増やします。
sudo lvresize -L 10G foo/rr
サイズを10G増やすには、かわりにオプション
-L +10G
を使用します。 -
LVが10Gに増加したことを確認します。
sudo lvs foo/rr
LSizeに10gが表示されます。
-
ファイルシステムを拡張します。
sudo xfs_growfs /u01
-
更新されたファイルシステムのディスク使用状況を報告します。
df -h
-
続行する前に、RAID同期のステータスを確認します。
警告:次のステップへ迅速に進みすぎると、foo/rrが同期していないためにエラーが発生する可能性があります。
このエラーは、前述のRAID LVのサイズ変更後に同期が完了しなかった場合に発生します。
watch sudo lvs foo/rr
でRAID LVをチェックし、Cpy%Syncフィールドが100%に達するまで待ちます。Cpy%Syncが100%に達したら、ctrl-c
を使用してwatch
コマンドを終了します。
詳細は、lvresize(8)
、lvextend(8)
、および lvreduce(8)
のマニュアルページを参照してください。
RAID LVでのストライプの増加
RAID LVのストライプ数を変更すると、全体的な容量が増加し、RAID4/5/6/10で使用できます。追加の各ストライプには、ボリュームグループ内の割り当てられていない物理ボリューム(デバイス)の数が等しい必要があります。
-
VG fooに存在する物理ボリューム(PV)を確認します。
sudo pvs
出力 /dev/sdb、/dev/sdc、/dev/sdd、および /dev/sdeはすべてVG fooに関連付けられています。
-
未使用の物理ボリュームがあるかどうかを確認します。
sudo pvdisplay -m /dev/sd[b-e]
出力例:
--- Physical volume --- PV Name /dev/sdb VG Name foo PV Size 50.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 12799 Free PE 11944 Allocated PE 855 PV UUID Q1uEMC-0zL1-dgrA-9rIT-1xrA-Vnfr-2E8tJT --- Physical Segments --- Physical extent 0 to 0: Logical volume /dev/foo/rr_rmeta_0 Logical extents 0 to 0 Physical extent 1 to 854: Logical volume /dev/foo/rr_rimage_0 Logical extents 0 to 853 Physical extent 855 to 12798: FREE ...
-m
オプションを指定したpvdisplay
コマンドは、論理ボリュームおよび論理エクステントへの物理エクステントのマッピングを示しています。この出力例のPV /dev/sdbは、RAID LVに関連付けられた物理エクステントを示しています。/dev/sdc、/dev/sdd、および /dev/sdeでも同じように表示されます。 -
VGに別のPVを追加します。
既存のRAID LVが既存のすべての物理ボリュームを使用するため、PV fooに /dev/sdfを追加します。
sudo vgextend foo /dev/sdf
この出力は、
vgextend
コマンドが /dev/sdfをPVに変換してからVG fooに追加することを示しています。 -
RAID LVにストライプを追加します。
sudo lvconvert --stripes 4 foo/rr
プロンプトに
y
で応答します。出力例:
[oracle@ol-node01 ~]$ sudo lvconvert --stripes 4 foo/rr Using default stripesize 64.00 KiB. WARNING: Adding stripes to active and open logical volume foo/rr will grow it from 2562 to 3416 extents! Run "lvresize -l2562 foo/rr" to shrink it or use the additional capacity. Are you sure you want to add 1 images to raid5 LV foo/rr? [y/n]: y Logical volume foo/rr successfully converted.
-
LVの新しいサイズを確認します。
sudo lvs foo/rr
出力例:
[oracle@ol-node01 ~]$ sudo lvs foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert rr foo rwi-aor--- 13.34g 2.24
容量(LSize)は 3.34gによって成長し、同期(Cpy%Sync)が開始します。同期とは、RAID LV内のすべてのデバイスを相互に一貫させるプロセスであり、RAID LV内のデバイスを変更または交換するときに完全同期が必要となります。
-
同期のステータスを確認します。
進捗が100%になるまでチェックを実行します。
watch sudo lvs foo/rr
Cpy%Syncが100%に達したら、
ctrl-c
を使用してwatch
コマンドを終了します。watch
コマンドを使用するその他の方法は次のとおりです。watch -n 5 sudo lvs foo/rr
を実行して、デフォルトの2ではなく5秒ごとにリフレッシュします。timeout 60 watch -n 5 sudo lvs foo/rr
を実行して、60秒後に自動的に終了します。
-
/dev/sdfが含まれる新しいセグメント範囲とPVを表示します。
sudo lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset foo
LVで障害が発生したRAIDデバイスを回復する
RAIDアレイは、障害が発生したデバイスで引き続き実行できます。RAID1以外のRAIDタイプのデバイスを削除すると、下位レベルのRAID (この場合はRAID5からRAID0)に変換されます。
LVMでは、障害が発生したデバイスに対して lvconvert --repair
コマンドを使用して、障害が発生したドライブを取り外して交換を行うのではなく、1つの手順でRAIDボリューム内の障害が発生したデバイスを交換できます。
-
現在のRAID LVレイアウトを確認します。
sudo lvs --all --options name,copy_percent,devices foo
-
/dev/sddの障害をシミュレートします。
echo 1 | sudo tee /sys/block/sdd/device/delete
-
失敗したら、RAID LVレイアウトを再チェックします。
sudo lvs --all --options name,copy_percent,devices foo
[unknown]デバイスに注意してください。
出力例:
[oracle@ol-node01 ~]$ sudo lvs --all --options name,copy_percent,devices foo WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). LV Cpy%Sync Devices rr 100.00 rr_rimage_0(0),rr_rimage_1(0),rr_rimage_2(0),rr_rimage_3(0),rr_rimage_4(0) [rr_rimage_0] /dev/sdb(855) [rr_rimage_0] /dev/sdb(1) [rr_rimage_1] /dev/sdc(855) [rr_rimage_1] /dev/sdc(1) [rr_rimage_2] [unknown](855) [rr_rimage_2] [unknown](1) [rr_rimage_3] /dev/sde(855) [rr_rimage_3] /dev/sde(1) [rr_rimage_4] /dev/sdf(855) [rr_rimage_4] /dev/sdf(1) [rr_rmeta_0] /dev/sdb(0) [rr_rmeta_1] /dev/sdc(0) [rr_rmeta_2] [unknown](0) [rr_rmeta_3] /dev/sde(0) [rr_rmeta_4] /dev/sdf(0)
-
障害が発生したデバイスを交換します。
sudo lvconvert --repair foo/rr
プロンプトに
y
で応答します。このコマンドは、VGで使用する使用可能な領域またはデバイスを見つけることができません。
出力例:
[oracle@ol-node01 ~]$ sudo lvconvert --repair foo/rr WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Insufficient free space: 856 extents needed, but only 0 available Failed to replace faulty devices in foo/rr.
警告:エラーに "Unable to replace device in foo/rr while it is in-sync"メッセージが含まれている場合は、
watch sudo lvs foo/rr
を実行してRAID-LVが同期中であり、Cpy%Syncが100%であることを確認します。その後、lvconvert
コマンドを再試行します。 -
デバイス /dev/sdgをVGに追加します
sudo vgextend foo /dev/sdg
出力内の WARNINGメッセージは、まだドライブに障害が発生していないことが原因です。
-
障害が発生したドライブの交換を再試行します。
sudo lvconvert --repair foo/rr
y
でプロンプトに再度応答します。出力には、見つからないドライブに関する WARNINGメッセージが再度表示されますが、コマンドはVG内の障害のあるデバイスを正常に交換しました。
-
レイアウトを確認します。
sudo lvs --all --options name,copy_percent,devices foo
/dev/sdgは、すべての [unknown]デバイスエントリを置き換えたことに注意してください。
-
障害が発生したデバイスをVGから取り外します。
LVMユーティリティーは、LVMがVGから取り外すまで、障害が発生したデバイスを検出できないことを報告し続けます。
sudo vgreduce --removemissing foo
出力内の WARNINGメッセージは、まだドライブに障害が発生していないことが原因です。
-
続行する前に、RAID同期のステータスを確認します。
警告:次のセクションにすばやく続行すると、次のエラー・メッセージが表示される場合があります:
出力例:
[oracle@ol-node01 ~]$ sudo lvchange --syncaction check foo/rr foo/rr state is currently "recover". Unable to switch to "check".
このエラーは、RAID LVにストライプを追加したあとで同期が完了しなかった場合に発生します。
watch sudo lvs foo/rr
でRAID LVをチェックし、Cpy%Syncフィールドが100%に達するまで待ちます。
RAID LVでのデータ整合性のチェック(スクラブ)
LVMは、アレイ内のすべてのデータとパリティーブロックを読み取り、一貫性をチェックするRAID LVのスクラビング機能を提供します。
-
チェックモードでスクラブを開始します。
sudo lvchange --syncaction check foo/rr
-
スクラブ・アクションのステータスを表示します。
watch sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr
出力例:
[oracle@ol-node01 ~]$ sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr LV SyncAction Cpy%Sync rr check 30.08
-
スクラブ(同期)が完了したら、見つかった矛盾するブロックの数を表示します。
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
raid_sync_action
オプションは、次のいずれかの値を含む SyncActionフィールドを表示します。idle
:すべてのアクションが完了しました。resync
:システム障害後の初期化またはリカバリ。recover
:配列内のデバイスの置換。check
:違いを探しています。repair
:差異を見つけて修復します。
出力例:
[oracle@ol-node01 ~]$ lvs -o +raid_sync_action,raid_mismatch_count foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches rr foo rwi-aor--- 13.34g 44.42 check 0
出力には、0個の不一致(不一致)が表示されます。
-
(オプション)配列の違いを修正します。
このサンプル配列には差異が存在しない可能性があるため、このステップはオプションです。
sudo lvchange --syncaction repair foo/rr
-
(オプション)修復のステータスを確認します。
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
SyncActionフィールドが repairに変更されたことを確認します。
詳細は、lvchange(8)
および lvmraid(7)
のマニュアルページを参照してください。
詳細情報:
その他の学習リソース
他のラボをdocs.oracle.com/learnで探すか、Oracle Learning YouTubeチャネルでより無料の学習コンテンツにアクセスします。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品のドキュメントは、Oracle Help Centerを参照してください。
Configure RAID Logical Volumes on Oracle Linux
F57867-02
May 2022
Copyright © 2021, Oracle and/or its affiliates.