13.13. LVM RAID 문제 해결
LVM RAID 장치의 다양한 문제를 해결하여 데이터 오류를 수정하거나 장치를 복구하거나, 실패한 장치를 교체할 수 있습니다.
13.13.1. RAID 논리 볼륨에서 데이터 일관성 확인
LVM은 RAID 논리 볼륨에 대한 스크럽 지원을 제공합니다. RAID 스크럽은 배열의 모든 데이터 및 패리티 블록을 읽고 일치 여부를 확인하는 프로세스입니다. lvchange --syncaction repair
명령은 배열에서 백그라운드 동기화 작업을 시작합니다.
절차
선택 사항: 다음 옵션 중 하나를 설정하여 RAID 논리 볼륨이 초기화되는 속도를 제어합니다.
-
--maxrecoveryrate Rate[bBsSkKmMgG]
는 RAID 논리 볼륨의 최대 복구 속도를 설정하여 nominal I/O 작업을 확장하지 않도록 합니다. --minrecoveryrate Rate[bBsSkKmMgG]
는 RAID 논리 볼륨의 최소 복구 속도를 설정하여 동기화 작업의 I/O가 무분별 I/O가 있는 경우에도 최소 처리량을 달성하도록 합니다.lvchange --maxrecoveryrate 4K my_vg/my_lv
# lvchange --maxrecoveryrate 4K my_vg/my_lv Logical volume _my_vg/my_lv_changed.
Copy to Clipboard Copied! 4K 를 복구 속도 값으로 바꿉니다. 이 값은 배열의 각 장치에 대한 초당 양입니다. 접미사를 제공하지 않으면 옵션은 장치당 초당 kiB를 가정합니다.
lvchange --syncaction repair my_vg/my_lv
# lvchange --syncaction repair my_vg/my_lv
Copy to Clipboard Copied! 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를 생성합니다.
-
복구하지 않고 배열의 불일치를 표시합니다.
lvchange --syncaction check my_vg/my_lv
# lvchange --syncaction check my_vg/my_lv
Copy to Clipboard Copied! 이 명령은 배열에서 백그라운드 동기화 작업을 시작합니다.
-
선택 사항: 커널 메시지의
var/log/syslog
파일을 확인합니다. 배열의 불일치를 수정하십시오.
lvchange --syncaction repair my_vg/my_lv
# lvchange --syncaction repair my_vg/my_lv
Copy to Clipboard Copied! 이 명령은 RAID 논리 볼륨에서 실패한 장치를 복구하거나 교체합니다. 이 명령을 실행한 후 커널 메시지의
var/log/syslog
파일을 볼 수 있습니다.
검증
스크럽 작업에 대한 정보를 표시합니다.
lvs -o +raid_sync_action,raid_mismatch_count my_vg/my_lv
# 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 Copied!
13.13.2. 논리 볼륨에서 실패한 RAID 장치 교체
RAID는 기존 LVM 미러링과 동일하지 않습니다. LVM 미러링의 경우 실패한 장치를 제거합니다. 그렇지 않으면 RAID 배열이 실패한 장치에서 계속 실행되는 동안 미러링된 논리 볼륨이 중단됩니다. RAID1 이외의 RAID 수준의 경우 장치를 제거하면 RAID6에서 RAID5로 또는 RAID4 또는 RAID0으로의 낮은 RAID 수준으로의 변환을 의미합니다.
실패한 장치를 제거하고 교체를 LVM으로 할당하는 대신 lvconvert
명령의 --repair
인수를 사용하여 RAID 논리 볼륨에서 물리 볼륨으로 사용되는 실패한 장치를 교체할 수 있습니다.
사전 요구 사항
볼륨 그룹에는 실패한 장치를 교체할 수 있는 충분한 여유 용량을 제공하는 물리 볼륨이 포함되어 있습니다.
볼륨 그룹에서 사용 가능한 확장 영역이 충분한 물리 볼륨이 없는 경우 Cryostatextend 유틸리티를 사용하여 충분히 큰
새
물리 볼륨을 추가합니다.
프로세스
RAID 논리 볼륨을 확인합니다.
lvs --all --options name,copy_percent,devices my_vg
# 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 Copied! /dev/sdc 장치가 실패한 후 RAID 논리 볼륨을 확인합니다.
lvs --all --options name,copy_percent,devices my_vg
# 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 Copied! 실패한 장치를 교체합니다.
lvconvert --repair my_vg/my_lv
# 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 Copied! 선택 사항: 실패한 장치를 대체하는 물리 볼륨을 수동으로 지정합니다.
lvconvert --repair my_vg/my_lv replacement_pv
# lvconvert --repair my_vg/my_lv replacement_pv
Copy to Clipboard Copied! 교체를 사용하여 논리 볼륨을 검사합니다.
lvs --all --options name,copy_percent,devices my_vg
# 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 Copied! 볼륨 그룹에서 실패한 장치를 제거할 때까지 LVM 유틸리티에 실패한 장치를 찾을 수 없다는 내용이 계속 표시됩니다.
볼륨 그룹에서 실패한 장치를 제거합니다.
vgreduce --removemissing my_vg
# vgreduce --removemissing my_vg
Copy to Clipboard Copied!
검증
실패한 장치를 제거한 후 사용 가능한 물리 볼륨을 확인합니다.
pvscan
# 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 Copied! 실패한 장치를 교체한 후 논리 볼륨을 검사합니다.
lvs --all --options name,copy_percent,devices my_vg
# 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 Copied!