[Linux] RHEL9 LVM 디바이스 인식 문제 및 복구 방법
문제 개요
RHEL 9부터 LVM2는 부팅 속도 향상과 디바이스 식별 정확성을 위해 /etc/lvm/devices/system.devices
파일을 기본 활성화(use_devicesfile=1
)했습니다.
이 파일은 물리 볼륨(PV)의 PVID와 디바이스 식별 정보(IDNAME)를 캐싱합니다. 하지만 디스크 복제나 클라우드 환경에서 디바이스 ID(특히 WWID나 devname)가 변경될 경우, 기존 system.devices 파일과 일치하지 않아 LVM이 PV를 인식하지 못하는 문제가 발생할 수 있습니다.
대표 증상
pvs
,vgs
,lvs
명령어 실행 시 출력 없음Devices file PVID last seen on /dev/sdX not found.
경고 발생
근본 원인
system.devices
파일은 sys_wwid(디스크 고유 WWID)나 sys_serial(디스크 Serial Number)을 기준으로 관리됩니다. 그러나 디스크 복제 과정에서 시리얼 넘버가 변경되면서 기존 system.devices 파일에 저장된 정보와 불일치가 발생해 LVM 볼륨 정보를 정상적으로 인식할 수 없게 됩니다.
현재 system.devices 파일은 다음과 같은 형식으로 구성되어 있습니다.
IDTYPE=sys_serial IDNAME=a5308b98-fa11-4ae3-b... DEVNAME=/dev/vdb1 PVID=... IDTYPE=sys_serial IDNAME=a6921fd5-d892-4ec1-8... DEVNAME=/dev/vdc1 PVID=...
필드 | 의미 |
---|---|
IDTYPE | 장치 식별 방법 (sys_serial) |
IDNAME | 디스크 시리얼 넘버 (UUID 형식과 유사) |
DEVNAME | 디바이스 노드 (예: /dev/vdb1) |
PVID | LVM 물리 볼륨 UUID |
정리하면, 이 system.devices 파일은 WWID가 아니라 디스크 시리얼 번호를 기준으로 PV를 인식하고 있습니다.
시리얼 넘버 변경 이유
클라우드 환경에서는 디스크 복제나 스냅샷 복제 시, 새 디스크가 생성되면서 시리얼 넘버도 새롭게 부여됩니다. 시리얼 넘버는 하드웨어 또는 가상 디스크 레벨에서 고유하게 관리되기 때문에, 복제 시 변경되는 것이 일반적입니다.
이로 인해 기존 system.devices 파일에 기록된 IDNAME(시리얼 넘버) 값이 더 이상 새 디스크와 매칭되지 않고, 결과적으로 LVM이 디스크를 인식하지 못하게 됩니다.
결국, 기존 system.devices
파일을 삭제하고 새 디바이스 정보를 재생성해야 했던 것입니다.
문제 해결 방법
문제를 해결하는 방법은 간단합니다. system.devices 파일에 등록된 정보를 현재 LVM 볼륨이 가진 정보와 일치시키거나, system.devices 파일을 사용하지 않도록 설정하면 됩니다. 다음은 Red Hat에서 제시한 3가지 방법입니다.
Option 1: system.devices 파일 사용 중지
/etc/lvm/lvm.conf
파일에 다음 설정을 추가합니다.
# use_devicesfile = 0
- 장점: 디스크 스캔을 통해 PV를 직접 탐색
- 단점: 부팅 시간이 다소 길어질 수 있음
설정 후 initramfs를 재생성하는 것이 좋습니다.
# dracut -f
Option 2: system.devices 파일 재구성
- 기존
system.devices
파일 제거
rm -f /etc/lvm/devices/system.devices
- 디스크 재스캔 및 파일 재생성:
vgimportdevices -a
- 디바이스 등록 확인:
# pvs # vgs
Option 3: 장기 최적화 설정
장기적인 안정성을 위해 /etc/lvm/lvm.conf
파일에 다음 옵션을 추가할 수 있습니다.
search_for_devnames = "all"
다만, 궁극적으로는 use_devicesfile=0
설정이 권장됩니다.
위 설정 내용을 요약하면,
-
기본값은:
search_for_devnames = "auto"
-
"auto" 모드는 system.devices 파일에 기록된 디바이스만 검색함.
-
search_for_devnames = "all"
로 바꾸면:-
system.devices에 기록된 PVID가 매칭 안 되더라도,
전체 디스크를 스캔해서 PVID를 찾게 된다.
-
즉, 디바이스가 이동했거나 이름이 바뀌어도 자동으로 찾아낼 수 있게 되는 것.
-
→ LVM이 system.devices에 저장된 정보에만 의존하지 않고, 실제 물리 디스크를 풀스캔.
실제 조치 내용 (클라우드 환경 복제 사례)
클라우드 디스크 복제 후 system.devices
파일의 IDNAME(시리얼 넘버) 변경으로 인해 LVM PV 인식 불가 문제가 발생했습니다. 3가지 해결책 중 2번 방법을 선택하여 기존 system.devices 파일을 제거하고, 현재 시스템에 존재하는 볼륨 그룹(VG)을 이용해 새로운 system.devices 파일을 재생성했습니다.
-
기존 파일 백업
# mv /etc/lvm/devices/system.devices /root/system.devices.backup
-
system.devices 파일 재구성
# vgimportdevices -a
참고로 여기서 모든 VG대신에 개별적인 VG명을 입력하여 필요한 부분만 추가해 줄 수도 있습니다.
예: vgimportdevices <VG NAME>
-
VG 인식은 되었으나 LV는 비활성화 상태였기 때문에, VG 그룹 활성화 명령을 추가로 수행했습니다.
vgimport -ay <VG_NAME>
마치며
RHEL 9부터 system.devices 파일이 기본 적용되면서, RHEL 8에서는 드물었던 LVM 디바이스 인식 문제가 발생하고 있습니다. 대부분의 문제는 system.devices 파일을 수정하거나 재구성하는 방법으로 해결할 수 있으므로, 무리하게 pvcreate 명령어로 복구하기 전에 위에 소개한 방법들을 먼저 시도해 보시기 바랍니다.
자세한 내용은 아래 참고 사이트에서 system.devices 파일을 다루는 방법을 확인할 수 있습니다.
댓글
댓글 쓰기