RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

LVM(Logical Volume Manage)이란?

 

-------------------------------------------------------------------------------------------

(Virtual Volume Technology) -

 LVM(Logical Volume Manager), RAID(Redudant Array Inexpensive Disk)

가상 볼륨 방식 장점: (ㄱ) 확장성, (ㄴ) 안정성, (ㄷ) 편의성(관리 용이)

 

물리적인 디스크를 논리적 볼륨그룹으로 구성해서 이 논리적인 볼륨그룹 내에 사용자가 원하는 크기 만큼의 논리볼륨을 할당하여 사용하는 방법으로, 여러 개의 디스크를 하나의 논리적인 볼륨그룹(VG)으로 구성할 수 있으며, 각 논리볼륨(LV)는 독립적이므로, 하나의 디스크에도 여러 가지의 파일 시스템을 설치할 수 있다. 또한 디스크의 용량증설이 요구 될 경우에도 볼륨그룹에 물리볼륨(PV)만 추가하여 용량증설이 가능하고, 데이터량이 감소하여 더 이상 많은 양의 저장공간이 필요 없는 경우, 볼륨그룹에 속한 물리볼륨 개수를 축소하여 용량 감소가 가능하다.

 

Physical Volume

PV는 하나의 물리적인 Disk에 LVM을 사용할 수 있도록 LVM 데이터 구조를 생성한 것을

말한다.

디스크에 PV가 생성되면 LVM은 디스크를 하나의 물리볼륨으로 간주하게 되고, 볼륨그룹

에 포함시킬 수 있게 된다. 따라서 하나의 디스크를 몇 개의 섹션은 논리볼륨으로, 몇

개의 섹션은 전체디스크로 관리하는 등의 방법은 적용 할 수 없다.

 (예) 물리적인 디스크(EX:/dev/sda) or 물리적인 파티션(EX:/dev/sda1)

 

PE (Physical Extent) : PV가 갖는 일정한 블록

디스크에 PV를 생성하게 되면, LVM은 주소를 지정할 수 있는 PE(Physical Extent)라는 단위로 각 물리 디스크를 나눈다. extent는 주소 0번부터 시작하여 1씩 증분하며 순차적으로 디스크에 할당되고, PE의 크기는 볼륨 그룹을 만들 때 구성할 수 있다. 그리고 각 PE의 크기는 default 값이 4MB이며, 이 값은 필요에 따라 볼륨 그룹을 생성 시 1MB에서 256MB 사이의 값으로 지정할 수 있다.

 

Volume Group

VG는 하나 또는 그 이상의 PV를 포함하며, LV를 생성할 수 있는 Volume Group의 집합이

다.

vg00은 부팅정보와 OS가 있는 root Volume Group으로 변경이 불가능하다.

관리자가 관리상의 편의를 위해 DB의 경우에는 vgdb##, 일반적인 파일시스템의 경우에는

vgfil##등으로 VG이름을 지정하여 사용한다.

(예) 가상 디스크

 

 

 

Logical Volume

LV는 하나 또는 그 이상의 PV로 구성되어 있는 VG 공간을 전체 또는 분할하여 일반 파일

시스템, swap or dump area, raw disk로 사용할 수 있도록 논리적으로 할당한공간이다.

운영 중 공간이 부족할 경우 볼륨그룹에 속해 있는 또 다른 물리볼륨을 사용하여 확장이

가능하고, 필요하다면 크기를 변경하거나 다른 디스크로 데이터를 옮길 수 있다.

Volume Group vg00에 속한 Logical Volume lvol1,lvol2,lvol3은 각각 /stand, primary

swap, / 디렉토리로 변경이 불가능 하다.

(예) 가상 파티션

 

LE (Logical Extent) : LV가 갖는 일정한 블록

디스크에 PV를 생성하고, 생성된 PV를 이용하여 VG(Volume Group)을 구성한 후 이 VG에 LV(Logical Volume)를 생성할 수 있다. LV의 기본 할당 단위를 LE(Logical Extent)라고 하는데, 이 LE는 PV 생성 시 나누어진 PE 영역과 Mapping된다. 따라서 PE의 크기가 4MB이면 LE의 크기도 4MB가 된다. 그리고 LV의 크기는 구성된 LE의 개수 또는 할당할 디스크 용량에 의해 결정된다.

-------------------------------------------------------------------------------------------

 

(LVM 작업 순서)

Ÿ System Partition ID 변경(fdisk CMD)

-> PV 생성(pvcreate CMD)

-> VG 생성(vgcreate CMD)

-> LV 생성(lvcreate CMD)

-> F/S 생성(mkfs CMD)

 

-> 마운트(mount CMD, /etc/fstab)

 

-------------------------------------------------------------------------------------------

 

fdisk /dev/sdc

t -> L

기억해야할 system ID : 82, 83, 8e, fd 

 

물리적인 볼륨 생성

생성한 디스크를 LVM으로 사용하기 위한 선처리 작업으로 물리적인 볼륨으로 생성해 준다.

 

(명령어 형식)

 PV 생성

# pvcreate /dev/sda1

# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1

# pvcreate /dev/sd[abc]1

# pvcreate /dev/sda /dev/sdb /dev/sdc

 

 PV 삭제

# pvremove /dev/sda1

# pvremove /dev/sda1 /dev/sdb1 /dev/sdc1

# pvremove /dev/sd[abc]1

 

 PV 정보 확인

# pvs

# pvscan

# pvdisplay (# pvdisplay /dev/sdc1)

# lvmdiskscan

 

[참고] PV 생성시 PV 개수가 많은 경우의 예

# pvcreate /dev/sd[abcde][12]

or

# pvcreate /dev/sda1 /dev/sda2 /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdc2 .....

 

 

물리적인 볼륨 그룹생성(VG: Volume Group)

물리적인 볼륨을 생성하였으면 각각의 물리적인 볼륨을 하나의 그룹으로 생성해 준다.

 

(명령어 형식)

 VG 생성

# vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1

# vgcreate vg1 /dev/sd[cde]1

 

 VG 삭제

# vgremove vg1

# vgremove /dev/vg1

 

 VG에 디스크 추가/제거

# vgextend vg1 /dev/sdf1

# vgreduce vg1 /dev/sdf1

 

 VG 이름 변경

# vgrename /dev/vg1 /dev/vg1_backup

# vgrename vg1 vg1_backup

 

 VG 정보 확인

# vgs

# vgscan

# vgdisplay (# vgdisplay vg1)

 

논리 볼륨 생성(LV: Logical Volume)

논리 볼륨은 LVM에서 생성하는 파티션이므로 단일 파티션 또는 다중 파티션으로 나눌 수 있는데, 이때 논리 볼륨을생성하는 방법은 용량 단위 또는 PE수를 통해 생성해 줄 수 있다.

 

(명령어 형식)

 LV 생성

# lvcreate -L 10G vg1                       /* LV 이름 자동 생성 : lvol#(용량 10G) */

# lvcreate -L 1500M -n lv1 vg1

# lvcreate -L 1500 -n lv1 vg1                             /* 용량 단위가 없으면 MB */

# lvcreate -l 60%VG -n lv1 vg1

# lvcreate -l 100%FREE -n lv1 vg1  

 

[참고] -L 옵션으로 잘못 사용하는 경우

# lvcreate -L 100%FREE -n lv3 vg3

Invalid argument 100%FREE

Error during parsing of command line.

 

 LV 삭제

# lvremove /dev/vg1/lv1

 

 LV 이름 변경

# lvrename /dev/vg1/lv1 /dev/vg1/lv2

# lvrename vg1 lv1 lv2                                             /* vg1(lv1 -> lv2) */

 

 LV 공간 늘리기/줄이기

# lvextend -L 12G /dev/vg1/lv1                           /* lv1 용량을 12G로 맞춤 */

# lvextend -L +1G /dev/vg1/lv1                         /* lv1 용량을 1G 만큼 추가 */

# lvextend -l +100%FREE /dev/vg1/lv1

 

# lvreduce -L -3G /dev/vg1/lv1

# lvreduce -l -3 /dev/vg1/lv1       /* lv1 용량을 3 LE(Logical Extend)만큼 감소 */

 

 LV 정보 확인

# lvs

# lvscan

# lvdisplay

 

-------------------------------------------------------------------------------------------

LVM 작업방식

(ㄱ) 파티션 작업(Partition ID (83 -> 82))

# fdisk /dev/sdc

# pvcreate /dev/sdc1

# vgcreate vg1 /dev/sdc1

# lvcreate -l 100%FREE -n lv1 vg1

(ㄴ) 파일시스템 작업

# mkfs.ext3 /dev/vg1/lv1

(ㄷ) 마운트 작업

# vi /etc/fstab

# mkdir /oracle

# mount /oracle

-------------------------------------------------------------------------------------------

 

 

LVM 관리

정보를 자세히 보는 방법

(ㄱ) -v, -vv, -vvv, -vvvv 옵션 사용

# lvcreate -L 50MB new_vg

# lvcreate -v -L 50MB new_vg

# lvcreate -vvvv -L 50MB new_vg

(ㄴ) command --help

# pvcreate --help

# vgcreate --help

# lvcreate --help

(ㄷ) manual page

# man pvcreate

# man vgcreate

# man lvcreate

 

관리 작업(시나리오 작업)

파일시스템 용량을 늘리려는 경우

 

# lvs

# df -h /lv1 /;v2

# dd if=/dev/zero of=/lv2/file1 bs=1M count=400

if = input file

of = output file

bs = block size

count = 개수

# vgs

# lvextend -l +100%FREE /dev/vg1/lv2

# resize2fs /dev/vg1/lv2

# df -h /lv2

 

VG에 PV를 추가하는 경우

VG에 PV 추가하고 LV에 용량늘리기

vg1(sdc1, sdd1, sde1) + sdf1

# df -h /lv1

# dd if=/dev/zero of=/lv1/file2 bs=1M count=500

# dd if=/dev/zero of=/lv1/file3 bs=1M count=500

# df -h /lv1

# vgs

# pvs

# vgextend vg1 /dev/sdf1

# pvs

# vgs

# lvextend -l +100%FREE /dev/vg1/lv1

# resize2fs /dev/vg1/lv1

# df -h /lv1

 

 

LV 용량 감소

/lv1 - 용량감소

/lv2 - 용량증설

 

파일시스템 언마운트

# umount /lv1

파일시스템 점검

# e2fsck -f /dev/vg1/lv1  ( -f 옵션 : 모든상태에 대해서 점검한다. )

파일시스템 용량 줄이기

# resize2fs -p /dev/vg1/lv1 700M  ( 줄이고 싶은 용량과 )

LV 용량 줄이기

# lvreduce -L 700M /dev/vg1/lv1  ( reduce 용량은 반드시 같아야 한다.)

 

 

VG안의 PV를 새로운 PV로 교체

VG 안에 PV를 새로운 PV로 교체하는 이유

 성능이 좋은 디스크로 교체하는 경우(10000 rpm -> 15000 rpm)

 용량이 큰 디스크로 교체하는 경우(72G SCSI -> 250G SAS)

 

(전제조건) 새로운 디스크(EX: /dev/sdg, /dev/sdh)가 추가 되어 있고

하나의 파티션(/dev/sdg1, /dev/sdh1)으로 설정

(ㄱ) 서버 전원 OFF

# poweroff

(ㄴ) 새로운 디스크 장착

VMWare > VM > Setting > Add > Hard Disk > Create a new virtual disk > SCSI > 1G

(ㄷ) 서버 전원 ON 후 새로 장착된 디스크 확인

# ls -l /dev/sd? (# fdisk -l)

brw-r----- 1 root disk 8, 0 Apr 29 14:50 /dev/sda

brw-r----- 1 root disk 8, 16 Apr 29 14:50 /dev/sdb

brw-r----- 1 root disk 8, 32 Apr 29 14:50 /dev/sdc

brw-r----- 1 root disk 8, 48 Apr 29 14:50 /dev/sdd

brw-r----- 1 root disk 8, 64 Apr 29 14:50 /dev/sde

brw-r----- 1 root disk 8, 80 Apr 29 14:50 /dev/sdf

brw-r----- 1 root disk 8, 96 Apr 29 14:50 /dev/sdg 

brw-r----- 1 root disk 8, 112 Apr 29 14:50 /dev/sdh

 

# pvs

# fdisk /dev/sdg

-> /dev/sdg1(System partition ID : 8e)

# fdisk –l /dev/sdg (# fdisk -l | grep LVM)

# pvcreate /dev/sdg1

# pvs

# vgextend vg1 /dev/sdg1

# pvs

# pvmove /dev/sdf1 /dev/sdg1

# pvs

# vgreduce vg1 /dev/sdf1

# pvs

 

 

LV/VG/PV 삭제

 작업 순서

- umount 작업

- LV 삭제(lvremove CMD)

- VG 삭제(vgremove CMD)

- PV 삭제(pvremove CMD)

 

 

LV Striping 구성

LVM Stripe 방식의 특성

- 성능이 좋아진다, 안정성은 떨어진다, 디스트 사용 효율은 보통이다 

 

(명령어 형식)

# lvcreate -L 50G -i2 -I64 -n lv1 vg1   /* -I : 대문자 i */

-> -i 옵션: number of stripes

-> -I 옵션: stripe size(KB) - 기본값이 64KB

-> 2개의 PV에 걸쳐서 stripe 크기는 64KB 크기로 vg1에 lv1 구성

 

# lvextend -L +10G /dev/vg1/lv1

# lvextend -l +100%FREEE /dev/vg1/lv1

 

# lvcreate -L 1.5G -i 3(stripe의 갯수) -I 64(stripe size) -n stripelv vg1

 

데이터 저장순서   pv1             pv2           pv3

     1                2              3

     4                5              6

     ...

구성

# pvcreate /dev/sd[cde]1 (# pvcreate /dev/sdc1 /dev/sdd1 /dev/sde1)

# vgcreate vg1 /dev/sd[cde]1 (# vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1)

# lvcreate -L 1.5G -i 3 -I 64 -n stripelv vg1 /* 대문자 i */

# pvs

 

확장

# lvextend -l +100%FREE /dev/vg1/stripelv

# pvcreate /dev/sd[fgh]1

# vgextend vg1 /dev/sd[fgh]1

# lvextend -L +1.5G /dev/vg1/stripelv

 

 

LV Mirroring 구성

Mirror 방식의 특성

- 성능(r/w) : read 좋아질 수 있는 가능성이 있다, write : 떨어진다, 안정성 : 가장 좋다,

 디스트 사용효율 : 떨어진다.

 

(명령어 형식)

# lvcreate -L 50G -m 1(Mirroring 방식 옵션) -n lv1 vg1

-> -m 옵션: number of copies

# lvcreate -L 12G -m1 -n lv1 vg1 /dev/sdc1 /dev/sdd1

# lvextend -L +5G /dev/vg1/mirrorlv —nosync(용량 증설 시 데이터 동기화 실행x)

 

 

 

tune2fs -l /dev/VG1/LV1

df -h ( mount)

2016/07/27 18:22 2016/07/27 18:22
ZOSEL:Too much is as bad as too little...!! 자공(子貢)이 공자에게 "사(師:子張의 이름)와 상(商:子夏의 이름)은 어느 쪽이 어집니까?" 하고 묻자, 공자는 "사는 지나치고 상은 미치지 못한다"고 대답하였다. "그럼 사가 낫단 말씀입니까?" 하고 반문하자, 공자는 "지나친 것은 미치지 못한 것과 같다(過猶不及)"고 말하였다.
Too much is as bad as too little...!! 자공(子貢)이 공자에게 "사(師:子張의 이름)와 상(商:子夏의 이름)은 어느 쪽이 어집니까?" 하고 묻자, 공자는 "사는 지나치고 상은 미치지 못한다"고 대답하였다. "그럼 사가 낫단 말씀입니까?" 하고 반문하자, 공자는 "지나친 것은 미치지 못한 것과 같다(過猶不及)"고 말하였다.
전체 (202)
리눅스시스템 (92)
윈도우시스템 (16)
프로그램 (7)
네트워크시스템 (7)
최근관심 (1)
«   2016/08   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
  1. doc bao bong da 24h  06:50
    Thanks for finally talking about >::: ZOSEL ::...
  2. Antybiotyk Na TrąDzik ZaskóRnikowy  08/26
    Indications this could be the circumstance con...
  3. antybiotyk na trądzik różowaty  08/25
    You actually make it appear really easy togeth...
  1. Ugg Sito  2015
    Ugg Sito
  2. Ugg Online  2015
    Ugg Online
  3. Ugg Boots Outlet Italia  2015
    Ugg Boots Outlet Italia
  1. 2016/07 (5)
  2. 2016/05 (2)
  3. 2016/02 (4)