67.14. LVM 문제 해결


LVM(Logical Volume Manager) 툴을 사용하여 LVM 볼륨 및 그룹의 다양한 문제를 해결할 수 있습니다.

67.14.1. LVM에서 진단 데이터 수집

LVM 명령이 예상대로 작동하지 않는 경우 다음과 같은 방법으로 진단을 수집할 수 있습니다.

프로세스

  • 다음 방법을 사용하여 다양한 유형의 진단 데이터를 수집합니다.

    • 모든 LVM 명령에 -v 인수를 추가하여 명령 출력의 상세 정보 표시 수준을 늘립니다. v를 추가하여 상세 정보를 추가로 늘릴 수 있습니다. 최대 4개의 이러한 v가 허용됩니다(예: -vvvv ).
    • /etc/lvm/lvm.conf 구성 파일의 log 섹션에서 level 옵션의 값을 늘립니다. 이로 인해 LVM에서 시스템 로그에 자세한 정보를 제공합니다.
    • 문제가 논리 볼륨 활성화와 관련된 경우 활성화 중에 LVM을 활성화하여 메시지를 기록합니다.

      1. /etc/lvm/lvm.conf 구성 파일의 log 섹션에서 activation = 1 옵션을 설정합니다.
      2. -vvv 옵션과 함께 LVM 명령을 실행합니다.
      3. 명령 출력을 검사합니다.
      4. 활성화 옵션을 0 으로 재설정합니다.

        옵션을 0 으로 재설정하지 않으면 메모리 부족 상황에서 시스템이 응답하지 않을 수 있습니다.

    • 진단 목적으로 정보 덤프를 표시합니다.

      # lvmdump
      Copy to Clipboard Toggle word wrap
    • 추가 시스템 정보를 표시합니다.

      # lvs -v
      Copy to Clipboard Toggle word wrap
      # pvs --all
      Copy to Clipboard Toggle word wrap
      # dmsetup info --columns
      Copy to Clipboard Toggle word wrap
    • /etc/lvm/backup/ 디렉토리에서 LVM 메타데이터의 마지막 백업과 /etc/lvm/archive/ 디렉터리에 보관된 버전을 검사합니다.
    • 현재 구성 정보를 확인합니다.

      # lvmconfig
      Copy to Clipboard Toggle word wrap
    • /run/lvm/hints 캐시 파일이 어떤 장치에 물리 볼륨이 있는지 확인합니다.

67.14.2. 실패한 LVM 장치에 대한 정보 표시

실패한 LVM(Logical Volume Manager) 볼륨에 대한 문제 해결 정보는 실패 이유를 결정하는 데 도움이 될 수 있습니다. 가장 일반적인 LVM 볼륨 오류의 다음 예제를 확인할 수 있습니다.

예 67.15. 볼륨 그룹 실패

이 예에서는 볼륨 그룹 myvg 를 구성하는 장치 중 하나가 실패했습니다. 그러면 볼륨 그룹 사용성이 실패 유형에 따라 달라집니다. 예를 들어 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)
Copy to Clipboard Toggle word wrap

예 67.16. 논리 볼륨 실패

이 예에서는 장치 중 하나가 실패했습니다. 이는 볼륨 그룹의 논리 볼륨이 실패하는 이유가 될 수 있습니다. 명령 출력에는 실패한 논리 볼륨이 표시됩니다.

# 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)
Copy to Clipboard Toggle word wrap

예 67.17. RAID 논리 볼륨의 이미지에 실패함

다음 예제에서는 RAID 논리 볼륨의 이미지가 실패한 경우 pvslvs 유틸리티의 명령 출력을 보여줍니다. 논리 볼륨은 계속 사용할 수 있습니다.

# 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
Copy to Clipboard Toggle word wrap
# 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)
Copy to Clipboard Toggle word wrap

67.14.3. 볼륨 그룹에서 손실된 LVM 물리 볼륨 제거

물리 볼륨이 실패하면 볼륨 그룹의 나머지 물리 볼륨을 활성화하고 볼륨 그룹에서 해당 물리 볼륨을 사용한 모든 논리 볼륨을 제거할 수 있습니다.

