58.14. LVM のトラブルシューティング
論理ボリュームマネージャー (LVM) ツールを使用して、LVM ボリュームおよびグループのさまざまな問題のトラブルシューティングを行うことができます。
58.14.1. LVM での診断データの収集
LVM コマンドが想定どおりに機能しない場合は、以下の方法で診断情報を収集できます。
手順
以下の方法を使用して、さまざまな診断データを収集します。
-
-v
引数を LVM コマンドに追加して、コマンドの出力の詳細レベルを増やします。v
を追加すると、詳細度をさらに増やすことができます。v
は最大 4 つ許可されます (例:-vvvv
)。 -
/etc/lvm/lvm.conf
設定ファイルのlog
セクションで、level
オプションの値を増やします。これにより、LVM がシステムログにより多くの情報を提供します。 問題が論理ボリュームのアクティブ化に関連する場合は、アクティブ化中に LVM がログメッセージをログに記録できるようにします。
-
/etc/lvm/lvm.conf
設定ファイルのlog
セクションでactivation = 1
オプションを設定します。 -
LVM コマンドに
-vvvv
オプションを付けて実行します。 - コマンドの出力を確認します。
activation
オプションを0
にリセットします。オプションを
0
にリセットしないと、メモリー不足の状況でシステムが応答しなくなる可能性があります。
-
診断目的で情報ダンプを表示します。
# lvmdump
追加のシステム情報を表示します。
# lvs -v
# pvs --all
# dmsetup info --columns
-
/etc/lvm/backup/
ディレクトリーの最後の LVM メタデータのバックアップと、/etc/lvm/archive/
ディレクトリー内のアーカイブバージョンを確認します。 現在の設定情報を確認します。
# lvmconfig
-
/run/lvm/hints
キャッシュファイルで、物理ボリュームを持つデバイスを記録します。
-
関連情報
-
システム上の
lvmdump(8)
man ページ
58.14.2. 障害が発生した LVM デバイスに関する情報の表示
障害が発生した論理ボリュームマネージャー (LVM) ボリュームに関するトラブルシューティング情報は、障害の原因を特定するのに役立ちます。最も一般的な LVM ボリューム障害の例を以下に示します。
例58.15 障害が発生したボリュームグループ
この例では、ボリュームグループ myvg を設定するデバイスの 1 つで障害が発生しました。ボリュームグループの使用可能性は、障害の種類によって異なります。たとえば、RAID ボリュームも関係している場合、ボリュームグループは引き続き使用できます。障害が発生したデバイスに関する情報も確認できます。
# vgs --options +devices
/dev/vdb1: open failed: No such device or address
/dev/vdb1: open failed: No such device or address
WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s.
WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1).
WARNING: Couldn't find all devices for LV myvg/mylv while checking used and assumed devices.
VG #PV #LV #SN Attr VSize VFree Devices
myvg 2 2 0 wz-pn- <3.64t <3.60t [unknown](0)
myvg 2 2 0 wz-pn- <3.64t <3.60t [unknown](5120),/dev/vdb1(0)
例58.16 障害が発生した論理ボリューム
この例では、デバイスの 1 つで障害が発生しました。このような障害が、ボリュームグループ内の論理ボリュームに障害が発生する原因となることがあります。コマンドの出力には、障害が発生した論理ボリュームが表示されます。
# lvs --all --options +devices
/dev/vdb1: open failed: No such device or address
/dev/vdb1: open failed: No such device or address
WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s.
WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1).
WARNING: Couldn't find all devices for LV myvg/mylv while checking used and assumed devices.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
mylv myvg -wi-a---p- 20.00g [unknown](0) [unknown](5120),/dev/sdc1(0)
例58.17 RAID 論理ボリュームのイメージの障害
次の例は、RAID 論理ボリュームのイメージに障害が発生した場合の pvs
および lvs
ユーティリティーからのコマンド出力を示しています。論理ボリュームは引き続き使用できます。
# pvs
Error reading device /dev/sdc1 at 0 length 4.
Error reading device /dev/sdc1 at 4096 length 4.
Couldn't find device with uuid b2J8oD-vdjw-tGCA-ema3-iXob-Jc6M-TC07Rn.
WARNING: Couldn't find all devices for LV myvg/my_raid1_rimage_1 while checking used and assumed devices.
WARNING: Couldn't find all devices for LV myvg/my_raid1_rmeta_1 while checking used and assumed devices.
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel_bp-01 lvm2 a-- <464.76g 4.00m
/dev/sdb1 myvg lvm2 a-- <836.69g 736.68g
/dev/sdd1 myvg lvm2 a-- <836.69g <836.69g
/dev/sde1 myvg lvm2 a-- <836.69g <836.69g
[unknown] myvg lvm2 a-m <836.69g 736.68g
# lvs -a --options name,vgname,attr,size,devices myvg
Couldn't find device with uuid b2J8oD-vdjw-tGCA-ema3-iXob-Jc6M-TC07Rn.
WARNING: Couldn't find all devices for LV myvg/my_raid1_rimage_1 while checking used and assumed devices.
WARNING: Couldn't find all devices for LV myvg/my_raid1_rmeta_1 while checking used and assumed devices.
LV VG Attr LSize Devices
my_raid1 myvg rwi-a-r-p- 100.00g my_raid1_rimage_0(0),my_raid1_rimage_1(0)
[my_raid1_rimage_0] myvg iwi-aor--- 100.00g /dev/sdb1(1)
[my_raid1_rimage_1] myvg Iwi-aor-p- 100.00g [unknown](1)
[my_raid1_rmeta_0] myvg ewi-aor--- 4.00m /dev/sdb1(0)
[my_raid1_rmeta_1] myvg ewi-aor-p- 4.00m [unknown](0)
58.14.3. ボリュームグループから見つからない LVM 物理ボリュームの削除
物理ボリュームに障害が発生した場合は、ボリュームグループ内の残りの物理ボリュームをアクティブにし、その物理ボリュームを使用していたすべての論理ボリュームをボリュームグループから削除できます。
手順
ボリュームグループ内の残りの物理ボリュームをアクティベートします。
# vgchange --activate y --partial myvg
削除する論理ボリュームを確認します。
# vgreduce --removemissing --test myvg
ボリュームグループから、失われた物理ボリュームを使用していた論理ボリュームをすべて削除します。
# vgreduce --removemissing --force myvg
オプション: 保持する論理ボリュームを誤って削除した場合には、
vgreduce
操作を元に戻すことができます。# vgcfgrestore myvg
警告シンプールを削除すると、LVM は操作を元に戻すことができません。
58.14.4. 見つからない LVM 物理ボリュームのメタデータの検索
物理ボリュームのボリュームグループメタデータ領域が誤って上書きされたり、破棄されたりする場合は、メタデータ領域が正しくないことを示すエラーメッセージか、システムが特定の UUID を持つ物理ボリュームを見つけることができないことを示すエラーメッセージが表示されます。
この手順では、物理ボリュームが見つからないか、破損している、アーカイブされた最新のメタデータを見つけます。
手順
物理ボリュームを含むボリュームグループのアーカイブされたメタデータファイルを検索します。アーカイブされたメタデータファイルは、
/etc/lvm/archive/volume-group-name_backup-number.vg
パスにあります。# cat /etc/lvm/archive/myvg_00000-1248998876.vg
00000-1248998876 を backup-number に置き換えます。ボリュームグループの番号が最も高い、既知の有効なメタデータファイルの最後のものを選択します。
物理ボリュームの UUID を検索します。以下の方法のいずれかを使用します。
論理ボリュームをリスト表示します。
# lvs --all --options +devices Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
-
アーカイブされたメタデータファイルを確認します。ボリュームグループ設定の
physical_volumes
セクションで、id =
のラベルが付いた値として UUID を検索します。 --partial
オプションを使用してボリュームグループを非アクティブにします。# vgchange --activate n --partial myvg PARTIAL MODE. Incomplete logical volumes will be processed. WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s. WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/vdb1). 0 logical volume(s) in volume group "myvg" now active
58.14.5. LVM 物理ボリュームでのメタデータの復元
この手順では、破損したり、新しいデバイスに置き換えたりする物理ボリュームのメタデータを復元します。物理ボリュームのメタデータ領域を書き換えて、物理ボリュームからデータを復旧できる場合があります。
作業用の LVM 論理ボリュームでこの手順を実行しないでください。誤った UUID を指定すると、データが失われることになります。
前提条件
- 見つからない物理ボリュームのメタデータを特定している。詳細は、見つからない LVM 物理ボリュームのメタデータの検索 を参照してください。
手順
物理ボリュームでメタデータを復元します。
# pvcreate --uuid physical-volume-uuid \ --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg \ block-device
注記コマンドは、LVM メタデータ領域のみを上書きし、既存のデータ領域には影響を与えません。
例58.18 /dev/vdb1 での物理ボリュームの復元
以下の例では、以下のプロパティーで
/dev/vdb1
デバイスを物理ボリュームとしてラベル付けします。-
FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk
の UUID -
VG_00050.vg
に含まれるメタデータ情報 (ボリュームグループの最新のアーカイブメタデータ)
# pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" \ --restorefile /etc/lvm/archive/VG_00050.vg \ /dev/vdb1 ... Physical volume "/dev/vdb1" successfully created
-
ボリュームグループのメタデータを復元します。
# vgcfgrestore myvg Restored volume group myvg
ボリュームグループの論理ボリュームを表示します。
# lvs --all --options +devices myvg
現在、論理ボリュームは非アクティブです。以下に例を示します。
LV VG Attr LSize Origin Snap% Move Log Copy% Devices mylv myvg -wi--- 300.00G /dev/vdb1 (0),/dev/vdb1(0) mylv myvg -wi--- 300.00G /dev/vdb1 (34728),/dev/vdb1(0)
論理ボリュームのセグメントタイプが RAID の場合は、論理ボリュームを再同期します。
# lvchange --resync myvg/mylv
論理ボリュームを非アクティブにします。
# lvchange --activate y myvg/mylv
-
ディスク上の LVM メタデータが、それを上書きしたものと同じかそれ以上のスペースを使用する場合は、この手順で物理ボリュームを回復できます。メタデータを上書きしたものがメタデータ領域を超えると、ボリューム上のデータが影響を受ける可能性があります。そのデータを復元するには、
fsck
コマンドを使用することができます。
検証
アクティブな論理ボリュームを表示します。
# lvs --all --options +devices LV VG Attr LSize Origin Snap% Move Log Copy% Devices mylv myvg -wi--- 300.00G /dev/vdb1 (0),/dev/vdb1(0) mylv myvg -wi--- 300.00G /dev/vdb1 (34728),/dev/vdb1(0)
58.14.6. LVM 出力の丸めエラー
ボリュームグループの領域使用量を報告する LVM コマンドは、報告された数を 2
進法に切り上げ、人間が判読できる出力を提供します。これには、vgdisplay
ユーティリティーおよび vgs
ユーティリティーが含まれます。
丸めの結果、報告された空き領域の値は、ボリュームグループが提供する物理エクステントよりも大きくなる可能性があります。報告された空き領域のサイズの論理ボリュームを作成しようとすると、以下のエラーが発生する可能性があります。
Insufficient free extents
エラーを回避するには、ボリュームグループの空き物理エクステントの数を調べる必要があります。これは、空き領域の正確な値です。次に、エクステントの数を使用して、論理ボリュームを正常に作成できます。
58.14.7. LVM ボリューム作成時の丸めエラーの防止
LVM 論理ボリュームを作成する場合は、丸めエラーを防ぐために論理ボリュームの論理エクステントの数を指定できます。
手順
ボリュームグループの空き物理エクステントの数を検索します。
# vgdisplay myvg
例58.19 ボリュームグループの空きエクステント
たとえば、以下のボリュームグループには 8780 個のの空き物理エクステントがあります。
--- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 6 VG Access read/write [...] Free PE / Size 8780 / 34.30 GB
論理ボリュームを作成します。ボリュームサイズをバイトではなくエクステントに入力します。
例58.20 エクステントの数を指定して論理ボリュームを作成
# lvcreate --extents 8780 --name mylv myvg
例58.21 残りの領域をすべて使用する論理ボリュームの作成
または、論理ボリュームを拡張して、ボリュームグループ内の残りの空き領域の割合を使用できます。以下に例を示します。
# lvcreate --extents 100%FREE --name mylv myvg
検証
ボリュームグループが使用するエクステントの数を確認します。
# vgs --options +vg_free_count,vg_extent_count VG #PV #LV #SN Attr VSize VFree Free #Ext myvg 2 1 0 wz--n- 34.30G 0 0 8780
58.14.8. LVM メタデータとそのディスク上の場所
LVM ヘッダーとメタデータ領域は、さまざまなオフセットとサイズで使用できます。
デフォルトの LVM ディスクヘッダー:
-
label_header
構造とpv_header
構造にあります。 - ディスクの 2 番目の 512 バイトセクターにあります。なお、物理ボリューム (PV) の作成時にデフォルト以外の場所が指定された場合、ヘッダーは最初のセクターまたは 3 番目のセクターにある可能性があります。
標準の LVM メタデータ領域:
- ディスクの先頭から 4096 バイトの位置から開始します。
- ディスクの先頭から 1 MiB の位置で終了します。
-
mda_header
構造を含む 512 バイトのセクターで開始します。
メタデータテキスト領域は、mda_header
セクターの後に始まり、メタデータ領域の終わりまで続きます。LVM VG メタデータテキストは、メタデータテキスト領域に循環的に書き込まれます。mda_header
は、テキスト領域内の最新の VG メタデータの場所を指します。
# pvck --dump headers /dev/sda
コマンドを使用して、ディスクから LVM ヘッダーを出力できます。このコマンドは、label_header
、pv_header
、mda_header
、およびメタデータテキストが見つかった場合はその場所を出力します。正常でないフィールドは CHECK
接頭辞を付けて出力されます。
LVM メタデータ領域のオフセットは PV を作成したマシンのページサイズと一致するため、メタデータ領域はディスクの先頭から 8K、16K、または 64K の位置から開始する場合もあります。
PV の作成時に、より大きなメタデータ領域またはより小さなメタデータ領域を指定できます。その場合、メタデータ領域は 1 MiB 以外の位置で終了する可能性があります。pv_header
は、メタデータ領域のサイズを指定します。
PV を作成するときに、必要に応じて 2 番目のメタデータ領域をディスクの末尾で有効にすることができます。pv_header
にはメタデータ領域の場所が含まれます。
58.14.9. ディスクからの VG メタデータの抽出
状況に応じて、次のいずれかの手順を選択して、ディスクから VG メタデータを抽出します。抽出したメタデータを保存する方法については、抽出したメタデータのファイルへの保存 を参照してください。
修復には、ディスクからメタデータを抽出せずに /etc/lvm/backup/
にあるバックアップファイルを使用できます。
手順
有効な
mda_header
から参照される現在のメタデータテキストを出力します。# pvck --dump metadata <disk>
例58.22 有効な
mda_header
からのメタデータテキスト# pvck --dump metadata /dev/sdb metadata text at 172032 crc Oxc627522f # vgname test segno 59 --- <raw metadata from disk> ---
有効な
mda_header
の検出に基づいて、メタデータ領域で見つかったすべてのメタデータコピーの場所を出力します。# pvck --dump metadata_all <disk>
例58.23 メタデータ領域内のメタデータコピーの場所
# pvck --dump metadata_all /dev/sdb metadata at 4608 length 815 crc 29fcd7ab vg test seqno 1 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 5632 length 1144 crc 50ea61c3 vg test seqno 2 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 7168 length 1450 crc 5652ea55 vg test seqno 3 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv
たとえば、ヘッダーが欠落しているか破損している場合は、
mda_header
を使用せずにメタデータ領域内のメタデータのすべてのコピーを検索します。# pvck --dump metadata_search <disk>
例58.24
mda_header
を使用しないメタデータ領域内のメタデータコピー# pvck --dump metadata_search /dev/sdb Searching for metadata at offset 4096 size 1044480 metadata at 4608 length 815 crc 29fcd7ab vg test seqno 1 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 5632 length 1144 crc 50ea61c3 vg test seqno 2 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv metadata at 7168 length 1450 crc 5652ea55 vg test seqno 3 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv
メタデータの各コピーの説明を表示するには、
dump
コマンドに-v
オプションを追加します。# pvck --dump metadata -v <disk>
例58.25 各メタデータコピーの説明の表示
# pvck --dump metadata -v /dev/sdb metadata text at 199680 crc 0x628cf243 # vgname my_vg seqno 40 --- my_vg { id = "dmEbPi-gsgx-VbvS-Uaia-HczM-iu32-Rb7iOf" seqno = 40 format = "lvm2" status = ["RESIZEABLE", "READ", "WRITE"] flags = [] extent_size = 8192 max_lv = 0 max_pv = 0 metadata_copies = 0 physical_volumes { pv0 { id = "8gn0is-Hj8p-njgs-NM19-wuL9-mcB3-kUDiOQ" device = "/dev/sda" device_id_type = "sys_wwid" device_id = "naa.6001405e635dbaab125476d88030a196" status = ["ALLOCATABLE"] flags = [] dev_size = 125829120 pe_start = 8192 pe_count = 15359 } pv1 { id = "E9qChJ-5ElL-HVEp-rc7d-U5Fg-fHxL-2QLyID" device = "/dev/sdb" device_id_type = "sys_wwid" device_id = "naa.6001405f3f9396fddcd4012a50029a90" status = ["ALLOCATABLE"] flags = [] dev_size = 125829120 pe_start = 8192 pe_count = 15359 }
このファイルは修復に使用できます。最初のメタデータ領域は、デフォルトでダンプメタデータに使用されます。ディスクの末尾に 2 番目のメタデータ領域がある場合は、--settings "mda_num=2"
オプションを使用して、代わりに 2 番目のメタデータ領域をダンプメタデータに使用できます。
58.14.10. 抽出したメタデータのファイルへの保存
修復のためにダンプされたメタデータを使用する必要がある場合は、-f
オプションと --settings
オプションを使用して、抽出したメタデータをファイルに保存する必要があります。
手順
-
-f <filename>
を--dump metadata
に追加すると、指定されたファイルに raw メタデータが書き込まれます。このファイルは修復に使用できます。 -
-f <filename>
を--dump metadata_all
または--dump metadata_search
に追加すると、すべての場所の raw メタデータが指定されたファイルに書き込まれます。 --dump metadata_all|metadata_search
からメタデータテキストのインスタンスを 1 つ保存するには、--settings "metadata_offset=<offset>"
を追加します。<offset>
には、リスト表示された出力の "metadata at <offset>" の値を使用します。例58.26 コマンドの出力:
# pvck --dump metadata_search --settings metadata_offset=5632 -f meta.txt /dev/sdb Searching for metadata at offset 4096 size 1044480 metadata at 5632 length 1144 crc 50ea61c3 vg test seqno 2 id FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv # head -2 meta.txt test { id = "FaCsSz-1ZZn-mTO4-Xl4i-zb6G-BYat-u53Fxv"
58.14.11. pvcreate コマンドと vgcfgrestore コマンドを使用した、LVM ヘッダーとメタデータが破損したディスクの修復
破損した物理ボリューム、または新しいデバイスに置き換えられた物理ボリューム上のメタデータとヘッダーを復元できます。物理ボリュームのメタデータ領域を書き換えて、物理ボリュームからデータを復旧できる場合があります。
これらの手順は、各コマンドの意味、現在のボリュームのレイアウト、実現する必要があるレイアウト、およびバックアップメタデータファイルの内容をよく理解している場合にのみ、細心の注意を払って使用する必要があります。これらのコマンドはデータを破損する可能性があるため、トラブルシューティングについては Red Hat グローバルサポートサービスに問い合わせることを推奨します。
前提条件
- 見つからない物理ボリュームのメタデータを特定している。詳細は、見つからない LVM 物理ボリュームのメタデータの検索 を参照してください。
手順
pvcreate
およびvgcfgrestore
コマンドに必要な次の情報を収集します。# pvs -o+uuid
コマンドを実行すると、ディスクと UUID に関する情報を収集できます。-
metadata-file は、VG の最新のメタデータバックアップファイルへのパスです (例:
/etc/lvm/backup/<vg-name>
)。 - vg-name は、破損または欠落している PV がある VG の名前です。
-
このデバイスの破損した PV の UUID は、
# pvs -i+uuid
コマンドの出力から取得した値です。 -
disk は、PV が配置されるディスクの名前です (例:
/dev/sdb
)。これが正しいディスクであることを確認するか、Red Hat サポートにお問い合わせください。正しいディスクでない場合、次の手順に従うとデータが失われる可能性があります。
-
metadata-file は、VG の最新のメタデータバックアップファイルへのパスです (例:
ディスク上に LVM ヘッダーを再作成します。
# pvcreate --restorefile <metadata-file> --uuid <UUID> <disk>
必要に応じて、ヘッダーが有効であることを確認します。
# pvck --dump headers <disk>
ディスク上に VG メタデータを復元します。
# vgcfgrestore --file <metadata-file> <vg-name>
必要に応じて、メタデータが復元されていることを確認します。
# pvck --dump metadata <disk>
VG のメタデータバックアップファイルがない場合は、抽出したメタデータのファイルへの保存 の手順を使用して取得できます。
検証
- 新しい物理ボリュームが損傷しておらず、ボリュームグループが正しく機能していることを確認するには、次のコマンドの出力を確認します。
# vgs
58.14.12. pvck コマンドを使用した、LVM ヘッダーとメタデータが破損したディスクの修復
これは pvcreate コマンドと vgcfgrestore コマンドを使用した、LVM ヘッダーとメタデータが破損したディスクの修復 の代替手段です。pvcreate
および vgcfgrestore
コマンドが機能しない場合があります。この方法は、損傷したディスクにターゲットを絞っています。
この方法では、pvck --dump
で抽出されたメタデータ入力ファイル、または /etc/lvm/backup
のバックアップファイルを使用します。可能であれば、同じ VG 内の別の PV から、または PV 上の 2 番目のメタデータ領域から pvck --dump
によって保存されたメタデータを使用します。詳細は、抽出したメタデータのファイルへの保存 を参照してください。
手順
ディスク上のヘッダーとメタデータを修復します。
# pvck --repair -f <metadata-file> <disk>
以下の部分には、
-
<metadata-file> は、VG の最新のメタデータを含むファイルです。これは
/etc/lvm/backup/vg-name
にすることも、pvck --dump metadata_search
コマンド出力から取得した、raw メタデータテキストを含むファイルにすることもできます。 -
<disk> は、PV が配置されるディスクの名前です (例:
/dev/sdb)
。データの損失を防ぐために、それが正しいディスクであることを確認してください。ディスクが正しいかどうかわからない場合は、Red Hat サポートにお問い合わせください。
-
<metadata-file> は、VG の最新のメタデータを含むファイルです。これは
メタデータファイルがバックアップファイルの場合、VG にメタデータを保持する各 PV で pvck --repair
を実行する必要があります。メタデータファイルが別の PV から抽出された raw メタデータである場合、pvck --repair
は破損した PV でのみ実行する必要があります。
検証
新しい物理ボリュームが損傷しておらず、ボリュームグループが正しく機能していることを確認するには、次のコマンドの出力を確認します。
# vgs <vgname>
# pvs <pvname>
# lvs <lvname>
58.14.13. LVM RAID のトラブルシューティング
LVM RAID デバイスのさまざまな問題のトラブルシューティングを実行して、データエラーの修正、デバイスの復旧、障害が発生したデバイスの置き換えを行うことができます。
58.14.13.1. RAID 論理ボリュームでのデータ整合性の確認
LVM は、RAID 論理ボリュームのスクラビングに対応します。RAID スクラビングは、アレイ内のデータおよびパリティーブロックをすべて読み込み、それが一貫しているかどうかを確認するプロセスです。lvchange --syncactionrepair
コマンドは、アレイでバックグラウンドの同期アクションを開始します。次の属性は、データの整合性に関する詳細を提供します。
raid_sync_action
フィールドには、RAID 論理ボリュームが実行している現在の同期アクションが表示されます。値は次のいずれかです。idle
-
すべての
sync
アクションが完了しました (何も実行していません)。 resync
- マシンの不完全なシャットダウン後にアレイを初期化または再同期しています。
recover
- アレイ内のデバイスを交換しています。
check
- アレイの不一致を検索しています。
repair
- 不一致を検索して修復しています。
-
raid_mismatch_count
フィールドには、check
アクション中に検出された不一致の数が表示されます。 -
Cpy%Sync
フィールドには、sync
アクションの進行状況が表示されます。 lv_attr
フィールドは、追加のインジケーターを提供します。このフィールドのビット 9 は、論理ボリュームの正常性を示し、以下のインジケーターに対応しています。m
またはmismatches
- RAID 論理ボリュームに不一致があることを示します。この文字は、スクラビング操作によって RAID の一貫性のない部分が検出された後に表示されます。
r
またはrefresh
- LVM がデバイスラベルを読み取ることができ、デバイスが動作しているとみなされる場合でも、RAID アレイ内に障害が発生したデバイスがあることを示します。デバイスが利用可能になったことをカーネルに通知するように論理ボリュームを更新するか、デバイスに障害が発生したと思われる場合はデバイスを交換します。
手順
オプション: スクラビングプロセスが使用する I/O 帯域幅を制限します。RAID スクラビング操作を実行すると、
sync
アクションに必要なバックグラウンド I/O が、LVM デバイスへの他の I/O (ボリュームグループメタデータの更新など) よりも優先される可能性があります。これにより、他の LVM 操作が遅くなる可能性があります。リカバリースロットルを実装してスクラビング操作のレートを制御できます。
lvchange --syncaction
コマンドで--maxrecoveryrate Rate[bBsSkKmMgG]
または--minrecoveryrate Rate[bBsSkKmMgG]
を使用して復旧速度を設定できます。詳細は、最小/最大 I/O レートオプション を参照してください。Rate 値は、アレイ内の各デバイスに対する 1 秒あたりのデータ通信量を指定します。接尾辞を指定しないと、オプションはデバイスごとの 1 秒あたらりの kiB を想定します。
アレイ内の不一致数を修復せずに、アレイ内の不一致の数を表示します。
# lvchange --syncaction check my_vg/my_lv
このコマンドは、アレイでバックグラウンドの同期アクションを開始します。
-
オプション:
var/log/syslog
ファイルでカーネルメッセージを確認します。 アレイ内の不一致を修正します。
# lvchange --syncaction repair my_vg/my_lv
このコマンドは、RAID 論理ボリューム内の障害が発生したデバイスを修復または交換します。このコマンドを実行したら、
var/log/syslog
ファイルでカーネルメッセージを確認できます。
検証
スクラビング操作に関する情報を表示します。
# lvs -o +raid_sync_action,raid_mismatch_count my_vg/my_lv LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches my_lv my_vg rwi-a-r--- 500.00m 100.00 idle 0
関連情報
-
システム上の
lvchange(8)
およびlvmraid(7)
man ページ - 最小/最大 I/O レートオプション
58.14.13.2. 論理ボリュームに障害が発生した RAID デバイスの交換
RAID は従来の LVM ミラーリングとは異なります。LVM ミラーリングの場合は、障害が発生したデバイスを削除します。そうしないと、障害が発生したデバイスで RAID アレイが動作し続ける間、ミラーリングされた論理ボリュームがハングします。RAID1 以外の RAID レベルの場合、デバイスを削除すると、デバイスはより低いレベルの RAID に変換されます (たとえば、RAID6 から RAID5 へ、または RAID4 または RAID5 から RAID0 への変換)。
LVM では、障害が発生したデバイスを取り外して代替デバイスを割り当てる代わりに、lvconvert
コマンドの --repair
引数を使用して、RAID 論理ボリューム内で物理ボリュームとして機能する障害が発生したデバイスを交換できます。
前提条件
ボリュームグループには、障害が発生したデバイスを置き換えるのに十分な空き容量を提供する物理ボリュームが含まれています。
ボリュームグループに十分な空きエクステントがある物理ボリュームがない場合は、
vgextend
ユーティリティーを使用して、十分なサイズの物理ボリュームを新たに追加します。
手順
RAID 論理ボリュームを表示します。
# lvs --all --options name,copy_percent,devices my_vg LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
/dev/sdc デバイスに障害が発生したら、RAID 論理ボリュームを表示します。
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] [unknown](1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] [unknown](0) [my_lv_rmeta_2] /dev/sdd1(0)
障害が発生したデバイスを交換します。
# lvconvert --repair my_vg/my_lv /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Faulty devices in my_vg/my_lv successfully replaced.
オプション: 障害が発生したデバイスを置き換える物理ボリュームを手動で指定します。
# lvconvert --repair my_vg/my_lv replacement_pv
代替の論理ボリュームを調べます。
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address /dev/sdc1: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. LV Cpy%Sync Devices my_lv 43.79 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
障害が発生したデバイスをボリュームグループから削除するまで、LVM ユーティリティーは、障害が発生したデバイスが見つけられないことを示しています。
障害が発生したデバイスをボリュームグループから削除します。
# vgreduce --removemissing my_vg
検証
障害が発生したデバイスを取り外した後、利用可能な物理ボリュームを表示します。
# pvscan PV /dev/sde1 VG rhel_virt-506 lvm2 [<7.00 GiB / 0 free] PV /dev/sdb1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free] PV /dev/sdd1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free] PV /dev/sdd1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free]
障害が発生したデバイスを交換した後、論理ボリュームを調べます。
# lvs --all --options name,copy_percent,devices my_vg my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
関連情報
-
システム上の
lvconvert(8)
およびvgreduce(8)
man ページ
58.14.14. マルチパス化された LVM デバイスに対する重複した物理ボリューム警告のトラブルシューティング
マルチパスストレージで LVM を使用する場合は、ボリュームグループまたは論理ボリュームのリストを表示する LVM コマンドを実行すると、以下のようなメッセージが表示される場合があります。
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/dm-5 not /dev/sdd Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowerb not /dev/sde Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sddlmab not /dev/sdf
これらの警告のトラブルシューティングにより、LVM が警告を表示する理由を理解し、または警告を非表示にできます。
58.14.14.1. 重複した PV 警告の原因
Device Mapper Multipath (DM Multipath)、EMC PowerPath、または Hitachi Dynamic Link Manager (HDLM) などのマルチパスソフトウェアがシステム上のストレージデバイスを管理すると、特定の論理ユニット (LUN) への各パスが異なる SCSI デバイスとして登録されます。
マルチパスソフトウェアは、各パスにマップする新しいデバイスを作成します。各 LUN には、同じ基礎となるデータを参照する /dev
ディレクトリーに複数のデバイスノードがあるため、すべてのデバイスノードには同じ LVM メタデータが含まれます。
マルチパスソフトウェア | LUN への SCSI パス | マルチパスデバイスパスへのマッピング |
---|---|---|
DM Multipath |
|
|
EMC PowerPath |
| |
HDLM |
|
複数のデバイスノードが原因で、LVM ツールは同じメタデータを複数回検出し、複製として報告します。
58.14.14.2. PV の重複警告が発生した場合
LVM は、以下のいずれかのケースで重複した PV 警告を表示します。
- 同じデバイスへの単一パス
出力に表示される 2 つデバイスは、両方とも同じデバイスへの単一パスです。
以下の例は、重複デバイスが、同じデバイスへの両方の単一パスである、重複した PV の警告を示しています。
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sdd not /dev/sdf
multipath -ll
コマンドを使用して現在の DM Multipath トポロジーをリスト表示すると、同じマルチパスマップの下に/dev/sdd
と/dev/sdf
の両方を確認できます。これらの重複メッセージは警告のみで、LVM 操作が失敗しているわけではありません。代わりに、LVM が物理ボリュームとしてデバイスのいずれかのみを使用して他を無視していることを警告します。
メッセージは、LVM が誤ったデバイスを選択するか、ユーザーが警告を中断していることを示す場合は、フィルターを適用できます。フィルターは、物理ボリュームに必要なデバイスのみを検索し、マルチパスデバイスへの基礎となるパスを省略するように LVM を設定します。その結果、警告が表示されなくなりました。
- マルチパスマップ
出力に表示される 2 つのデバイスは、両方ともマルチパスマップです。
以下の例は、両方のマルチパスマップである 2 つのデバイスに対する重複した物理ボリューム警告を示しています。重複した物理ボリュームは、同じデバイスへの異なるパスではなく、2 つのデバイスに置かれます。
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/mapper/mpatha not /dev/mapper/mpathc Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowera not /dev/emcpowerh
この状況は、同じデバイスへの両方の単一パスであるデバイスに対する重複する警告よりも複雑です。これらの警告は、多くの場合、マシンがアクセスできないデバイス (LUN クローンやミラーなど) にアクセスしていることを意味します。
マシンから削除するデバイスが分からないと、この状況は復旧できない可能性があります。Red Hat は、この問題に対処するために Red Hat テクニカルサポートにお問い合わせください。
58.14.14.3. PV の重複警告を防ぐ LVM デバイスフィルターの例
以下の例は、1 つの論理ユニット (LUN) への複数のストレージパスによって引き起こされる、重複した物理ボリュームの警告を回避する LVM デバイスフィルターを示しています。
論理ボリュームマネージャー (LVM) のフィルターを設定して、すべてのデバイスのメタデータをチェックできます。メタデータには、ルートボリュームグループを含むローカルハードディスクドライブとマルチパスデバイスが含まれます。マルチパスデバイスへの基礎となるパス (/dev/sdb
、/dev/sdd
など) を拒否すると、マルチパスデバイス自体で一意の各メタデータ領域が一度検出されるため、重複した物理ボリュームの警告を回避できます。
最初のハードディスクドライブ上の 2 番目のパーティションとデバイスマッパー (DM) マルチパスデバイスを許可し、それ以外をすべて拒否するには、次のように入力します。
filter = [ "a|/dev/sda2$|", "a|/dev/mapper/mpath.*|", "r|.*|" ]
すべての HP SmartArray コントローラーと EMC PowerPath デバイスを許可するには、次のように入力します。
filter = [ "a|/dev/cciss/.*|", "a|/dev/emcpower.*|", "r|.*|" ]
最初の IDE ドライブおよびマルチパスデバイス上のパーティションを許可するには、次のように入力します。
filter = [ "a|/dev/hda.*|", "a|/dev/mapper/mpath.*|", "r|.*|" ]