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