프로세스

  1. 볼륨 그룹에서 나머지 물리 볼륨을 활성화합니다.

    # vgchange --activate y --partial myvg
    Copy to Clipboard Toggle word wrap
  2. 제거할 논리 볼륨을 확인합니다.

    # vgreduce --removemissing --test myvg
    Copy to Clipboard Toggle word wrap
  3. 볼륨 그룹에서 손실된 물리 볼륨을 사용한 모든 논리 볼륨을 제거합니다.

    # vgreduce --removemissing --force myvg
    Copy to Clipboard Toggle word wrap
  4. 선택 사항: 유지하려는 논리 볼륨을 실수로 제거한 경우 Cryostatreduce 작업을 되돌릴 수 있습니다.

    # vgcfgrestore myvg
    Copy to Clipboard Toggle word wrap
    주의

    씬 풀을 제거하는 경우 LVM에서 작업을 되돌릴 수 없습니다.

67.14.4. 누락된 LVM 물리 볼륨의 메타데이터 검색

볼륨 그룹의 물리 볼륨의 메타데이터 영역이 실수로 덮어쓰거나 다른 방법으로 삭제되면 메타데이터 영역이 잘못되었거나 특정 UUID가 있는 물리 볼륨을 찾을 수 없음을 나타내는 오류 메시지가 표시됩니다.

이 절차에서는 누락되거나 손상된 물리 볼륨의 최신 아카이브 메타데이터를 찾습니다.

프로세스

  1. 물리 볼륨이 포함된 볼륨 그룹의 아카이브된 메타데이터 파일을 찾습니다. 보관된 메타데이터 파일은 /etc/lvm/archive/volume-group-name_backup-number.vg 경로에 있습니다.

    # cat /etc/lvm/archive/myvg_00000-1248998876.vg
    Copy to Clipboard Toggle word wrap

    00000-1248998876 을 backup-number로 바꿉니다. 볼륨 그룹에 가장 많은 수가 있는 마지막으로 알려진 유효한 메타데이터 파일을 선택합니다.

  2. 물리 볼륨의 UUID를 찾습니다. 다음 방법 중 하나를 사용합니다.

    • 논리 볼륨을 나열합니다.

      # lvs --all --options +devices
      
        Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
      Copy to Clipboard Toggle word wrap
    • 보관된 메타데이터 파일을 검사합니다. 볼륨 그룹 구성의 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
      Copy to Clipboard Toggle word wrap

67.14.5. LVM 물리 볼륨에서 메타데이터 복원

이 절차에서는 손상된 물리 볼륨에서 메타데이터를 복원하거나 새 장치로 교체합니다. 물리 볼륨의 메타데이터 영역을 다시 작성하여 물리 볼륨에서 데이터를 복구할 수 있습니다.

주의

작동 중인 LVM 논리 볼륨에서 이 절차를 시도하지 마십시오. 잘못된 UUID를 지정하면 데이터가 손실됩니다.

사전 요구 사항

프로세스

  1. 물리 볼륨에서 메타데이터를 복원합니다.

    # pvcreate --uuid physical-volume-uuid \ --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg \ block-device
    Copy to Clipboard Toggle word wrap
    참고

    명령은 LVM 메타데이터 영역만 덮어쓰고 기존 데이터 영역에는 영향을 미치지 않습니다.

    예 67.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
      Copy to Clipboard Toggle word wrap
  2. 볼륨 그룹의 메타데이터를 복원합니다.

    # vgcfgrestore myvg
    
      Restored volume group myvg
    Copy to Clipboard Toggle word wrap
  3. 볼륨 그룹의 논리 볼륨을 표시합니다.

    # lvs --all --options +devices myvg
    Copy to Clipboard Toggle word wrap

    논리 볼륨은 현재 비활성 상태입니다. 예를 들면 다음과 같습니다.

      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)
    Copy to Clipboard Toggle word wrap
  4. 논리 볼륨의 세그먼트 유형이 RAID인 경우 논리 볼륨을 다시 동기화합니다.

    # lvchange --resync myvg/mylv
    Copy to Clipboard Toggle word wrap
  5. 논리 볼륨을 활성화합니다.

    # lvchange --activate y myvg/mylv
    Copy to Clipboard Toggle word wrap
  6. on-disk 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)
    Copy to Clipboard Toggle word wrap

67.14.6. LVM 출력에서 오류 반올림

볼륨 그룹의 공간 사용량을 보고하는 LVM 명령은 사람이 읽을 수 있는 출력을 제공하기 위해 보고된 수를 2 진수로 반올림합니다. 여기에는 Cryostatdisplay Cryo stats 유틸리티가 포함됩니다.

