58.14. LVM のトラブルシューティング


論理ボリュームマネージャー (LVM) ツールを使用して、LVM ボリュームおよびグループのさまざまな問題のトラブルシューティングを行うことができます。

58.14.1. LVM での診断データの収集

LVM コマンドが想定どおりに機能しない場合は、以下の方法で診断情報を収集できます。

手順

  • 以下の方法を使用して、さまざまな診断データを収集します。

    • -v 引数を LVM コマンドに追加して、コマンドの出力の詳細レベルを増やします。v を追加すると、詳細度をさらに増やすことができます。v は最大 4 つ許可されます (例:-vvvv)。
    • /etc/lvm/lvm.conf 設定ファイルの log セクションで、level オプションの値を増やします。これにより、LVM がシステムログにより多くの情報を提供します。
    • 問題が論理ボリュームのアクティブ化に関連する場合は、アクティブ化中に LVM がログメッセージをログに記録できるようにします。

      1. /etc/lvm/lvm.conf 設定ファイルの log セクションで activation = 1 オプションを設定します。
      2. LVM コマンドに -vvvv オプションを付けて実行します。
      3. コマンドの出力を確認します。
      4. 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 物理ボリュームの削除

物理ボリュームに障害が発生した場合は、ボリュームグループ内の残りの物理ボリュームをアクティブにし、その物理ボリュームを使用していたすべての論理ボリュームをボリュームグループから削除できます。

手順

  1. ボリュームグループ内の残りの物理ボリュームをアクティベートします。

    # vgchange --activate y --partial myvg
  2. 削除する論理ボリュームを確認します。

    # vgreduce --removemissing --test myvg
  3. ボリュームグループから、失われた物理ボリュームを使用していた論理ボリュームをすべて削除します。

    # vgreduce --removemissing --force myvg
  4. オプション: 保持する論理ボリュームを誤って削除した場合には、vgreduce 操作を元に戻すことができます。

    # vgcfgrestore myvg
    警告

    シンプールを削除すると、LVM は操作を元に戻すことができません。

58.14.4. 見つからない LVM 物理ボリュームのメタデータの検索

物理ボリュームのボリュームグループメタデータ領域が誤って上書きされたり、破棄されたりする場合は、メタデータ領域が正しくないことを示すエラーメッセージか、システムが特定の UUID を持つ物理ボリュームを見つけることができないことを示すエラーメッセージが表示されます。

この手順では、物理ボリュームが見つからないか、破損している、アーカイブされた最新のメタデータを見つけます。

手順

  1. 物理ボリュームを含むボリュームグループのアーカイブされたメタデータファイルを検索します。アーカイブされたメタデータファイルは、/etc/lvm/archive/volume-group-name_backup-number.vg パスにあります。

    # cat /etc/lvm/archive/myvg_00000-1248998876.vg

    00000-1248998876 を backup-number に置き換えます。ボリュームグループの番号が最も高い、既知の有効なメタデータファイルの最後のものを選択します。

  2. 物理ボリュームの 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 を指定すると、データが失われることになります。

前提条件

手順

  1. 物理ボリュームでメタデータを復元します。

    # 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
  2. ボリュームグループのメタデータを復元します。

    # vgcfgrestore myvg
    
      Restored volume group myvg
  3. ボリュームグループの論理ボリュームを表示します。

    # 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)
  4. 論理ボリュームのセグメントタイプが RAID の場合は、論理ボリュームを再同期します。

    # lvchange --resync myvg/mylv
  5. 論理ボリュームを非アクティブにします。

    # lvchange --activate y myvg/mylv
  6. ディスク上の 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 論理ボリュームを作成する場合は、丸めエラーを防ぐために論理ボリュームの論理エクステントの数を指定できます。

手順

  1. ボリュームグループの空き物理エクステントの数を検索します。

    # 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
  2. 論理ボリュームを作成します。ボリュームサイズをバイトではなくエクステントに入力します。

    例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_headerpv_headermda_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 グローバルサポートサービスに問い合わせることを推奨します。

前提条件

手順

  1. 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 サポートにお問い合わせください。正しいディスクでない場合、次の手順に従うとデータが失われる可能性があります。
  2. ディスク上に LVM ヘッダーを再作成します。

    # pvcreate --restorefile <metadata-file> --uuid <UUID> <disk>

    必要に応じて、ヘッダーが有効であることを確認します。

    # pvck --dump headers <disk>
  3. ディスク上に 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 サポートにお問い合わせください。
注記

メタデータファイルがバックアップファイルの場合、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 アレイ内に障害が発生したデバイスがあることを示します。デバイスが利用可能になったことをカーネルに通知するように論理ボリュームを更新するか、デバイスに障害が発生したと思われる場合はデバイスを交換します。

手順

  1. オプション: スクラビングプロセスが使用する I/O 帯域幅を制限します。RAID スクラビング操作を実行すると、sync アクションに必要なバックグラウンド I/O が、LVM デバイスへの他の I/O (ボリュームグループメタデータの更新など) よりも優先される可能性があります。これにより、他の LVM 操作が遅くなる可能性があります。

    リカバリースロットルを実装してスクラビング操作のレートを制御できます。lvchange --syncaction コマンドで --maxrecoveryrate Rate[bBsSkKmMgG] または --minrecoveryrate Rate[bBsSkKmMgG] を使用して復旧速度を設定できます。詳細は、最小/最大 I/O レートオプション を参照してください。

    Rate 値は、アレイ内の各デバイスに対する 1 秒あたりのデータ通信量を指定します。接尾辞を指定しないと、オプションはデバイスごとの 1 秒あたらりの kiB を想定します。

  2. アレイ内の不一致数を修復せずに、アレイ内の不一致の数を表示します。

    # lvchange --syncaction check my_vg/my_lv

    このコマンドは、アレイでバックグラウンドの同期アクションを開始します。

  3. オプション: var/log/syslog ファイルでカーネルメッセージを確認します。
  4. アレイ内の不一致を修正します。

    # lvchange --syncaction repair my_vg/my_lv

    このコマンドは、RAID 論理ボリューム内の障害が発生したデバイスを修復または交換します。このコマンドを実行したら、var/log/syslog ファイルでカーネルメッセージを確認できます。

検証

  1. スクラビング操作に関する情報を表示します。

    # 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

関連情報

58.14.13.2. 論理ボリュームに障害が発生した RAID デバイスの交換

RAID は従来の LVM ミラーリングとは異なります。LVM ミラーリングの場合は、障害が発生したデバイスを削除します。そうしないと、障害が発生したデバイスで RAID アレイが動作し続ける間、ミラーリングされた論理ボリュームがハングします。RAID1 以外の RAID レベルの場合、デバイスを削除すると、デバイスはより低いレベルの RAID に変換されます (たとえば、RAID6 から RAID5 へ、または RAID4 または RAID5 から RAID0 への変換)。

LVM では、障害が発生したデバイスを取り外して代替デバイスを割り当てる代わりに、lvconvert コマンドの --repair 引数を使用して、RAID 論理ボリューム内で物理ボリュームとして機能する障害が発生したデバイスを交換できます。

前提条件

  • ボリュームグループには、障害が発生したデバイスを置き換えるのに十分な空き容量を提供する物理ボリュームが含まれています。

    ボリュームグループに十分な空きエクステントがある物理ボリュームがない場合は、vgextend ユーティリティーを使用して、十分なサイズの物理ボリュームを新たに追加します。

手順

  1. 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)
  2. /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)
  3. 障害が発生したデバイスを交換します。

    # 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.
  4. オプション: 障害が発生したデバイスを置き換える物理ボリュームを手動で指定します。

    # lvconvert --repair my_vg/my_lv replacement_pv
  5. 代替の論理ボリュームを調べます。

    # 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 ユーティリティーは、障害が発生したデバイスが見つけられないことを示しています。

  6. 障害が発生したデバイスをボリュームグループから削除します。

    # vgreduce --removemissing my_vg

検証

  1. 障害が発生したデバイスを取り外した後、利用可能な物理ボリュームを表示します。

    # 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]
  2. 障害が発生したデバイスを交換した後、論理ボリュームを調べます。

    # 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 メタデータが含まれます。

表58.3 異なるマルチパスソフトウェアでのデバイスマッピングの例
マルチパスソフトウェアLUN への SCSI パスマルチパスデバイスパスへのマッピング

DM Multipath

/dev/sdb および /dev/sdc

/dev/mapper/mpath1 または /dev/mapper/mpatha

EMC PowerPath

/dev/emcpowera

HDLM

/dev/sddlmab

複数のデバイスノードが原因で、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|.*|" ]

58.14.14.4. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.