본문 바로가기
RedHatEnterpriseLinux

LVM Mirro

by 북한산산적 2012. 2. 8.

LVM Mirror

미러는 다른 장치에 있는 데이터의 동일한 복사본을 저장합니다. 데이터가 하나의 장치에 기록되었을 때, 이 데이터는 미러되어 두 번째 장치에도 기록됩니다. 이는 장치에 장애가 발생할 경우 데이터를 보호하게 됩니다. 하나의 미러 leg에 장애가 발생할 경우, 논리 볼륨은 선형 볼륨으로 되어 액세스 가능하게 됩니다.

LVM은 미러 볼륨을 지원합니다. 미러 논리 볼륨을 생성할 때 LVM은 기본적인 물리 볼륨에 기록된 데이터가 별개의 물리 볼륨으로 미러되었는 지를 확인합니다. LVM으로 다중 미러를 사용하여 미러 논리 볼륨을 생성할 수 있습니다.

LVM 미러는 일반적으로 512KB 크기로된 영역으로 복사되도록 장치를 나눕니다. LVM은 어떤 부분이 미러를 사용하여 동기화되었는 지를 추적하기 위해 사용된 로그를 보관합니다. 이러한 로그는 재부팅 후에도 없어지지 않도록 디스크나 메모리로 보관될 수 있습니다


.

미러 논리볼륨


kvm 환경 에서 하드3개 추가

1G 하드 3개를 추가 2개는 미러로 쓸 하드 나머지 한 개는 log 로 사용



하드 추가 및 fdisk 에서 lvm 볼륨으로 변환

fdisk /dev/vdb

fdisk /dev/vdc

fdisk /dev/vdd1


[root@test_server ~]# fdisk /dev/vdb



Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-2031, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-2031, default 2031):

Using default value 2031


Command (m for help): t

Selected partition 1

Hex code (type L to list codes): 8e

Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.

Syncing disks.


fdisk /dev/vdc






물리적 디스크로 변환

[root@test_server ~]# pvcreate /dev/vdb1

[root@test_server ~]# pvcreate /dev/vdc1

[root@test_server ~]# pvcreate /dev/vdd1


[root@test_server ~]# pvdisplay

--- Physical volume ---

PV Name /dev/hdb1

VG Name

PV Size 996.19 MB / not usable 0

Allocatable yes

PE Size (KByte) 4096

Total PE 249

Free PE 249

Allocated PE 0

PV UUID q46pnF-tNgE-KUgR-Rxla-RhU1-2qe8-cjTKFY

--- Physical volume ---

PV Name /dev/hdd1

VG Name vg0

PV Size 996.19 MB / not usable 0

Allocatable yes

PE Size (KByte) 4096

Total PE 249

Free PE 249

Allocated PE 0

PV UUID ajWPm1-w62s-0ROS-lvGu-LK5B-C7cZ-905nuy

--- Physical volume ---

PV Name /dev/vda1

VG Name vg0

PV Size 999.60 MB / not usable 3.60 MB

Allocatable yes

PE Size (KByte) 4096

Total PE 249

Free PE 249

Allocated PE 0

PV UUID NQitsZ-W4MW-BFLp-jMZK-GRHO-Mvoc-XF9i1V




vgcreate 명령어를 이용하여 vg01 만들어 준다

[root@tes server ~]# t_ vgcreate vg01 /dev/vdb1 /dev/vdc1 /dev/vdd1



[root@test_server ~]# vgdisplay

--- Volume group ---

VG Name vg01

System ID

Format lvm2

Metadata Areas 2

Metadata Sequence No 3

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 0

Open LV 0

Max PV 0

Cur PV 2

Act PV 2

VG Size 1.95 GiB

PE Size 4.00 MiB

Total PE 498

Alloc PE / Size 0 / 0

Free PE / Size 498 / 1.95 GiB

VG UUID T95DDh-mUD3-XjeU-ocUm-bYHD-LF7d-dJ33e7



vgs vg01 구룹의 사이즈 확인

[root@test_server ~]# vgs

VG #PV #LV #SN Attr VSize VFree

vg0 3 1 0 wz--n- 2.92G 992.00M



-L옵션을 이용한 M 로 용량을 지정해 생성

볼륨은 1024M 크기에 mirror vg0 볼륨그룹에서 나눠져 있다 첫번째 미러는 /dev/hdb1

2번째 미러는 /dev/hdd1 에 위치 하게 되며 미러로그는 /dev/vda1 에 위치 하게 된다.

[root@tes server ~]# lvcreate -L 1024M -m1 -n mirror vg0 /dev/hdb1 /dev/hdd1 /dev/vda1

Insufficient suitable allocatable extents for logical volume : 7 more required

Unable to allocate extents for mirror(s).

LV 용량부족으로 만들어 지지 않는다.


pvdisplay pe 용량을 확인

[root@tes server ~]# pvdisplay

--- Physical volume ---

PV Name /dev/hdb1

VG Name vg0

PV Size 996.19 MB / not usable 0

Allocatable yes

PE Size (KByte) 4096

Total PE 249

Free PE 249

~~


PE 사이즈로 다시 생성

Lvcreate 명령으로 lvm mirror 생성 –ㅣ 옵션 PE 값으로 용량을 지정 –n 옵션 name [볼륨구룹]

[root@tes server ~]# lvcreate -l 249 -m-n mirror vg0 /dev/hdb1 /dev/hdd1 /dev/vda1