라운드링으로 인해 보고된 여유 공간 값이 볼륨 그룹의 물리 확장 영역보다 클 수 있습니다. 보고된 여유 공간의 크기를 논리 볼륨을 생성하려고 하면 다음과 같은 오류가 발생할 수 있습니다.

Insufficient free extents
Copy to Clipboard Toggle word wrap

오류를 해결하려면 사용 가능한 공간의 정확한 값인 볼륨 그룹의 사용 가능한 물리 확장 영역 수를 검사해야 합니다. 그런 다음 확장 영역 수를 사용하여 논리 볼륨을 성공적으로 만들 수 있습니다.

67.14.7. LVM 볼륨을 생성할 때 반올림 오류 방지

LVM 논리 볼륨을 만들 때 논리 볼륨의 논리 확장 영역 수를 지정하여 반올림 오류를 방지할 수 있습니다.

프로세스

  1. 볼륨 그룹에서 사용 가능한 물리 확장 영역 수를 찾습니다.

    # vgdisplay myvg
    Copy to Clipboard Toggle word wrap

    예 67.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
    Copy to Clipboard Toggle word wrap
  2. 논리 볼륨을 만듭니다. 바이트가 아닌 Extent에 볼륨 크기를 입력합니다.

    예 67.20. 확장 영역 수를 지정하여 논리 볼륨 생성

    # lvcreate --extents 8780 --name mylv myvg
    Copy to Clipboard Toggle word wrap

    예 67.21. 나머지 공간을 모두 차지하기 위해 논리 볼륨 만들기

    또는 볼륨 그룹에서 남은 사용 가능한 공간의 백분율을 사용하도록 논리 볼륨을 확장할 수 있습니다. 예를 들면 다음과 같습니다.

    # lvcreate --extents 100%FREE --name mylv myvg
    Copy to Clipboard Toggle word wrap

검증

  • 볼륨 그룹에서 현재 사용 중인 확장 영역 수를 확인합니다.

    # 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
    Copy to Clipboard Toggle word wrap

67.14.8. LVM 메타데이터 및 디스크의 위치

LVM 헤더 및 메타데이터 영역은 다른 오프셋 및 크기에서 사용할 수 있습니다.

기본 LVM 디스크 헤더:

  • label_headerpv_header 구조에 있습니다.
  • 디스크의 두 번째 512바이트 섹터에 있습니다. PV(물리 볼륨)를 생성할 때 기본이 아닌 위치가 지정된 경우 헤더가 첫 번째 또는 세 번째 섹터에 있을 수도 있습니다.

표준 LVM 메타데이터 영역:

  • 디스크 시작부터 4096바이트를 시작합니다.
  • 디스크 시작부터 1MiB를 종료합니다.
  • 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를 생성할 때 더 크거나 작은 메타데이터 영역을 지정할 수 있습니다. 이 경우 메타데이터 영역은 1MiB가 아닌 위치에서 종료될 수 있습니다. pv_header 는 메타데이터 영역의 크기를 지정합니다.

PV를 생성할 때 디스크 끝에 두 번째 메타데이터 영역을 선택적으로 활성화할 수 있습니다. pv_header 에는 메타데이터 영역의 위치가 포함되어 있습니다.

67.14.9. 디스크에서 VG 메타데이터 추출

상황에 따라 디스크에서 VG 메타데이터를 추출하려면 다음 절차 중 하나를 선택합니다. 추출된 메타데이터를 저장하는 방법에 대한 자세한 내용은 추출된 메타데이터를 파일에 저장을 참조하십시오.

참고

복구의 경우 디스크에서 메타데이터를 추출하지 않고 /etc/lvm/backup/ 에서 백업 파일을 사용할 수 있습니다.

프로세스

  • 유효한 mda_header 에서 참조된 현재 메타데이터 텍스트를 인쇄 :

    # pvck --dump metadata <disk>
    Copy to Clipboard Toggle word wrap

    예 67.22. 유효한 mda_header의 메타데이터 텍스트

    # pvck --dump metadata /dev/sdb
      metadata text at 172032 crc Oxc627522f # vgname test segno 59
      ---
      <raw metadata from disk>
      ---
    Copy to Clipboard Toggle word wrap
  • 유효한 mda_header 를 찾는 방법에 따라 메타데이터 영역에 있는 모든 메타데이터 복사본의 위치를 인쇄합니다.

    # pvck --dump metadata_all <disk>
    Copy to Clipboard Toggle word wrap

    예 67.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
    Copy to Clipboard Toggle word wrap
  • 헤더가 없거나 손상된 경우 mda_header 를 사용하지 않고 메타데이터 영역에 있는 모든 메타데이터 복사본을 검색합니다.

    # pvck --dump metadata_search <disk>
    Copy to Clipboard Toggle word wrap

    예 67.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
    Copy to Clipboard Toggle word wrap
  • dump 명령에 -v 옵션을 포함하여 메타데이터 복사본의 각 설명을 표시합니다.

    # pvck --dump metadata -v <disk>
    Copy to Clipboard Toggle word wrap

    예 67.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
    }
    Copy to Clipboard Toggle word wrap

이 파일은 복구에 사용할 수 있습니다. 첫 번째 메타데이터 영역은 기본적으로 덤프 메타데이터에 사용됩니다. 디스크 끝에 두 번째 메타데이터 영역이 있는 경우 --settings "mda_num=2" 옵션을 사용하여 덤프 메타데이터에 두 번째 메타데이터 영역을 대신 사용할 수 있습니다.

67.14.10. 추출된 메타데이터를 파일에 저장

복구에 덤프된 메타데이터를 사용해야 하는 경우 추출된 메타데이터를 -f 옵션과 --setings 옵션을 사용하여 파일에 저장해야 합니다.

프로세스

  • -f <filename >이 --dump 메타데이터에 추가되면 원시 메타데이터가 이름이 지정된 파일에 작성됩니다. 이 파일을 사용하여 복구할 수 있습니다.
  • -f <filename >이 --dump metadata_all 또는 --dump metadata_search 에 추가된 경우 모든 위치의 원시 메타데이터가 이름이 지정된 파일에 작성됩니다.
  • --dump metadata_all|metadata_search 의 메타데이터 텍스트 인스턴스 하나를 저장하려면 --settings "metadata_offset=<offset>" 을 추가합니다. 여기서 < offset >은 목록 출력의 "metadata at <offset>"입니다.

    예 67.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"
    Copy to Clipboard Toggle word wrap

손상된 물리 볼륨에서 메타데이터 및 헤더를 복원하거나 새 장치로 교체할 수 있습니다. 물리 볼륨의 메타데이터 영역을 다시 작성하여 물리 볼륨에서 데이터를 복구할 수 있습니다.

주의

이러한 명령은 매우 주의하여 사용해야 하며, 각 명령의 영향, 볼륨의 현재 레이아웃, 달성해야 하는 레이아웃 및 백업 메타데이터 파일의 콘텐츠에 대해 잘 알고 있는 경우에만 사용해야 합니다. 이러한 명령에는 데이터가 손상될 가능성이 있으므로 문제 해결에 도움이 필요한 경우 Red Hat 글로벌 지원 서비스에 문의하는 것이 좋습니다.

사전 요구 사항

프로세스

  1. pvcreate 및 Cryostat cfgrestore 명령에 필요한 다음 정보를 수집합니다. # 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 ). 이 디스크가 올바른 디스크인지 확인하거나 도움을 구하십시오. 그렇지 않으면 이러한 단계를 수행하면 데이터가 손실될 수 있습니다.
  2. 디스크에서 LVM 헤더를 다시 생성합니다.

    # pvcreate --restorefile <metadata-file> --uuid <UUID> <disk>
    Copy to Clipboard Toggle word wrap

    필요한 경우 헤더가 유효한지 확인합니다.

    # pvck --dump headers <disk>
    Copy to Clipboard Toggle word wrap
  3. 디스크에서 VG 메타데이터를 복원합니다.

    # vgcfgrestore --file <metadata-file> <vg-name>
    Copy to Clipboard Toggle word wrap

    필요한 경우 메타데이터가 복원되었는지 확인합니다.

    # pvck --dump metadata <disk>
    Copy to Clipboard Toggle word wrap

VG에 대한 메타데이터 백업 파일이 없는 경우 추출된 메타데이터를 파일에 저장하는 절차를 사용하여 하나를 가져올 수 있습니다.

검증

  • 새 물리 볼륨이 손상되지 않고 볼륨 그룹이 올바르게 작동하는지 확인하려면 다음 명령의 출력을 확인합니다.

    # vgs
    Copy to Clipboard Toggle word wrap

