LVM(Logical Volume Manager)
페이지 정보
작성자 admin 작성일16-02-06 23:02 조회2,086회 댓글1건관련링크
본문
- 파일시스템 용량이 부족한 경우 동적으로 확장할수 있다.
- 파일시스템 타입에 따라서 용량을 축소할수도 있다.
- 여러개의 디스크를 하나로 묶어서 한개의 디스크처럼 사용할수 있다.
Volume Group(VG): Logical Volumes 과 Physical Volumes을 하나의 관리할수있는 group 으로 만든것.
(PV로 구성된 가상의 디스크, 사용하기 위해서는 VG 에 LV를 생성해야 한다)
Physical Volume(PV): 일반적으로 하드디스크나 파티션을 의미.
Logical Volume(LV) : LVM 으로 구성되지 않은 시스템에서의 디스크 파티션과 같다.
(가상디스크(VG) 의 분할영역)
Physical Extent(PE) : 물리적 할당단위
Logical Extent(LE) : 논리적 할당단위
LVM 구성형태
*. LVM 관련 명령어
pvcreate - LVM 구성을 위해서 PV 를 만들고 초기화한다.
vgcreate - PV 장치명으로 새로운 Volume Group(VG)를 만든다.
vgdisplay - VG 정보를 출력한다.
lvcreate - VG에 logical volume 생성
lvremove - logical volume 을 제거
vgremove - volume group을 제거
*. LVM 구성 순서
1. VG 를 구성할 디스크나 파티션을 정한다.
2. VG로 구성할 디스크를 각각 fdisk 로 파티션을 생성하고 파티션 타입을 lvm 으로 한다.
3. physical voume을 만든다.
4. 각각의 physical volume 을 묶어서 하나의 volume group으로 생성한다.
5. vgs 및 vgscan 으로 volume group 이 제대로 생성되었는지 확인한다.
6. lvcreate 로 volume group 에 logical volume 을 생성한다.
7. logical volume 에 파일시스템을 생성한다.
8. logica volume 을 mount 하여 사용. (사용중 용량이 부족하면 확장할수 있다)
ex)
1G 디스크 두개를 VG 로 구성
사용할 디스크
/dev/sdc(1기가)
/dev/sdd(1기가)
그리고 /dev/sdd 도 똑같은 방법으로 파티션을 하나 설정하고 LVM 타입으로 한다.
파티션 작업후 제대로 되었는지 아래처럼 확인해본다.
3. physical volume 생성
아래처럼 확인은 pvscan이나 또는 pvdisplay로 확인할수 있다.
4. Volume Group 생성
VG 생성후 vgscan 으로 확인할 수 있다.
또는 아래처럼 vgdisplay 로 확인할 수 있다.
6. Logical Volume 생성
pvscan 대신에 lvdisplay 로 확인할 수도 있다.
7. Logical Volume 에 파일시스템 생성
8. Logical Volume 마운트
마운트 된 장치명이 마운트 할때의 이름과 다르게 보이지만 출력결과는 정상이다.
아래처럼 확인해보면 문제가 없다는 것을 알수 있다.
둘다 dm-0 의 symbolic link 파일이므로 둘다 같다.
logical volume 확장.
그리고 시스템을 계속 사용하다 보면 아래처럼 /home 의 용량이 부족할때가 있을것이다.
용량이 얼마 남지 않았으므로 빨리 데이터를 다른 장치로 옮겨야 하지만 LV 이므로
옮기지 않고 동적 확장이 가능하다.
(만일의 경우에 대비해서 /home 에 있는 계정은 백업이 되어 있으면 안전하다)
a. VG 용량을 추가할 디스크를 하나 선택하고 아래처럼 파티션을 LVM 타입으로 설정한다.
b. physical volume 생성
c. VG 확장
d. logical volume 확장
VG 의 남은 모든 용량을 logical volume 에 성공적으로 추가하였다.
하지만 파일시스템의 크기는 그대로이다.
5. file system 확장
* 주의) file system 타입이 xfs 인 경우는 resize2fs 대신에 xfs_growfs 를 사용해야 한다.
(ex. xfs_growfs /dev/test_vg/test_lv)
* lv확장할때 -r 옵션을 사용하면 filesystem 도 확장이 된다. ==>
ex) lvextend -L +100M -r /dev/sample/sample_lv
용량이 늘어났고 계정데이터도 문제가 없다.(성공적으로 작업완료됨)
* logical volume 용량 축소
- 용량을 축소하는경우에는 파일시스템의 손상이 있을 가능성이 있음(중요한 데이터라면 먼저 백업을
해두어야 함)
- 마운트 해제를 하고 용량축소 작업을 해야 한다.
- 작업순서 : 마운트 해제 --> filesystem check --> filesystem 축소 --> lv 축소
logical volume 이 /newhome 에 마운트 되어 있다고 가정하고 축소를 하는경우에는 아래처럼 하면 된다.
volume group에서 pv 제거
logical volume 구성후 pv의 교체등의 이유로 기존에 설정된 pv를 제거하는 경우에는
아래 처럼 작업을 하면 된다.
작업순서 : 제거하려는 pv 의 익스텐트를 다른 pv 로 이동 --> vg 에서 pv 제거
- 파일시스템 타입에 따라서 용량을 축소할수도 있다.
- 여러개의 디스크를 하나로 묶어서 한개의 디스크처럼 사용할수 있다.
Volume Group(VG): Logical Volumes 과 Physical Volumes을 하나의 관리할수있는 group 으로 만든것.
(PV로 구성된 가상의 디스크, 사용하기 위해서는 VG 에 LV를 생성해야 한다)
Physical Volume(PV): 일반적으로 하드디스크나 파티션을 의미.
Logical Volume(LV) : LVM 으로 구성되지 않은 시스템에서의 디스크 파티션과 같다.
(가상디스크(VG) 의 분할영역)
Physical Extent(PE) : 물리적 할당단위
Logical Extent(LE) : 논리적 할당단위
LVM 구성형태
*. LVM 관련 명령어
pvcreate - LVM 구성을 위해서 PV 를 만들고 초기화한다.
vgcreate - PV 장치명으로 새로운 Volume Group(VG)를 만든다.
vgdisplay - VG 정보를 출력한다.
lvcreate - VG에 logical volume 생성
lvremove - logical volume 을 제거
vgremove - volume group을 제거
*. LVM 구성 순서
1. VG 를 구성할 디스크나 파티션을 정한다.
2. VG로 구성할 디스크를 각각 fdisk 로 파티션을 생성하고 파티션 타입을 lvm 으로 한다.
3. physical voume을 만든다.
4. 각각의 physical volume 을 묶어서 하나의 volume group으로 생성한다.
5. vgs 및 vgscan 으로 volume group 이 제대로 생성되었는지 확인한다.
6. lvcreate 로 volume group 에 logical volume 을 생성한다.
7. logical volume 에 파일시스템을 생성한다.
8. logica volume 을 mount 하여 사용. (사용중 용량이 부족하면 확장할수 있다)
ex)
1G 디스크 두개를 VG 로 구성
사용할 디스크
/dev/sdc(1기가)
/dev/sdd(1기가)
/root# fdisk /dev/sdc
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
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):
Using default value 130
Command (m for help): p
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x96017627
Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 83 Linux
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/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x96017627
Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
/root#
그리고 /dev/sdd 도 똑같은 방법으로 파티션을 하나 설정하고 LVM 타입으로 한다.
파티션 작업후 제대로 되었는지 아래처럼 확인해본다.
/root# fdisk -l /dev/sdc /dev/sdd | grep -i lvm
/dev/sdc1 1 130 1044193+ 8e Linux LVM
/dev/sdd1 1 130 1044193+ 8e Linux LVM
/root#
3. physical volume 생성
/root# pvcreate /dev/sdc1 /dev/sdd1
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdd1" successfully created
/root#
아래처럼 확인은 pvscan이나 또는 pvdisplay로 확인할수 있다.
/root# pvscan
PV /dev/sdc1 lvm2 [1019.72 MiB]
PV /dev/sdd1 lvm2 [1019.72 MiB]
Total: 2 [1.99 GiB] / in use: 0 [0 ] / in no VG: 2 [1.99 GiB]
/root#
4. Volume Group 생성
/root# vgcreate test_vg /dev/sdc1 /dev/sdd1
Volume group "test_vg" successfully created
/root#
VG 생성후 vgscan 으로 확인할 수 있다.
vgscan
Reading all physical volumes. This may take a while...
Found volume group "test_vg" using metadata type lvm2
/root#
또는 아래처럼 vgdisplay 로 확인할 수 있다.
/root# vgdisplay
--- Volume group ---
VG Name test_vg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
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.98 GiB
PE Size 4.00 MiB
Total PE 508
Alloc PE / Size 0 / 0
Free PE / Size 508 / 1.98 GiB
VG UUID oEbzaT-rpXX-NENF-nFRj-nvhu-VHV3-SqyukC
/root#
6. Logical Volume 생성
/root# lvcreate -l 100%FREE -n test_lv test_vg
(또는 lvcreate -L 1.98G -n test_lv test_vg)
Logical volume "test_lv" created
/root# vgdisplay | grep -E -i 'vg size|free'
VG Size 1.98 GiB
Free PE / Size 0 / 0
/root# lvscan
ACTIVE '/dev/test_vg/test_lv' [1.98 GiB] inherit
/root#
pvscan 대신에 lvdisplay 로 확인할 수도 있다.
7. Logical Volume 에 파일시스템 생성
/root# mkfs.ext4 /dev/test_vg/test_lv
/root#
8. Logical Volume 마운트
/root# mkdir /lvmdata
/root# mount /dev/test_vg/test_lv /lvmdata
/root# df -h /lvmdata
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/test_vg-test_lv 2.0G 35M 1.9G 2% /lvmdata
/root#
마운트 된 장치명이 마운트 할때의 이름과 다르게 보이지만 출력결과는 정상이다.
아래처럼 확인해보면 문제가 없다는 것을 알수 있다.
둘다 dm-0 의 symbolic link 파일이므로 둘다 같다.
/root# ls -l /dev/test_vg/test_lv
lrwxrwxrwx. 1 root root 7 2016-02-06 22:22 /dev/test_vg/test_lv -> ../dm-0
/root# ls -l /dev/mapper/test_vg-test_lv
lrwxrwxrwx. 1 root root 7 2016-02-06 22:22 /dev/mapper/test_vg-test_lv -> ../dm-0
/root#
* 구성이 다 완료 되었으면 /home 디렉토리의 모든 계정을 아래처럼 logical volume 으로 이동시킨다.
root# df -h /lvmdata ; logical volume 이 마운트되어 있는지 확인후 마운트 안되어 있으면 마운트한다.
(마운트가 안되어 있으면 마운트 한다 --> root# mount /dev/test_vg/test_lv /lvmdata)
root# cp -rp /home/* /lvmdata ; 계정복사, 주의 - 속성이 바뀌지 않도록 -p 옵션 사용.
root# rm -rf /home/* ; 원래 계정은 필요없으므로 삭제
root# umount /home ; 원래 계정 장치는 필요 없으므로 마운트해제
root# umount /lvmdata ; logical volume 을 계정 디렉토리에 마운트 하기 위해서 마운트 해제
root# mount /dev/test_vg/test_lv /home ; 원래의 홈디렉토리에 logical volume 마운트
리부팅후에도 바뀐 장치로 계정을 계속 사용할 수 있어야 하므로 /etc/fstab 파일을 수정
/dev/test_vg/test_lv /home ext4 defaults 1 2 <-- 원래의 /home 을 이렇게 수정.
logical volume 확장.
그리고 시스템을 계속 사용하다 보면 아래처럼 /home 의 용량이 부족할때가 있을것이다.
/root# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/test_vg-test_lv 2.0G 1.9G 100M 90% /home
/root#
용량이 얼마 남지 않았으므로 빨리 데이터를 다른 장치로 옮겨야 하지만 LV 이므로
옮기지 않고 동적 확장이 가능하다.
(만일의 경우에 대비해서 /home 에 있는 계정은 백업이 되어 있으면 안전하다)
a. VG 용량을 추가할 디스크를 하나 선택하고 아래처럼 파티션을 LVM 타입으로 설정한다.
/root# fdisk -l /dev/sde
Disk /dev/sde: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xef69275b
Device Boot Start End Blocks Id System
/dev/sde1 1 130 1044193+ 8e Linux LVM
/root#
b. physical volume 생성
/root# pvcreate /dev/sde1
Physical volume "/dev/sde1" successfully created
/root# pvscan
PV /dev/sdc1 VG test_vg lvm2 [1016.00 MiB / 0 free]
PV /dev/sdd1 VG test_vg lvm2 [1016.00 MiB / 0 free]
PV /dev/sde1 lvm2 [1019.72 MiB]
Total: 3 [2.98 GiB] / in use: 2 [1.98 GiB] / in no VG: 1 [1019.72 MiB]
/root#
c. VG 확장
/root# vgextend test_vg /dev/sde1
Volume group "test_vg" successfully extended
/root# vgdisplay
--- Volume group ---
VG Name test_vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 2.98 GiB
PE Size 4.00 MiB
Total PE 762
Alloc PE / Size 508 / 1.98 GiB
Free PE / Size 254 / 1016.00 MiB
VG UUID oEbzaT-rpXX-NENF-nFRj-nvhu-VHV3-SqyukC
/root#
d. logical volume 확장
/root# lvextend +1016M /dev/test_vg/test_lv ; 아래 괄호안에 있는 명령어로 해도 가능.
(/root# lvresize --size +1016M /dev/test_vg/test_lv)
Extending logical volume test_lv to 2.98 GiB
Logical volume test_lv successfully resized
/root# vgdisplay
--- Volume group ---
VG Name test_vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 2.98 GiB
PE Size 4.00 MiB
Total PE 762
Alloc PE / Size 762 / 2.98 GiB
Free PE / Size 0 / 0
VG UUID oEbzaT-rpXX-NENF-nFRj-nvhu-VHV3-SqyukC
/root# lvscan
ACTIVE '/dev/test_vg/test_lv' [2.98 GiB] inherit
/root#
VG 의 남은 모든 용량을 logical volume 에 성공적으로 추가하였다.
/root# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/test_vg-test_lv 2.0G 1.9G 100M 10% /home
/root#
하지만 파일시스템의 크기는 그대로이다.
5. file system 확장
resize2fs /dev/test_vg/test_lv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/test_vg/test_lv is mounted on /home; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/test_vg/test_lv to 780288 (4k) blocks.
The filesystem on /dev/test_vg/test_lv is now 780288 blocks long.
* 주의) file system 타입이 xfs 인 경우는 resize2fs 대신에 xfs_growfs 를 사용해야 한다.
(ex. xfs_growfs /dev/test_vg/test_lv)
* lv확장할때 -r 옵션을 사용하면 filesystem 도 확장이 된다. ==>
ex) lvextend -L +100M -r /dev/sample/sample_lv
/root# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/test_vg-test_lv 3.0G 620M 2.2G 22% /home
/root#
/root# su - user1
[user1@vega ~]$ pwd
/home/user1
[user1@vega ~]$ ls -a
. .. .bash_logout .bash_profile .bashrc .emacs .gnome2 .mozilla
[user1@vega ~]$
용량이 늘어났고 계정데이터도 문제가 없다.(성공적으로 작업완료됨)
* logical volume 용량 축소
- 용량을 축소하는경우에는 파일시스템의 손상이 있을 가능성이 있음(중요한 데이터라면 먼저 백업을
해두어야 함)
- 마운트 해제를 하고 용량축소 작업을 해야 한다.
- 작업순서 : 마운트 해제 --> filesystem check --> filesystem 축소 --> lv 축소
logical volume 이 /newhome 에 마운트 되어 있다고 가정하고 축소를 하는경우에는 아래처럼 하면 된다.
# df -h /newhome
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/newvg-newlv 476M 202M 240M 46% /newhome
umount /newhome
fsck -f /dev/mapper/newvg-newlv(/dev/newvg/newlv 와 같다)
resize2fs /dev/mapper/newvg-newlv 400M
lvreduce -L 400M /dev/mapper/newvg-newlv
그리고 나서 마운트해서 확인해보면 용량이 400M로 축소되어 있는것을 확인할수 있다.
volume group에서 pv 제거
logical volume 구성후 pv의 교체등의 이유로 기존에 설정된 pv를 제거하는 경우에는
아래 처럼 작업을 하면 된다.
작업순서 : 제거하려는 pv 의 익스텐트를 다른 pv 로 이동 --> vg 에서 pv 제거
아래의 내용은 pv sdc1 을 pv sdc3 으로 옮기는 경우이다.
[root@tsvr1 newhome]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 newvg lvm2 a-- 1020.00m 0
/dev/sdc3 newvg lvm2 a-- 1020.00m 1020.00m
[root@tsvr1 newhome]# pvmove /dev/sdc1
/dev/sdc1: Moved: 0.0%
/dev/sdc1: Moved: 78.4%
/dev/sdc1: Moved: 100.0%
[root@tsvr1 newhome]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 newvg lvm2 a-- 1020.00m 1020.00m
/dev/sdc3 newvg lvm2 a-- 1020.00m 0
[root@tsvr1 newhome]# pvs -o +pv_used ; +pv_used 옵션을 사용하면 사용량(used)도 볼수 있다.
PV VG Fmt Attr PSize PFree Used
/dev/sdc1 newvg lvm2 a-- 1020.00m 1020.00m 0
/dev/sdc3 newvg lvm2 a-- 1020.00m 0 1020.00m
[root@tsvr1 newhome]# vgreduce newvg /dev/sdc1
[root@tsvr1 newhome]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 lvm2 a-- 1.00g 1.00g ; vg 로 부터 제거됨.
/dev/sdc3 newvg lvm2 a-- 1020.00m 0
[root@tsvr1 newhome]#
댓글목록
guest1님의 댓글
guest1 작성일
삭제하는법 역순으로
umount /home
lvscan 경로확인
lvremove /dev/test_vg/test_lv
vgs
vgremove test_vg
pvs
pvremove /dev/sdc1 /dev/sdd1 /dev/sde1 pv는 (한번에 가능)