Logical volume "mirror" created

[root@rhel5 ~]#


만들어진 lvm mirror 확인

[root@test_server ~]# lvs

LV VG Attr LSize Origin Snap% Move Log Copy% Convert

mirror vg0 mwi-a- 996.00M mirror_mlog 100.00


lvscan 으로 논리 볼륨 확인

[root@test_server ~]# lvscan

ACTIVE '/dev/vg0/mirror' [996.00 MB] inherit


ext3 파일시스템 생성

[root@test_server ~]# mkfs.ext3 /dev/vg0/mirror


디렉토리 생성과 mount

[root@test_server ~]# mkdir /lvm_mirror

[root@test_server ~]# mount /dev/vg0/mirror /lvm_mirror/

[root@test_server ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hda2 7.0G 5.0G 1.6G 77% /

/dev/hda5 1.5G 35M 1.4G 3% /var/crash

/dev/hda1 99M 15M 80M 16% /boot

tmpfs 442M 0 442M 0% /dev/shm

/dev/mapper/vg0-mirror

981M 18M 914M 2% /lvm_mirror

[root@test_server ~]#



트러블슈팅

Hdd 디스크 고장으로 다른 하드를 추가 하고 원상복귀

pvs 로 물리볼륨 확인

[root@rhel5 ~]# pvs

Couldn't find device with uuid NQitsZ-W4MW-BFLp-jMZK-GRHO-Mvoc-XF9i1V.

PV VG Fmt Attr PSize PFree

/dev/hdb1 vg0 lvm2 a- 996.00M 0

/dev/hdd1 vg0 lvm2 a- 996.00M 0

unknown device vg0 lvm2 a- 996.00M 992.00M



Hdd device 추가

새로운 하드 디스크를 장착 하고

fdisk 명령어로 파티션 및 파일 타입을 LVM 으로 생성하고 저장.

pvcreate /dev/device_name 으로 물리적볼륨으로 만들어 준다

미러 볼륨을 다시 구축하려면, 손상된 드라이브를 교체하고 쿨리 볼륨을 다시 생성합니다. 새 디스크로 교체하지 않고 같은 디스크를 사용하면, pvcreate 명령을 실행했을 때 "일치하지 않음 (inconsistent)"이라는 경고 메세지가 나타납니다. vgreduce --removemissing 명령을 실행하여 이러한 경고 메세지가 나타나지 않게 할 수 있습니다


[root@rhel5 ~]# vgreduce --removemissing vg0 --force

Couldn't find device with uuid NQitsZ-W4MW-BFLp-jMZK-GRHO-Mvoc-XF9i1V.

The log device for vg0/mirror has failed.

Unable to determine mirror sync status of vg0/mirror.

WARNING: Bad device removed from mirror volume, vg0/mirror

WARNING: Failed to replace mirror log device in vg0/mirror

WARNING: Use 'lvconvert -m 1 vg0/mirror' to replace failed devices

WARNING: Unable to find substitute device for mirror volume, vg0/mirror

Failed to deactivate LV mirror_mlog

Wrote out consistent volume group vg0


볼륨구룹에 device 를 추가 한다.

[root@rhel5 ~]# vgextend vg0 /dev/vda1


lvconvert 명령어로 vg0 lvm 을 재구성 한다..

[root@rhel5 ~]# lvconvert /dev/vg0/mirror -m1 /dev/hdb1 /dev/hdd1 /dev/vda1



LVM미러 장애 복구

http://docs.redhat.com/docs/ko-KR/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/mirrorrecover.html




lvm 관련 명령어


pvcreate : 물리적 볼륨을 생성 (pv 생성)

pvdisplay : 물리적 볼륨 정보를 확인 (pv 정보확인)

vgcreate : 볼륨구룹생성 (vg 생성)

vgchange -a y|n (y는 활성 n 는 비활성) : 볼륨구룹 활성화

vgdisplay : 볼륨구룹 정보 확인 (vg 정보확인)

lvcreate : 논리적 볼륨 생성

lvs : lvm 화인

vgs : 구룹사이즈 확인

lvremove : 논리적 볼륨 삭제

pvremov e : 물리적 볼륨 삭제

vgremove : 볼륨 구룹 삭제

vgextend : 기존 볼륨에 물리적 볼륨 추가
 

Software RAID LVM Mirror 장단점

RAID 레벨 1 구성은 '같은 데이터를 둘 또는 여러 대의 드라이브에 그대로 복사하는 것'이다. 같은 데이터가 여러 대의 디스크에 똑같이 저장되므로, 각 업체의 RAID 구현에 따라서는 데이터를 읽을 때 여러 대의 드라이브에서 동시에 읽게 하여 속도를 향상시키게 하기도 하지만, 동시에 여러 대의 드라이브에 같은 내용을 기록해야 하므로 쓰기 성능의 향상은 기대하기 힘들며 오히려 더 느려지기도 한다. 또한 드라이브가 n대 사용되더라도 모두 같은 내용을 담고 있으므로 볼륨의 용량이 중요한 경우 적합하지 않다.

 

볼륨을 구성하는 드라이브 중 한대에 장애가 발생하더라도 동일한 데이터가 다른 드라이브에 저장되어 있으므로 데이터의 내결함성은 뛰어나다. 볼륨을 구성하는 모든 드라이브에 동시에 장애가 발생하지 않는다면 데이터를 보존할 수 있다


http://docs.redhat.com/docs/ko-KR/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/LVM_definition.html