이는 pvcreate 및 pvcfgrestore 명령을 사용하여 손상된 LVM 헤더 및 메타데이터가 있는 디스크를 복구하는 대신 사용할 수 있습니다. pvcreate 및 Cryostat cfgrestore 명령이 작동하지 않는 경우가 있을 수 있습니다. 이 방법은 손상된 디스크를 더 대상으로 합니다.

이 방법은 pvck --dump 에서 추출한 메타데이터 입력 파일 또는 /etc/lvm/backup 의 백업 파일을 사용합니다. 가능한 경우 동일한 VG의 다른 PV 또는 PV의 두 번째 메타데이터 영역에서 pvck --dump 에 저장된 메타데이터를 사용합니다. 자세한 내용은 추출된 메타데이터를 파일에 저장을 참조하십시오.

프로세스

  • 디스크에서 헤더 및 메타데이터를 복구합니다.

    # pvck --repair -f <metadata-file> <disk>
    Copy to Clipboard Toggle word wrap

    다음과 같습니다.

    • <metadata-file >은 VG에 대한 최신 메타데이터를 포함하는 파일입니다. /etc/lvm/backup/ Cryostat-name 이거나 pvck --dump metadata_search 명령 출력에서 원시 메타데이터 텍스트가 포함된 파일일 수 있습니다.
    • <disk >는 PV가 있어야 하는 디스크 이름입니다(예: /dev/sdb ). 데이터 손실을 방지하려면 가 올바른 디스크인지 확인합니다. 디스크가 올바른지 확실하지 않은 경우 Red Hat 지원팀에 문의하십시오.
참고

메타데이터 파일이 백업 파일인 경우 VG에서 메타데이터를 보유하는 각 PV에서 pvck --repair 를 실행해야 합니다. 메타데이터 파일이 다른 PV에서 추출된 원시 메타데이터인 경우 pvck --repair 는 손상된 PV에서만 실행해야 합니다.

검증

  • 새 물리 볼륨이 손상되지 않고 볼륨 그룹이 올바르게 작동하는지 확인하려면 다음 명령의 출력을 확인합니다.

    # vgs <vgname>
    Copy to Clipboard Toggle word wrap
    # pvs <pvname>
    Copy to Clipboard Toggle word wrap
    # lvs <lvname>
    Copy to Clipboard Toggle word wrap

67.14.13. LVM RAID 문제 해결

LVM RAID 장치의 다양한 문제를 해결하여 데이터 오류를 수정하거나 장치를 복구하거나 실패한 장치를 교체할 수 있습니다.

67.14.13.1. RAID 논리 볼륨에서 데이터 일관성 확인

LVM은 RAID 논리 볼륨에 대한 스크럽을 제공합니다. RAID 스크러빙은 배열의 모든 데이터 및 패리티 블록을 읽고 일관성이 있는지 확인하는 프로세스입니다. lvchange --syncaction repair 명령은 배열에서 백그라운드 동기화 작업을 시작합니다.

프로세스

  1. 선택 사항: 다음 옵션 중 하나를 설정하여 RAID 논리 볼륨이 초기화되는 속도를 제어합니다.

    • --maxrecoveryrate Rate[bBsSkKmMgG] 는 RAID 논리 볼륨의 최대 복구 속도를 설정하여 nominal I/O 작업을 확장하지 않도록 합니다.
    • --minrecoveryrate Rate[bBsSkKmMgG] 는 RAID 논리 볼륨의 최소 복구 속도를 설정하여 동기화 작업의 I/O가 무분별 I/O가 있는 경우에도 최소 처리량을 달성하도록 합니다.

      # lvchange --maxrecoveryrate 4K my_vg/my_lv
      Logical volume _my_vg/my_lv_changed.
      Copy to Clipboard Toggle word wrap

      4K 를 복구 속도 값으로 바꿉니다. 이 값은 배열의 각 장치에 대한 초당 양입니다. 접미사를 제공하지 않으면 옵션은 장치당 초당 kiB를 가정합니다.

      # lvchange --syncaction repair my_vg/my_lv
      Copy to Clipboard Toggle word wrap

      RAID 스크러블링 작업을 수행할 때 동기화 작업에 필요한 백그라운드 I/O는 볼륨 그룹 메타데이터 업데이트 등 LVM 장치에 대한 다른 I/O의 충돌을 줄일 수 있습니다. 이로 인해 다른 LVM 작업이 느려질 수 있습니다.

      참고

      RAID 장치를 생성하는 동안 이러한 최대 및 최소 I/O 속도를 사용할 수도 있습니다. 예를 들어 lvcreate --type raid10 -i 2 -m 1 -l 1 -L 10G --maxrecoveryrate 128 -n my_vg 는 128 kiB/sec/device의 최대 복구 속도를 가진 볼륨 그룹 my_vg에 있는 볼륨 그룹 my_vg에서 최대 복구 속도를 가진 크기가 10G인 my_vg를 생성합니다.

  2. 배열의 불일치 수를 복구하지 않고 표시합니다.

    # lvchange --syncaction check my_vg/my_lv
    Copy to Clipboard Toggle word wrap

    이 명령은 배열에서 백그라운드 동기화 작업을 시작합니다.

  3. 선택 사항: 커널 메시지의 var/log/syslog 파일을 확인합니다.
  4. 배열의 불일치를 수정합니다.

    # lvchange --syncaction repair my_vg/my_lv
    Copy to Clipboard Toggle word wrap

    이 명령은 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
    Copy to Clipboard Toggle word wrap

