Red Hat Training

A Red Hat training course is available for RHEL 8

8.18. 論理ボリュームで RAID デバイスの交換

論理ボリュームの RAID デバイスは置き換えることができます。

8.18.1. 障害のない RAID デバイスの交換

論理ボリュームの RAID デバイスを交換するには、lvconvert コマンドの --replace 引数を使用します。

前提条件

  • RAID デバイスに障害が発生していません。以下のコマンドを使用すると、RAID デバイスが失敗しても動作しません。

手順

  • RAID デバイスを置き換えます。

    # lvconvert --replace dev_to_remove vg/lv possible_replacements
    • dev_to_remove を、置き換える物理ボリュームへのパスに置き換えます。
    • vg/lv を、RAID アレイのボリュームグループおよび論理ボリューム名に置き換えます。
    • possible_replacements を、交換する物理ボリュームへのパスに置き換えます。

例8.3 RAID1 デバイスの置き換え

以下の例では、RAID1 論理ボリュームを作成した後に、そのボリューム内のデバイスを交換しています。

  1. RAID1 アレイを作成します。

    # lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg
    
      Logical volume "my_lv" created
  2. RAID1 アレイを確認します。

    # lvs -a -o name,copy_percent,devices my_vg
    
      LV               Copy%  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/sdb1(1)
      [my_lv_rimage_1]        /dev/sdb2(1)
      [my_lv_rimage_2]        /dev/sdc1(1)
      [my_lv_rmeta_0]         /dev/sdb1(0)
      [my_lv_rmeta_1]         /dev/sdb2(0)
      [my_lv_rmeta_2]         /dev/sdc1(0)
  3. /dev/sdb2 物理ボリュームを置き換えます。

    # lvconvert --replace /dev/sdb2 my_vg/my_lv
  4. 代替の RAID1 アレイを確認します。

    # lvs -a -o name,copy_percent,devices my_vg
    
      LV               Copy%  Devices
      my_lv             37.50 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
      [my_lv_rimage_0]        /dev/sdb1(1)
      [my_lv_rimage_1]        /dev/sdc2(1)
      [my_lv_rimage_2]        /dev/sdc1(1)
      [my_lv_rmeta_0]         /dev/sdb1(0)
      [my_lv_rmeta_1]         /dev/sdc2(0)
      [my_lv_rmeta_2]         /dev/sdc1(0)

例8.4 代替の物理ボリュームの指定

以下の例では、RAID1 論理ボリュームを作成した後に、そのボリュームのデバイスを交換し、交換したデバイスに使用する物理ボリュームを指定しています。

  1. RAID1 アレイを作成します。

    # lvcreate --type raid1 -m 1 -L 100 -n my_lv my_vg
    
      Logical volume "my_lv" created
  2. RAID1 アレイを確認します。

    # lvs -a -o name,copy_percent,devices my_vg
    
      LV               Copy%  Devices
      my_lv            100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
      [my_lv_rimage_0]        /dev/sda1(1)
      [my_lv_rimage_1]        /dev/sdb1(1)
      [my_lv_rmeta_0]         /dev/sda1(0)
      [my_lv_rmeta_1]         /dev/sdb1(0)
  3. 物理ボリュームを確認します。

    # pvs
    
      PV          VG       Fmt  Attr PSize    PFree
      /dev/sda1   my_vg    lvm2 a--  1020.00m  916.00m
      /dev/sdb1   my_vg    lvm2 a--  1020.00m  916.00m
      /dev/sdc1   my_vg    lvm2 a--  1020.00m 1020.00m
      /dev/sdd1   my_vg    lvm2 a--  1020.00m 1020.00m
  4. /dev/sdb1 物理ボリュームを /dev/sdd1 に置き換えます。

    # lvconvert --replace /dev/sdb1 my_vg/my_lv /dev/sdd1
  5. 代替の RAID1 アレイを確認します。

    # lvs -a -o name,copy_percent,devices my_vg
    
      LV               Copy%  Devices
      my_lv             28.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
      [my_lv_rimage_0]        /dev/sda1(1)
      [my_lv_rimage_1]        /dev/sdd1(1)
      [my_lv_rmeta_0]         /dev/sda1(0)
      [my_lv_rmeta_1]         /dev/sdd1(0)

例8.5 複数の RAID デバイスの置き換え

一度に 2 つ以上の RAID デバイスを交換するには、以下の例のように複数の replace 引数を指定します。

  1. RAID1 アレイを作成します。

    # lvcreate --type raid1 -m 2 -L 100 -n my_lv my_vg
    
      Logical volume "my_lv" created
  2. RAID1 アレイを確認します。

    # lvs -a -o name,copy_percent,devices my_vg
    
      LV               Copy%  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/sda1(1)
      [my_lv_rimage_1]        /dev/sdb1(1)
      [my_lv_rimage_2]        /dev/sdc1(1)
      [my_lv_rmeta_0]         /dev/sda1(0)
      [my_lv_rmeta_1]         /dev/sdb1(0)
      [my_lv_rmeta_2]         /dev/sdc1(0)
  3. /dev/sdb1 および /dev/sdc1 の物理ボリュームを置き換えます。

    # lvconvert --replace /dev/sdb1 --replace /dev/sdc1 my_vg/my_lv
  4. 代替の RAID1 アレイを確認します。

    # lvs -a -o name,copy_percent,devices my_vg
    
      LV               Copy%  Devices
      my_lv             60.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
      [my_lv_rimage_0]        /dev/sda1(1)
      [my_lv_rimage_1]        /dev/sdd1(1)
      [my_lv_rimage_2]        /dev/sde1(1)
      [my_lv_rmeta_0]         /dev/sda1(0)
      [my_lv_rmeta_1]         /dev/sdd1(0)
      [my_lv_rmeta_2]         /dev/sde1(0)

8.18.2. LVM RAID のデバイスに障害が発生しました。

RAID は従来の LVM ミラーリングとは異なります。LVM ミラーリングでは、障害が発生したデバイスを削除する必要がありました。削除しないと、ミラー化論理ボリュームがハングします。RAID アレイは、障害があるデバイスがあっても稼働し続けることができます。RAID1 以外の RAID タイプでデバイスを削除すると、レベルが低い RAID に変換されます (たとえば、RAID6 から RAID5、もしくは RAID4 または RAID5 から RAID0)。

そのため、障害のあるデバイスを無条件に削除してから交換するのではなく、lvconvert コマンドで --repair 引数を使用して、RAID ボリュームのデバイスを 1 回で置き換えることができます。

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

LVM RAID デバイス障害が一時的な障害であったり、障害が発生したデバイスの修復が可能な場合は、障害が発生したデバイスの復旧を開始できます。

前提条件

  • 以前に不具合を起こしたデバイスが機能するようになりました。

手順

  • RAID デバイスが含まれる論理ボリュームを更新します。

    # lvchange --refresh my_vg/my_lv

検証手順

  • 復元されたデバイスで論理ボリュームを調べます。

    # lvs --all --options name,devices,lv_attr,lv_health_status my_vg

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

この手順では、LVM 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 デバイスに障害が発生した場合、lvs コマンドの出力は以下のようになります。

    # 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.

    (必要に応じて) 障害が発生したデバイスを交換する物理ボリュームを手動で指定するには、コマンドの最後に物理ボリュームを追加します。

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

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

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

    # vgreduce --removemissing VG