I. 시스템 사양
- PC 의 vmware 상에서 하드를 2개 추가하여 할 예정
- OS : redhat 9 2.4.20-31.9(yum으로 커널 컴파일 한 버전)
- vmware에서 구축
- HDD 3개 : 이중 sad1(2G) 과 sdc1(2G) 에 구축예정
- CPU : Pentium 4 2.8Ghz
- memory : 1G(physical) + 1G(swap)
II . 구축하기
1. 먼저 디스크에 리눅스 LVM 파일 시스템을 만들어준다.
[root@angka root]# 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-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e <-- 반드시 LVM으로 포맷해준다.
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
/dev/sdc 도 똑같은 방법으로 LVM 으로 만들어준다.
fdisk -l 명령으로 sdb 와 sdc가 LVM으로 만들어 졌는지 확인한다.
[root@angka root]# fdisk -l
Disk /dev/sda: 11.8 GB, 11811160064 bytes
255 heads, 63 sectors/track, 1435 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 510 4096543+ 83 Linux
/dev/sda2 511 637 1020127+ 82 Linux swap
/dev/sda3 638 1435 6409935 83 Linux
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 8e Linux LVM <-- 파일 시스템 파입이 LVM이어야한다.
Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 261 2096451 8e Linux LVM
2. pvcreate 명령으로 물리적인 볼륨을 생성한다.
[root@angka root]# pvcreate /dev/sdb1
pvcreate -- physical volume "/dev/sdb1" successfully created
[root@angka root]# pvcreate /dev/sdc1
pvcreate -- physical volume "/dev/sdc1" successfully created
[root@angka root]#
3. sdb1 과 sdc1을 하나의 물리적 볼륨으로 묶어준다. 볼륨 그룹 이름은 angkaVG 로 한다.
[root@angka root]# vgcreate angkaVG /dev/sdb1 /dev/sdc1
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "angkaVG"
vgcreate -- volume group "angkaVG" successfully created and activated
[root@angka root]#
4. vgdisplay 명령으로 볼륨그룹이 잘 생성되었는지 확인한다.
[root@angka root]# vgdisplay
--- Volume group ---
VG Name angkaVG
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 3.98 GB <-- 2G 2개를 묶었으므로 4G가 나온다.
PE Size 4 MB
Total PE 1020
Alloc PE / Size 0 / 0
Free PE / Size 1020 / 3.98 GB
VG UUID HJNDS6-X7U4-BVlx-pPiG-uAkD-2Fup-cMqeqP
[root@angka root]#
여기서 주의할 것은 angkaVG는 단지 볼륨 그룹이지 논리적인 슬라이스가 아니다. angkaVG 자체를 마운트 하려고 하면 오류가 떨어진다. 이것은 마치 하드디스크를 추가하면 /dev/sde 와 같이 물리적인 디스크로 시스템에서 인식할 뿐이다. 그러므로 angkaVG를 다시 lvcreate 이용하여(하드 디스크일 경우는 fdisk이지만) 논리적으로 시스템이 인식하도록 만들어 주어야 한다.
5. angkaVG를 lvcreate를 이용 angkaVG1 4G로 만든다.
[root@angka root]# lvcreate -L 3.98G -n angkaVG1 angkaVG
lvcreate -- rounding size up to physical extent boundary
lvcreate -- doing automatic backup of "angkaVG"
lvcreate -- logical volume "/dev/angkaVG/angkaVG1" successfully created
[root@angka root]#
자 이제 우리가 쓸 수 있는 논리적인 디스크의 이름은 /dev/angkaVG/angkaVG1 이다. 이것의 크기는 4G 이며 이것은 sdb1(2G) + sdc1(2G)를 합쳐놓은 크기이다.
6. angkaVG1을 파일 시스템을 만들고 fsck 까지 한다음에 마운트한다.
[root@angka /]# mkfs.ext3 /dev/angkaVG/angkaVG1
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
522240 inodes, 1043456 blocks
52172 blocks (5.00%) reserved for the super user
First data block=0
32 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@angka /]# fsck -y /dev/angkaVG/angkaVG1
fsck 1.32 (09-Nov-2002)
e2fsck 1.32 (09-Nov-2002)
/dev/angkaVG/angkaVG1: clean, 11/522240 files, 24607/1043456 blocks
[root@angka /]# mount /dev/angkaVG/angkaVG1 /test
[root@angka /]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 4032092 3364488 462780 88% /
/dev/sda3 6309320 3779156 2209668 64% /oracle
none 79144 0 79144 0% /dev/shm
/dev/angkaVG/angkaVG1
4108224 32828 3866708 1% /test
[root@angka /]#
7. 부팅시에도 올라오도록 /etc/fstab 에 넣어준다.
LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
LABEL=/oracle /oracle ext3 defaults 1 2
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/sda2 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
/dev/angkaVG/angkaVG1 /test ext3 defaults 1 3

댓글목록
슈퍼아이피님의 댓글
lvm 만드는 걸 정리 하자면
1) PV 생성 작업을 통해 디스크를 만들 "재료" 준비를 한다.
2) VG 생성 작업을 통해 "디스크(가상의 또는 논리적인)"를 만든다. LVM에서는 VG가 곧 Disk다.
3) LV 생성을 통해 파티션을 만든다. LVM상에서의 fdisk 작업이라고 보면된다.
4) 만든어진 LV에 filesystem을 생성 하고(포맷), 사용 한다.
확장에 관련된 절차는
1) PV준비
2) PV를 해당 VG에 추가(디스크 재료를 디스크에 덧 붙인다고 보시면 됩니다.-만약 VG를 검색해 보시고 남은 공간이 있다면 그 남은 용량 만큼 LV 사이즈를 늘릴수 있습니다.-위 화면을 보면 272메가 정도가 남아 있네요.)
3) lvextend로 LV 사이즈 확장
4) Filesystem 확장
이상과 같습니다.
각종 lvm 검색
=============
lvmdiskscan: lvm관련 disk 검색
vgscan -v: VolumeGroup 검색
vgdisplay: VolumeGriup 조회
pvdisplay: PV 조회
lvscan: LV 검색
lvdisplay: LV 조회
VG 확장, 분할
============
VG에 PV를 추가 할 경우
vgextend new_vg /dev/sda1 # new_vg VG에 sda1 파티션을 추가.
VG에서 PV를 분리 할 경우
vgreduce new_vg /dev/sda1 # new_vg VG에서 sda1 파티션을 분리.
LV 확장,축소(umount 후에 처리 해야 한다.)
===========
lvextend -L+1G /dev/new_vg/data # data LV에 1G 확장
lvextend -L3G /dev/new_vg/data # data LV의 총 용량을 3G로 만든다(확장).
lvreduce -L-1G /dev/new_vg/data # data LV에 1G를 축소(삭제)한다.
lvreduce -L1G /dev/new_vg/data # data LV의 총 용량을 1G로 만든다(축소).
Filesystem 확장(lvextend 작업 이후)
=================================
1. umount
2. e2fsck -f /dev/VG/data
3. resize2fs /dev/VG/data
4. mount