Physical Volume 이란 하나의 디스크 혹은 파티션입니다
쉽게 디스크라고 생각하면 위의 그림은 디스크 3개를 1개의 그룹으로 묶습니다
그 그룹을 Volume Group 이라고 부르구요 raid 0 을 사용해보신분이라면
조금 이해가 빠르실겁니다
그렇게 3개의 디스크를 하나의 볼륨 그룹으로 만들고 2개의 논리적 볼륨으로 나눕니다
논리적 볼륨은 쉽게 파티션이라고 생각하시면 됩니다
만약 위의 2개의 LV(로지컬 볼륨)에 / 과 /home 파티션을 잡아서 사용하게 되면
/ 와 /home 파티션에 해당되는 곳에 I/O는 3개의 디스크에서 Striping 이 되게 됩니다
그러니까 /home 에 유저가 파일을 읽거나 쓸때 => 파티션을 access 할때
3개의 디스크가 I/O를 나눠서 처리한다는 것이죠
물론 파일이 쓰일때도 3개의 디스크에 나뉘어져서(striping) 쓰이게 됩니다
access 가 많은 파일이나 특정 블록에서 Hot block 이나 contention(경합) 이
발생될 확율이 줄어들며 Disk I/O이 분산되기에 그만큼 각각 디스크 I/O를 좀더
효율적으로 사용가능합니다
또하나의 장점 위에서 설명햇드시 / 와 /home 을 만들어놓고 운용중에 / 용량은
남는 /home 의 용량이 부족할때 / 용량을 줄이고 /home을 늘릴수 있습니다
또한 하드나 파티션을 VG(볼륨그룹) 에 추가후에 / 와 /home 과 같은
LV 를 늘릴수도 있습니다
기존의 파티션에서 용량부족시 하던 해결법과 다른면을 볼수있는부분이죠
이정도만 알고 설치시 LVM설정으로 설치하는법과 설치후 운용법에 대해서
말씀드리겠습니다
스크린샷 및 디스크 숫자 부족으로 버추얼박스로 진행 하도록하며
디스크는 초기에 8기가 짜리 3개로 설치후 3기가짜리 하나를 더 달아서 한다는 시나리오로 진행하겠습니다
그다음은 디스크를 하나 장착후 VG에 추가한후 새로운 LV를 생성 하는것과
생성된 LV를 줄이고 다른쪽을 늘리는 테스트를 해보겠습니다
터미널에서
[root@fedora12 oracle]# vgdisplay -v
를하면 vg에 관한 정보를 상세히 볼수 있습니다
[root@fedora12 oracle]# lvscan
ACTIVE '/dev/vg_fedora12/LogVol01' [9.77 GB] inherit
ACTIVE '/dev/vg_fedora12/LogVol00' [3.91 GB] inherit
ACTIVE '/dev/vg_fedora12/LogVol02' [3.46 GB] inherit
lvscan 을치면 현재 LV상태를 알수있습니다
[root@fedora12 oracle]# fdisk -l
Disk /dev/sdd: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
fdisk -l 를해서보면 중간에 /dev/sdd 라고
4번째 디스크가 보이네요 파티션도 않되어있고요
파티션을 잡아보겠습니다
[root@fedora12 oracle]# fdisk /dev/sdd
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-391, default 1): (엔터)
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-391, default 391): (엔터)
Using default value 391
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
파티션이 생성 되었고 생성된 파티션 타입을 변경 하겠습니다
[root@fedora12 oracle]# fdisk /dev/sdd
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/sdd: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x11d06658
Device Boot Start End Blocks Id System
/dev/sdd1 1 391 3140676 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
8e는 Linux LVM 타입의 ID입니다
[root@fedora12 oracle]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created
pvcreate 로 PV를 생성 합니다
[root@fedora12 oracle]# vgextend vg_fedora12 /dev/sdd1
Volume group "vg_fedora12" successfully extended
vgextend 로 기존 vg 에 새로훈 pv 를 추가합니다
vgextend 기존vg명 추가할pv 입니다
LV를 만들어야 하는데요 용량지정에는 2가지가 있습니다
용량으로 지정하는것과 PE로 지정할수 있는데요
[root@fedora12 ~]# vgdisplay -v | grep "PE Size"
Finding all volume groups
Finding volume group "vg_fedora12"
PE Size 4.00 MB
를 해보면 PE Size가 4메가씩 활당 되었다는걸 알수있으며
vgdisplay -v 를 해서 보면
밑에쪽에 새로추가한 /dev/sdd1 의 정보중에
Total PE / Free PE 766 / 766
PE의 갯수를 알수있습니다
일단 용량은 지정은 PE사이즈 * 갯수 입니다
766 * 4 = 3064
[root@fedora12 oracle]# lvcreate -L 3064M vg_fedora12 -n LogVol03
로 만들수 있습니다
lvcreate -L(용량지정) 용량MB 기존VG명 -n 생성할LV이름
PE지정법은 갯수로 지정하는것입니다 사이즈는 4MB 임으로
위의 용량이 알아서 계산되서 생성됩니다
[root@fedora12 oracle]# lvcreate -l 766 vg_fedora12 -n LogVol03
-l(소문자 엘) PE갯수 입니다
[root@fedora12 oracle]# lvscan
ACTIVE '/dev/vg_fedora12/LogVol01' [9.77 GB] inherit
ACTIVE '/dev/vg_fedora12/LogVol00' [3.91 GB] inherit
ACTIVE '/dev/vg_fedora12/LogVol02' [3.46 GB] inherit
ACTIVE '/dev/vg_fedora12/LogVol03' [2.99 GB] inherit
LogVol03 에 3기가 용량이 LV로 추가 된것을 확인할수 있습니다
이제 원하는 파일시스템으로 만든후 마운팅할 디렉토리
생성한다음 마운트 하겠습니다
[root@fedora12 oracle]# mkfs.ext4 /dev/vg_fedora12/LogVol03
[root@fedora12 oracle]# mkdir /data2
[root@fedora12 oracle]# mount /dev/vg_fedora12/LogVol03 /data2
다음부팅때도 마운팅되도록 fstab에 기록하겠습니다
현재 시스템에서 마운트 된 정보는 /etc 아래에 있는 mtab에 기록되어 있습니다
cat /etc/mtab | grep data2 >> /etc/fstab
위와같이 리다이렉션 을 이용해서 추가해도 되고
mtab의 마운트 된 정보를 그대로 복사해서 fstab에 추가 해도 됩니다
[root@fedora12 ~]# df -h
/dev/mapper/vg_fedora12-LogVol03
2.0G 69M 2.99G 4% /data2
df -h 로 확인해보면 /data2 에 마운트가 되어있는걸 확인할수 있습니다
이제는 /data2 에 해당하는 LV를 용량을 줄이고
/home을 늘리도록 하겠습니다
[root@fedora12 oracle]# umount /data2
[root@fedora12 oracle]# e2fsck -f /dev/vg_fedora12/LogVol03
[root@fedora12 ~]# lvreduce -L 1200M /dev/vg_fedora12/LogVol03
WARNING: Reducing active logical volume to 1.17 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol03? [y/n]: y
Reducing logical volume LogVol03 to 1.17 GB
Logical volume LogVol03 successfully resized
[root@fedora12 ~]# resize2fs /dev/vg_fedora12/LogVol03
위의 과정은 unmount -> e2fsck -> lvreduce 로 줄여주고 ->
resize2fs 로 확정짓는 작업입니다
LogVol03 을 1200MB 로 줄인다는 뜻입니다 GB상으로는 1.17로
줄어들었네요
줄이고 남은 1.81G 를 /home에 붙이겠습니다
[root@fedora12 oracle]# umount /home
[root@fedora12 ~]# lvextend -L +1.81G /dev/vg_fedora12/LogVol00
[1.81 을 증가]
[root@fedora12 ~]# e2fsck -f /dev/vg_fedora12/LogVol00
lvscan 으로 확인해보면 /LogVol03 은 줄어들고 /LogVol00 은
늘어났음을 알수있습니다
[root@fedora12 ~]# lvscan
ACTIVE '/dev/vg_fedora12/LogVol01' [9.77 GB] inherit
ACTIVE '/dev/vg_fedora12/LogVol00' [5.72 GB] inherit
ACTIVE '/dev/vg_fedora12/LogVol02' [3.46 GB] inherit
ACTIVE '/dev/vg_fedora12/LogVol03' [1.17 GB] inherit
unmount 한 2개의 LV를 마운트하고 df -h 를 하면
[root@fedora12 ~]# mount /dev/vg_fedora12/LogVol00 /home/
[root@fedora12 ~]# mount /dev/vg_fedora12/LogVol03 /data2/
[root@fedora12 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 5.8G 3.0G 2.6G 54% /
tmpfs 293M 0 293M 0% /dev/shm
/dev/mapper/vg_fedora12-LogVol01
9.7G 150M 9.0G 2% /data
/dev/mapper/vg_fedora12-LogVol02
3.5G 338M 2.9G 11% /var
/dev/mapper/vg_fedora12-LogVol00
5.7G 74M 5.3G 2% /home
/dev/mapper/vg_fedora12-LogVol03
1.2G 34M 1.1G 4% /data2
/home 은 늘어나고 /data2는 줄어든것을 확인할수 있습니다
이상으로 포스팅을 맞치며
시나리오상 나오지않았던 VG 조정부분은 따로 올려드리겠습니다
# vgcreate -s 16m new_vg /dev/hda /dev/hdb
위의 명령은 두 개의 스크를 합쳐서 new_vg라는 VG를 만든다는 것이다.
옵션 ‘-s 16m’은 PE(Physical Extent)의 크기를 16MB로 정하는 것인데,
만약 옵션 ‘-s’가 생략되면 기본적으로 PE의 크기는 4MB가 된다. VG가
만들어지면 /dev/VolumeGroupName라는 형식으로 디렉토리가 생기게 된다.
위의 예에서는 /dev/new_vg 가 될 것이다.
VG(Volume Group)명 변경 또는 삭제방법
1. 변경방법
# vgrename new_vg vg00
2. 삭제방법
VG에 LV가 남아있지 않고 비활성화되어 있으면 vgremove로 지울 수 있다.
비활성화시키는 방법은, # vgchange -a n vg00 이고, 다음의 명령으로 지
워진다.
# vgremove vg00
VG(Volume Group) 확장방법
VG의 확장과 축소는 PV의 추가, 제거로 이루어진다.
VG에 PV를 추가하는 명령은 vgextend인데, vg00이라는 VG에 PV인
/dev/hda2를 추가하려면 다음과 같이 실행해야 한다.
# vgextend vg00 /dev/hda2
VG(Volume Group) 축소방법
PV를 VG에서 제거하는 명령은 vgreduce이다. 그러나 PV에 PE가 할당되어
있으면 제거되지 않는다. 그 할당된 PE를 다른 PV로 옮겨야 제거될 것이다.
빈 PV인 /dev/hda2를 vg00에서 제거하려면,
# vgreduce vg00 /dev/hda2
LV 변경방법
# lvrename /dev/vg00/data /dev/vg00/db
LV 삭제방법
댓글을 달아 주세요