67.14.13.2. 논리 볼륨에서 실패한 RAID 장치 교체

RAID는 기존 LVM 미러링과 동일하지 않습니다. LVM 미러링의 경우 실패한 장치를 제거합니다. 그렇지 않으면 RAID 배열이 실패한 장치에서 계속 실행되는 동안 미러링된 논리 볼륨이 중단됩니다. RAID1 이외의 RAID 수준의 경우 장치를 제거하면 RAID6에서 RAID5로 또는 RAID4 또는 RAID0으로의 낮은 RAID 수준으로의 변환을 의미합니다.

실패한 장치를 제거하고 교체를 LVM으로 할당하는 대신 lvconvert 명령의 --repair 인수를 사용하여 RAID 논리 볼륨에서 물리 볼륨으로 사용되는 실패한 장치를 교체할 수 있습니다.

사전 요구 사항

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

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

프로세스

  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)
    Copy to Clipboard Toggle word wrap
  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)
    Copy to Clipboard Toggle word wrap
  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.
    Copy to Clipboard Toggle word wrap
  4. 선택 사항: 실패한 장치를 대체하는 물리 볼륨을 수동으로 지정합니다.

    # lvconvert --repair my_vg/my_lv replacement_pv
    Copy to Clipboard Toggle word wrap
  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)
    Copy to Clipboard Toggle word wrap

    볼륨 그룹에서 실패한 장치를 제거할 때까지 LVM 유틸리티에 실패한 장치를 찾을 수 없다는 내용이 계속 표시됩니다.

  6. 볼륨 그룹에서 실패한 장치를 제거합니다.

    # vgreduce --removemissing my_vg
    Copy to Clipboard Toggle word wrap

검증

  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]
    Copy to Clipboard Toggle word wrap
  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)
    Copy to Clipboard Toggle word wrap

67.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
Copy to Clipboard Toggle word wrap

이러한 경고 문제를 해결하여 LVM이 표시되는 이유를 이해하거나 경고를 숨길 수 있습니다.

67.14.14.1. 중복 PV 경고의 근본 원인

DM Multipath(Device Mapper Multipath), EMC PowerPath 또는 Cryostat Dynamic Link Manager(HDLM)와 같은 다중 경로 소프트웨어가 시스템의 스토리지 장치를 관리하는 경우 특정 논리 단위(LUN)로의 각 경로가 다른 SCSI 장치로 등록됩니다.

그런 다음 다중 경로 소프트웨어는 해당 개별 경로에 매핑되는 새 장치를 생성합니다. 각 LUN에는 동일한 기본 데이터를 가리키는 여러 장치 노드가 /dev 디렉터리에 있으므로 모든 장치 노드에 동일한 LVM 메타데이터가 포함됩니다.

Expand
표 67.3. 다른 다중 경로 소프트웨어의 장치 매핑 예
다중 경로 소프트웨어LUN에 대한 SCSI 경로경로에 대한 다중 경로 장치 매핑

DM Multipath

/dev/sdb/dev/sdc

/dev/mapper/mpath1 또는 /dev/mapper/mpatha

EMC PowerPath

