본문 바로가기

리눅스/강의

[14. LVM]

LVM (Logical Volume Manager)


설명   

여러개의 물리 또는 논리 디스크를 합쳐 한 개의 파일시스템으로 사용한다.

사용중인 디스크의 공간이 부족할 떄 여러개의 디스크를 추가로 장착해서 LVM을 통해 부족한 디스크의 공간을 확장함

쉽게 말해서 100G , 200G , 300G 디스크를 하나로 합쳐 논리적으로 600G 디스크로 사용했다는 소리.


명령어

① PV 생성 : pvcreate [파일명]

② VG 생성 : vgcreate [VG 그룹명] [파일명] [파일명]...

③ LV 생성 : lvcreate -l [볼륨크기] -n [LV 그룹명] [VG 그룹명] 



LVM 구성준비

fdisk 명령어를 이용해 생성한 파티션의 타입을 LVM(8e)로 변경하면 된다.

http://chloro.tistory.com/97

(링크 참조)


LVM 3가지 구성 단계


1) PV (Physical Volmume)

- LVM을 구성하기 전에 물리적인 단위(볼륨)으로 변환한다.

- pvcreate 파일명 

(예. pvcreate /dev/sdb1) -> fdisk로 인해 LVM 타입으로 생성된 파티션만 가능.


2) VG (Volume Group)

- PV로 변환된 볼륨들을 논리적인 단위(볼륨그룹)으로 묶음.

- vgcreate 생성할vg명 파일명 , 파일명...

(예. vgcreate VG /dev/sdb1 /dev/sdc1)


3) LV (Logical Volume)

- 볼륨 그룹에서 원하는 만큼 디스크 공간을 재할당. (파티션과 같은개념)

- 실제 사용하는 볼륨이다.

- lvcreate -L LV용량 -n LV명 VG명

(예. lvcreate -L 1T -n LV VG)


실습

1) LVM 타입 파티션 생성

- 1TB 하드디스크를 두개 생성 후 실습을 진행한다.

- 하드를 2개 생성하면 기존의 하드가 1개였다면 /dev/sdb , /dev/sdc로 생성될 것임.

- /dev/sdb의 파티션 생성과정은 적어놨고 , /dev/sdc도 똑같이 따라하면 된다.

[root@localhost test]# fdisk /dev/sdb

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-130, default 1): 

Using default value 1

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

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes
- 생략 -

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          52      417658+  83  Linux

400M 용량을 가진 /dev/sdb1 주 파티션이 생성됨.

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): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes
-생략 -

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          52      417658+  8e  Linux LVM

/dev/sdb1 리눅스 파티션을 LVM 타입으로 변경함.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

2) 생성한 파티션을 대상으로 LVM을 진행.
[root@localhost test]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[root@localhost 바탕화면]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created

위에서 생성한 LVM(8e) 타입의 파티션 2개를 각 PV볼륨으로 변환한다.

[root@localhost 바탕화면]# pvs
  PV         VG   Fmt  Attr PSize   PFree  
  /dev/sdb1  VG   lvm2 a--  404.00m 404.00m
  /dev/sdc1  VG   lvm2 a--  600.00m 600.00m

pvs 명령어로 변환된 PV볼륨 확인.

[root@localhost 바탕화면]# vgcreate VG /dev/sdb1 /dev/sdc1 
  Volume group "VG" successfully created

PV볼륨으로 변환된 sdb1 , sdc1 장치를 VG라는 이름으로 묶는다.

[root@localhost 바탕화면]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree   
  VG     2   0   0 wz--n- 1004.00m 1004.00m

vgs 명령어로 묶어진 PV볼륨들을 확인.

[root@localhost 바탕화면]# lvcreate -L 1T -n LV VG
  Volume group "VG" has insufficient free space (251 extents): 262144 required.

[root@localhost 바탕화면]# lvcreate -L 950m -n LV VG

  Rounding up size to full physical extent 952.00 MiB

  Logical volume "LV" created


VG 볼륨을 1TB 용량의 LV라는 이름의 LV볼륨으로 생성한다.

-> 용량부족으로 할당이 안됨. (VG 볼륨의 용량이 1TB지만 실제 사용가능한 할당량은 1TB 보다 조금 아래)

VG 볼륨을 950M 용량의 LV 라는 이름의 LV볼륨으로 생성한다.

-> 생성완료.


[root@localhost 바탕화면]# lvs

  LV   VG   Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert

  LV   VG   -wi-a----- 952.00m  


lvs 명령어로 생성된 LV볼륨을 확인.


3) LVM 마운트

[root@localhost 바탕화면]# ls -ld /dev/VG/LV 

lrwxrwxrwx. 1 root root 7 2017-11-05 15:38 /dev/VG/LV -> ../dm-0


/dev/VG 경로에 LV라는 이름으로 LV볼륨이 생성됨.


[root@localhost 바탕화면]# mkfs.ext4 /dev/VG/LV 
- 생략 -
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

LV 볼륨을 ext4 파일시스템 타입으로 포맷한다.

[root@localhost 바탕화면]# mount /dev/VG/LV /mnt
[root@localhost 바탕화면]# df -T | tail -1
/dev/mapper/VG-LV ext4     959512   17588    893184   2% /mnt

LV 볼륨을 /mnt 디렉터리에 마운트.
df 명령어로 마운트된 LV볼륨을 확인

[root@localhost /]# fsck -y /dev/VG/LV 
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/mapper/VG-LV: clean, 11/60928 files, 8231/243712 blocks

LV 볼륨이 정상적인지 fsck 명령어로 확인한다.
clean 이라고 뜨면 파일 시스템이 정상인 것. (마운트시엔 확인하지 못함)
위에 마운트랑 순서가 바뀜. 이것부터 먼저 해야됨.


4) LVM 삭제

[root@localhost /]# umount /mnt

[root@localhost /]# lvscan
  ACTIVE            '/dev/VG/LV' [952.00 MiB] inherit

/mnt 디렉터리에 마운트 된 장치 해제.
lvscan 명령어로 LV볼륨경로를 확인한다.

[root@localhost /]# lvremove /dev/VG/LV 
Do you really want to remove active logical volume LV? [y/n]: y
  Logical volume "LV" successfully removed

lvremove 명령어를 이용해 LV 볼륨을 삭제한다.

[root@localhost /]# vgs
  VG   #PV #LV #SN Attr   VSize    VFree   
  VG     2   0   0 wz--n- 1004.00m 1004.00m
[root@localhost /]# vgremove VG
  Volume group "VG" successfully removed

vgs 명령어로 VG볼륨이름 확인 후 vgremove 명령어로 삭제.

[root@localhost /]# pvscan
  PV /dev/sdb1                      lvm2 [407.87 MiB]
  PV /dev/sdc1                      lvm2 [603.98 MiB]
  Total: 2 [1011.85 MiB] / in use: 0 [0   ] / in no VG: 2 [1011.85 MiB]
[root@localhost /]# pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped
[root@localhost /]# pvremove /dev/sdc1
  Labels on physical volume "/dev/sdc1" successfully wiped

pvscan 명령어로 PV볼륨으로 변환된 장치들을 확인.
pvremove 명령어로 변환 된 장치들을 삭제한다. (장치가 삭제되진 않고 , PV볼륨으로 변환된 정보가 사라짐)


'리눅스 > 강의' 카테고리의 다른 글

[16. RPM]  (0) 2017.11.08
[15. 프로세스]  (0) 2017.11.05
[13. 스케쥴러]  (0) 2017.11.03
[12. 마운트]  (0) 2017.11.02
[11. 파티션]  (0) 2017.11.01