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 를 교체할 물리 볼륨 경로로 바꿉니다.
    • Knative Serving/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 장치 교체

다음 예와 같이 여러 대체 인수를 지정하여 한 번에 두 개 이상의 RAID 장치를 교체할 수 있습니다.

  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)로 변환하는 것을 의미합니다.

따라서 실패한 장치를 무조건 제거하고 교체를 할당하는 대신 LVM을 사용하면 lvconvert 명령의 --repair 인수를 사용하여 1단계 솔루션에서 RAID 볼륨에서 실패한 장치를 교체할 수 있습니다.

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 논리 볼륨에서 물리 볼륨 역할을 하는 실패한 장치를 대체합니다.

사전 요구 사항

  • 볼륨 그룹에는 실패한 장치를 교체할 수 있는 충분한 여유 용량을 제공하는 물리 볼륨이 포함되어 있습니다.

    볼륨 그룹에서 사용 가능한 물리 볼륨이 충분한 물리 볼륨이 없는 경우, KnativeServingextend 유틸리티를 사용하여 충분히 큰 물리 볼륨을 추가합니다.

절차

  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