/dev/emcpowera

HDLM

/dev/sddlmab

여러 장치 노드의 결과로 LVM 툴은 동일한 메타데이터를 여러 번 찾아 중복으로 보고합니다.

67.14.14.2. 중복 PV 경고의 사례

LVM은 다음 경우 중 하나로 중복된 PV 경고를 표시합니다.

동일한 장치에 대한 단일 경로

출력에 표시되는 두 장치는 동일한 장치에 대한 단일 경로입니다.

다음 예제에서는 중복된 장치가 동일한 장치에 대한 단일 경로인 중복 PV 경고를 보여줍니다.

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sdd not /dev/sdf
Copy to Clipboard Toggle word wrap

multipath -ll 명령을 사용하여 현재 DM Multipath 토폴로지를 나열하는 경우 동일한 다중 경로 맵에서 /dev/sdd/dev/sdf 를 모두 찾을 수 있습니다.

이러한 중복 메시지는 경고일 뿐이며 LVM 작업이 실패했음을 의미하지는 않습니다. 대신 LVM에서 장치 중 하나만 물리 볼륨으로 사용하고 다른 장치를 무시함을 경고합니다.

LVM이 잘못된 장치를 선택했거나 사용자에게 경고가 중단된 경우 필터를 적용할 수 있습니다. 필터는 물리 볼륨에 필요한 장치만 검색하고 다중 경로 장치에 대한 기본 경로를 종료하도록 LVM을 구성합니다. 결과적으로 경고가 더 이상 나타나지 않습니다.

다중 경로 맵

출력에 표시되는 두 장치는 모두 다중 경로 맵입니다.

다음 예제에서는 둘 다 다중 경로 맵인 두 장치에 대해 중복 PV 경고를 보여줍니다. 중복된 물리 볼륨은 동일한 장치에 대한 두 개의 다른 경로가 아닌 두 개의 다른 장치에 있습니다.

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/mapper/mpatha not /dev/mapper/mpathc

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowera not /dev/emcpowerh
Copy to Clipboard Toggle word wrap

이 상황은 동일한 장치에 대한 단일 경로의 두 장치에 대해 중복 경고보다 더 심각합니다. 이러한 경고는 종종 시스템이 액세스해서는 안 되는 장치에 액세스 중임을 의미합니다(예: LUN 복제 또는 미러).

시스템에서 제거해야 하는 장치를 명확하게 모르는 경우 이 상황을 복구할 수 없을 수 있습니다. 이 문제를 해결하려면 Red Hat 기술 지원팀에 문의하는 것이 좋습니다.

67.14.14.3. 중복된 PV 경고를 방지하는 LVM 장치 필터의 예

다음 예제에서는 단일 논리 단위(LUN)에 대한 여러 스토리지 경로로 인한 중복된 물리 볼륨 경고를 방지하는 LVM 장치 필터를 보여줍니다.

모든 장치의 메타데이터를 확인하도록 LVM(Logical Volume Manager)의 필터를 구성할 수 있습니다. 메타데이터에는 루트 볼륨 그룹이 있는 로컬 하드 디스크 드라이브와 다중 경로 장치가 포함됩니다. LVM이 다중 경로 장치 자체에서 각 고유한 메타데이터 영역을 찾기 때문에 다중 경로 장치(예: /dev/sdb,/dev/sdd)의 기본 경로를 거부하면 이러한 중복 PV 경고를 방지할 수 있습니다.

  • 첫 번째 하드 디스크 드라이브 및 장치 매퍼 (DM) Multipath 장치에서 두 번째 파티션을 수락하고 다른 모든 것을 거부하려면 다음을 입력합니다.

    filter = [ "a|/dev/sda2$|", "a|/dev/mapper/mpath.*|", "r|.*|" ]
    Copy to Clipboard Toggle word wrap
  • 모든 HP SmartArray 컨트롤러 및 EMC PowerPath 장치를 수락하려면 다음을 입력합니다.

    filter = [ "a|/dev/cciss/.*|", "a|/dev/emcpower.*|", "r|.*|" ]
    Copy to Clipboard Toggle word wrap
  • 첫 번째 IDE 드라이브 및 다중 경로 장치의 파티션을 수락하려면 다음을 입력합니다.

    filter = [ "a|/dev/hda.*|", "a|/dev/mapper/mpath.*|", "r|.*|" ]
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat