-
[리눅스] LVM ( 가상화기법 )서버/리눅스 2017. 4. 12. 20:39
LVM ( : Logical Volume Manager )가상화 기법
장치를 접근하고 있는중에(사용) 추가가 가능하다. >> raid의 단점보완.
>> 대신 안정성이 떨어진다.
기본 LVM ( #>fdisk /dev/sda ) :
리눅스의 기본파티션으로 설정된 sda의 주파티션또한 Linux LVM이다.
LVM 3가지 구성 단계
#1 ) PV ( Phygical Volume )
LVM을 구성하기전에 물리적인 단위( 볼륨 )으로 변환한다.
#2 ) VG ( Volume Group )
PV로 변환된 볼륨들을 논리적인 단위 ( 볼륨그룹 )으로 묶음
#3 ) LV ( Logical Volume )
볼륨 그룹에서 원하는 만큼 디스크 공간을 재할당 ( 파티션과 같은 개념 )
>>실제 사용하는 볼륨
디스크 장치 >> PV > > LV
디스크 장치 >> PV >> VG >> LV
디스크 장치 >> PV >
구성
-LINUX
-추가한 디스크
-파일시스템, 마운트에 관한 이론
실습
#1) LVM linear 구성
#>fdisk /dev/sdb
Command (m for help ) : n
>> All Enter
Command (m for help ) : t
Select partition 1 ( 파티션이 하나이므로 자동선택 아닌분들은 선택해주셔야 합니다. )
Hex code (type L to list all codes ) : 8e
>>제공되는 LVM의 시스템 ID [ 8e ]를 기재한다.
Command (m for help ) : w
#>fdisk /dev/sdc
위와 동일하게 진행한다.
#PV 생성
#>pvcreate <dev_name>
#>pvcreate /dev/sdb1
#>pvcreate /dev/sdc1
>>Physical volume " 경로 " successfully created. 라고 나오면 [ 성공 ]
>>찾지 못하는 에러가 나오면 디스크를 뺏다 꽂거나 싹 밀어 주면된다. [ 실패 ]
PV확인
#>pvs
PV : 장치이름
VG : 소속된 VG
PSIZE : 총 용량
PFree : 사용 가능한 용량
#VG 생성
#>vgcreate <vg_name> <pv_name1> <pv_name2 .....>
#>vgcreate korea /dev/sdb1 /dev/sdc1
첫번째 아규먼트 : 생성될 볼륨그룹 ( korea )
나머지 아규먼트 : PV
VG확인
#>pvs
#PV : LV에 속해있는 PV갯수
#LV : 나누어진 LV
VISZE : 총용량
VFree : 사용 가능한 용량
#LV 생성
#>lvcreate -L <size> -n <lv_name> <vg_name>
#>lvcreate -L 500M -n lv01 korea
option
-L <size> : 컴퓨터 용량 단위 ( bB sS kK mM gG tT pP eE ...)
-n <name> : 이름지정
-l <size[FREE]> : %로 사이즈 지정 ( vg의 남는공간의 %로 계산해서 사용 ) ex ) -l 100%FREE
더많은 명령어는
#>lvcreate --help 를 참조하거나 매뉴얼을 참조한다.
LV확인
#>lvs
재확인
확인해본결과 첫번째 디스크에서 할당되었다.
lv의 기본 구성은 [ linear ] 구성인가?
첫번쨰 디스크의 용량이 초과되어 다음디스크로 쓰겠다는 메세지와함께 2번째 디스크의 용량이 준것을 알 수 있었다.
#>fdiks -l로 확인해보면
Disk /dev/mapper/korea-lv06 이 만들어진것을 볼 수 있다.
mapper디렉터리안에 볼륨그룹 korea에 lv06 논리볼륨이 만들어 진것을 볼수 있다.
>> Raid의 [ linear ] 개념과는 조금 달랐다.
파티션의 개념이 추가되서 우선순위 개념이 추가되었다.
즉 한번에 할당이 가능한 디스크를 먼저 찾고 없는 경우 2개의 디스크를 Logical 볼륨으로 적용했다.
#파일시스템과 마운트 적용
#>mkfs -t ext4 /dev/mapper/korea-lv01
#>mkdir -p /lvm/linear1
#>mount /dev/mapper/korea-lv01 /lvm/linear1
마운트까지 완료하면 완벽하게 파일을 작성할 수 있는 장치가 되었다
/lvm/linear1 에 저장한다고 하면 > /dev/mapper/korea-lv01 > /dev/sdb1에 저장이된다.
lv06.은 마운트해주면 /dev/sdb1과 /dev/sdc1에 저장되는 형식이다.
#제거
#>umount /dev/mapper/korea-lv01
#>lvremove /dev/mapper/korea-lv01
[y/n] : y
#>vgremove korea
#>pvremove /dev/sdb1
/dev/sdc1
마운트해제 → LV제거 → VG제거 → PV제거 ( 만들어진것의 역순으로 진행한다. )
제거 대상을 모를 경우 각각 lvs, vgs, pvs를 통해 확인한다.
LV를 제거하지않고 VG를 바로지운경우 VG에 속한 LV에 대한 선택을 물어본다.
앞에서 언급했듯이 LV는 동일한 이름이 존재할 수 있기에 제거 시 경로까지 작성해줘야한다.
하지만 VG는 단순히 이름으로써 동일한 이름이 존재할 수 없다. 그래서 볼륨그룹이름으로 제거가 가능하다. #모든 논리볼륨 지우고 삭제
#2) LVM 확장 & 축소
준비된 시스템
미리 만들어놓은 파티션 /dev/sdb1 /dev/sdc1
PV : /dev/sdb1 /dev/sdc1
VG : 위에 2개의 PV로 이뤄진 볼륨그룹 linear
LV : 100%FREE로 만들어진 linear그룹에서 나온 lv01
파일시스템 : ext4
마운트 : /lvm/linear1
확장
상황 : 1G두개의 PV를 가지고 VG를 생성해 모든 용량 (100%FREE)를 사용했다. 따라서 VG에는 남는 용량이 없어서
>>새로운 PV를 생성
#>fdisk /dev/sdd [세부사항은 위에 참조]
#>pvcreate /dev/sdd1
>> VG공간 추가
#>vgextend <vg_name> <pv_name>
#>vgextend linear /dev/sdd1
: 만약 LV확장시 VG에 용량이 남아있다면 여기까지의 과정은 생략이다.>> LV용량 추가.#>lvextend -L +<size> <lv_dev_name>
#>lvextend -l 100%FREE /dev/mapper/linear-lv01-l , -L ( size 변경옵션 ) 에서 아규먼트에 + 기호를 붙여준다. ex) -L +500M -l +100%FREE또한 lv이름은 경로까지 지정해서 표시한다.
>> mirror상태일때는 <lv_dev_name> 옆 아규먼트에 <pv_name>을 기재한다.
>>파일시스템 반영 ( 이때는 새로 적용시키는게 아니라 변경되었다고 시스템에 반영하는 것뿐이다.)
#>resize2fs <dev_name>
#>resize2fs /dev/mapper/linear-lv01
확인결과
축소
상황 : LV에서 남는 용량이 디스크만큼의 크기면 디스크를 제거 하기 위함이다.
>>LV 감소
#>lvreduce -L -<size> <lv_dev_name>
#>lvreduce -L -1020M /dev/mapper/linear-lv01
[y/n] : y
: LV에 적용된 디스크의 용량을 정확히 안다면 디스크를 빼올 수 있다. 1G = 1020m였던것을 볼 수 있었다.
따라서 추가된 역순으로 빠질것을 알 수 있기에 /dev/sdd1파티션을 빼본다.
>> 감소시킨경우 파일시스템을 적용하려면 장치를 해제후 적용해야 한다.
: 이말은 파일시스템이 재적용되므로 장치안에 있는 파일을 다른 장치로 백업시켜놓고 적용해야 한다는 것이다.
#>umount /dev/mapper/linear-lv01
#>mkfs -t ext4 /dev/mapper/linear-lv01
#>mount /dev/mapper/linear-lv01 lvm/linear1
!!! 이떄 create나 extend 를 사용해서 추가할때는 VG의 남은용량의 퍼센트게이지로 추가하였는데
줄일때는 -l %옵션은 어떤 용량의 %로 계산하는것일까?
답은 FREE에 있다
지금은 100%로 한번더 줄인 모양이다.
앞에서 -L로 1020으로 줄였었다. 그래서 VFREE값이 1020m로 바꼇을텐데, 그 FREE값의 100%값을 적용시켜서 감소되었다.
또 한번 해보겠다
지금은 1020m + 1020m = 1.99G가 되었으니 FREE값의 25%만 줄이면 500m를 줄일 수 있을것이다.
따러서 %은 VFREE의 FREE값을 적용한다는 것만 기억하고 처음은 -L인 값으로 줄여야한다.
>>VG감소
: 볼륨그룹에서 PV를 빼는것이다.
#>vgreduce <vg_name> <pv_name>
#>vgreduce linear /dev/sdd1
: VG를 감소할때는 pvs로 먼저 사용하지 않는 디스크를 확인해야한다.
/dev/sdc1와 /dev/sdd1의 용량이 가득차있다는것을 확인했다.
이렇게 사용하지 않는 PV를 VG에서 제거한 후 다른 VG를 만들어주거나 완전히 디스크를 제거해도 된다.
Stripe 구성과 mirror 구성은 다음포스터에서
'서버 > 리눅스' 카테고리의 다른 글
[리눅스] 기본적인 서버 구성 (0) 2017.04.14 [리눅스] LVM stripe, mirror (0) 2017.04.13 [리눅스] RAID 2 (0) 2017.04.11 [리눅스] RAID ( 명령어 : mdadm ) (0) 2017.04.10 [리눅스] 네트워크 설정(정리) (0) 2017.04.07