서버에서 아래와 같은 메시지 발생.
Aug 20 00:22:15 xxx kernel: attempt to access beyond end of device
Aug 20 00:22:15 xxx kernel: dm-56: rw=0, want=2288500976, limit=2281955328
해당 이슈로 인해 RHEL 서버가 san storage 로 할당 받은 블록디바이스 일부를 백업 솔루션(Commvault Backup)을 통해 백업할 수 없는 문제가 발생.
하지만 해당 스토리지를 사용하는 어플리케이션(Oracle 11g R2 RAC)에서는 문제가 없이 운영되었다.
이 이슈에 대한 근본 원인은 아래와 같다.
######################## 원문 #####################
Root Cause
This error is the result of an IO request to a sector of a device beyond the actual device size. This is often because a device size has been reduced or due to corrupted file metadata which references blocks beyond the end of the filesystem. It is critical to determine which of these situations has occurred before attempting recovery. See Diagnostic Steps for more information.
There are many things that could have caused a device size change:
* A Logical Volume may have been reduced prior to reducing the filesystem.
* When using SAN storage, a LUN may have been resized or remapped on the storage device. If the host is unable to recognize the size change, this
error can occur.
* In complex setups with many devices, such as LVM / RAID and/or multipath, devices may be resized and/or mis-identified because of certain
software bugs.
* Additionally, it is very important to make sure that LUNs are exclusively used by 1 machine only if there is no proper locking mechanism. Failure to do
this will result in LVM corruption leading to this kind of error.
###################### 원문 끝 #####################
###################### 해석문 #####################
근본 원인
이 에러는 실제 디바이스 사이즈를 넘어선 IO를 디바이스에게 요구해서 발생을 한다.
이것은 종종 장치의 크기가 감소 되었거나 파일시스템의 끝을 넘어서는 블럭을 참조하는 손상된 메터데이터로 인해 발생을 한다. 복구시도를 하기 전 어떤 상황이 발생했는지 확인하는게 중요하다.
자세한 내용은 진단단계를 참고 하십시오.
장치의 크기 변화의 원인이 될 수 있는 것들은 여러가지가 있다:
원인1) 파일시스템을 줄이기 전에 논리볼륨이 축소되어져서 그럴 수 있다.
원인2) SAN 스토리지를 사용하는 환경에서 LUN이 스토리지 장치에서 리사이즈 또는 리맵핑 되었는데, 호스트(OS_서버)가 LUN의 변화된 크기를 인지하지 못 했을 때 발생할 수 있다.
원인3) 다중의 장치를 복잡하게 설정해서 사용(예를 들어 'LVM / RAID' 또는 멀티패스 장치)환경에서 소프트웨어 버그로 인해 장치들의 리사이즈와 식별오류가 발생해서 그럴 수 있다.
원인4) 추가적으로, 적당한 잠금 메커니즘이 없는 환경에서 LUNs은 한 호스트(서버)에서 독점적으로 사용하지 않는지 확인하는 것이 매우 중요하다.(즉, 다중의 호스트가 공유스토리지(클러스터 등을 위해)를 사용하면서 LVM을 사용할 경우 CLVM을 쓰라는 이야기). 그렇지 않으면 LVM corruption이 발생한다.
###################### 해석문 끝 ###################
참조 : https://access.redhat.com/solutions/21135
해당 이슈는 RHEL 6.x 커널 버그 였음. 커널 업데이트 후 해결 됨.
Thank you so much…