Coolx World - Computer ???
리눅스 LVM 사용법 및 복구방법 (Linux)
2016-12-23 09:55 - swindler
1. LVM 이란?

LVM 은 Logical Volume Manager 의 약자로서, 저장장치들을 좀더 효율적이고 유연하게 관리할 수 있는 커널의 부분과 프로그램을 말한다. 처음에는 IBM에서 개발되었는데, 그후에 OSF(현재는 OpenGroup http://www.opengroup.org)에서 차용을 하여 OSF/1 operating system 에서 쓰였다. 지금은 HP-UX, Digital Unix operating system, AIX 등의 상용 유닉스에서 쓰고 있다. 리눅스 버전은 현재 HP-UX의 것을 모델로 하여 Sistina Software 사(http://www.sistina.com)에서 open source로 개발하고 있다.





장점

·쉬운 관리.
·서로 다른 많은 디바이스 조합 지원.
·직관적인 저장 장치로의 접근.
·뛰어난 확장성.
·믿을만한 안전성과 효율.
·스냅샷 기능 지원.



간단히 LVM을 쓰면 명령어로 손쉽게 파티션의 용량을 확장, 축소 할 수 있다.

또한 리눅스 설치시 파티션 구성이 익숙치 않은 사용자에게 자동으로 LVM구성을 제공한다.

다른 예로, 중소형 서버에서는 비교적 적은 비용으로 대용량 저장 장치를 구현하는 것이 가능해진다.

유지보수면에서 상당한 이득이 있을 것이다.



반대로 위와 같은 장점이 필요없는 환경의 서버를 구축할때에는 LVM의 사용을 가급적이면 자제하길 바란다.

왜냐하면 여러 파티션이 LVM으로 묶여 있는 상태에서 파일이 깨지면 복구시간이 길어져

부팅이 상당시간 지연 되거나 아예 부팅이 안되는 심각한 경우가 많기 때문이다.



*아래는 실제로 LVM구성의 파일시스템이 손상되어 부팅이 안되는 하드디스크의 복구과정 입니다.





<다른 리눅스에서 마운트하여 복구하기>

*참고 : CentOS 환경에서 작업한 내용이니 다른 배포본은 출력 및 명령어가 다를수 있습니다.



1. 먼저 연결된 하드디스크를 확인한다.

#fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 121601 976655610 8e Linux LVM

Disk /dev/sdb: 1000.2 GB, 1000203804160 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13 104391 83 Linux
/dev/sdb2 14 121601 976655610 8e Linux LVM





*참고 : 용량 1TB 하드디스크 2개중 /dev/sda는 현제 부팅된 리눅스이고
/dev/sdb는 파일 시스템이 손상된 하드디스크이다.









2. 리눅스 설치시 생성된 LVM의 Physical Volume을 조회한다.

#pvdisplay

— Physical volume —

PV Name /dev/sdb2
VG Name VolGroup00
PV Size 931.41 GB / not usable 5.24 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 29805
Free PE 0
Allocated PE 29805
PV UUID KOLArN-gSYj-FRdf-MGTh-J8UC-nROm-9vDxpl

— Physical volume —
PV Name /dev/sda2
VG Name VolGroup00
PV Size 931.41 GB / not usable 5.24 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 29805
Free PE 0
Allocated PE 29805
PV UUID uvSG5n-mFFu-IK6l-MMS0-Ya5v-h32L-IHpZbA



*문제 : 두개의 하드디스크가 같은 이름의 VG Name인 VolGroup00을 사용하고 있다.
(리눅스 설치시 자동으로 부여된 이름인 VolGroup00)

위중 하나는 현제 부팅중인 하드디스크의 VG Name이고,
다른하나는 손상된 하드디스크의 VG Name이다.











3. 같은 VG Name을 정확히 구분하기 위해 아래와 같이 VG UUID를 조회한다.

#vgdisplay

— Volume group —
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
~생략~
VG Size 931.41 GB
PE Size 32.00 MB
Total PE 29805
Alloc PE / Size 29805 / 931.41 GB
Free PE / Size 0 / 0
VG UUID AMuyUg-e3sc-EGyf-Sm5H-Anqj-pGAQ-hbcKMw

— Volume group —
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
~생략~
VG Size 931.41 GB
PE Size 32.00 MB
Total PE 29805
Alloc PE / Size 29805 / 931.41 GB
Free PE / Size 0 / 0
VG UUID zE0at1-Q3WR-NduG-yrrm-mu2N-FzoM-C6ruhl

















4. 조회된 VG UUID로 VG Name을 바꾼다.

#vgrename AMuyUg-e3sc-EGyf-Sm5H-Anqj-pGAQ-hbcKMw 새로운볼륨그룹명

Volume group “VolGroup00″ successfully renamed to “새로운볼륨그룹명“

*참고 : 하드디스크가 두개이기 때문에 하나만 바꾸어도 구분이 가능하다.













5. 잘 바뀌엇는지 PV, VG를 다시 조회한다.

#pvscan

PV /dev/sdb2 VG 새로운볼륨그룹명 lvm2 [931.41 GB / 0 free]
PV /dev/sda2 VG VolGroup00 lvm2 [931.41 GB / 0 free]
Total: 2 [1.82 TB] / in use: 2 [1.82 TB] / in no VG: 0 [0 ]

#vgscan

Reading all physical volumes. This may take a while…
Found volume group “새로운볼륨그룹명” using metadata type lvm2
Found volume group “VolGroup00″ using metadata type lvm2













6. 위에 출력된 새로운볼륨그룹명의 volume group을 활성화 시킨다.



#vgchange -a y 새로운볼륨그룹명
2 logical volume(s) in volume group “VolGroup00″ now active









7. 새로운볼륨그룹명의 logical volume 확인

#lvdisplay -v /dev/새로운볼륨그룹명
Using logical volume(s) on command line
— Logical volume —
LV Name /dev/새로운볼륨그룹명/LogVol00
VG Name VolGroup00
LV UUID qMijh0-YGOJ-3O2m-06yM-0GI3-vXt6-AmkLjJ
LV Write Access read/write
LV Status available
# open 1
LV Size 929.47 GB
Current LE 29743
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:0

— Logical volume —
LV Name /dev/새로운볼륨그룹명/LogVol01
VG Name VolGroup00
LV UUID i6QzKC-eS33-4oC2-iQ8a-eOvp-F6Rd-OOvzg5
LV Write Access read/write
LV Status available
# open 1
LV Size 1.94 GB
Current LE 62
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:1



*참고 : 대부분의 배포판 설치시 자동파티션 방식인 LVM으로 설정하면
/boot 와 LVM 두개가 생성되고, LVM은 다시 /와 swap으로 생성됨

/dev/새로운볼륨그룹명/LogVol00 : /

/dev/새로운볼륨그룹명/LogVol01 : swap







8. 마운트 하기

#mount -t ext3 /dev/새로운볼륨그룹명/LogVol00 /mnt

mount: wrong fs type, bad option, bad superblock on /dev/새로운볼륨그룹명/LogVol00,
missing codepage or other error
In some cases useful info is found in syslog – try
dmesg | tail or so



*참고 : 위와 같이 LVM 파티션이 손상되면 mount가 안된다.









9. 파일시스템 복구 작업을 해준다.

#e2fsck -y /dev/새로운볼륨그룹명/LogVol00

/dev/새로운볼륨그룹명/LogVol00 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes



Error reading block 164867 (Attempt to read block from filesystem resulted in short read)

while doing inode scan. Ignore error? yes

Force rewrite? yes

Error reading block 164868 (Attempt to read block from filesystem resulted in short read)

while doing inode scan. Ignore error? yes

Force rewrite? yes

Error reading block 164869 (Attempt to read block from filesystem resulted in short read)

while doing inode scan. Ignore error? yes

Force rewrite? yes

……………………이하생략(오래걸림)





*복구 실패시

*참고 : e2fsck 백업 슈퍼블록을 이용한 파일 시스템 복구





10. 복구후 다시 마운트 하면 파일들이 있다.

*파일시스템이 모두 복구되어 부팅이 가능해도 사용을 권장하지 않는다.

왜냐면 파일시스템 오류가 빈번히 재발하여 위 과정을 다시해야 할수도 있기 때문이다.

파일 백업 후 포맷을 권장하며, 되도록이면 LVM방식이 아닌 수동 파티션 설정을 권장한다.



Copyright © 1999-2020, swindler.

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog