- LVM 이란?
물리적인 디스크를 논리적 볼륨그룹으로 구성해서 이 논리적인 볼륨그룹 내에 사용자가 원하는 크기 만큼의 논리볼륨을 할당하여 사용하는 방법으로, 여러 개의 디스크를 하나의 논리적인 볼륨그룹(VG)으로 구성할 수 있으며, 각 논리볼륨(LV)는 독립적이므로, 하나의 디스크에도 여러 가지의 파일 시스템을 설치할 수 있다. 또한 디스크의 용량증설이 요구 될 경우에도 볼륨그룹에 물리볼륨(PV)만 추가하여 용량증설이 가능하고, 데이터량이 감소하여 더 이상 많은 양의 저장공간이 필요 없는 경우, 볼륨그룹에 속한 물리볼륨 개수를 축소하여 용량 감소가 가능하다.
- LVM 구성요소
- 작동 방식
- Mirroring
- LVM 명령어
(B -> KB -> MB -> GB -> TB -> PB -> EB -> ZB -> YB)
-작업 순서
1) System Partition ID 변경(fdisk CMD)
2) PV 생성(pvcreate CMD)
3) VG 생성(vgcreate CMD)
4) LV 생성(lvcreate CMD)
5) F/S 생성(mkfs CMD)
6) 마운트(mount CMD, /etc/fstab)
1) System Partition ID 변경
# fdsik /dev/sdc
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 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): L 0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris 1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c7 Syrinx 5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data 6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility 8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt 9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b 11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor 12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor 14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS secondary 16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT 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 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 |
2) PV 생성
[명령어 형식]
- PV 생성
# pvcreate /dev/sda1
# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
# pvcreate /dev/sd[abc]1
# pvcreate /dev/sda /dev/sdb /dev/sdc
- PV 정보 확인
# pvs
# pvscan
# pvdisplay (# pvdisplay /dev/sdc1)
# lvmdiskscan
3) VG 생성
[명령어 형식]
- VG 생성
# vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1
# vgcreate vg1 /dev/sd[cde]1
- VG 이름변경
# vgrename /dev/vg1 /dev/vg1_backup
# vgrename vg1 vg1_backup
-VG 정보 확인
# vgs
# vgscan
# vgdisplay (# vgdisplay vg1)
4) LV 생성
[명령어 형식]
-LV 생성
# lvcreate -L 10G vg1 /* LV 이름 자동 생성 : lvol#(용량 10G) */
# lvcreate -L 1500M -n lv1 vg1 /* -L 숫자 용량 -n (name) 이름 지정 */
# lvcreate -L 1500 -n lv1 vg1 /* 용량 단위가 없으면 MB */
# lvcreate -l 60%VG -n lv1 vg1 /* -l 스트링입력 가능 */
# lvcreate -l 100%FREE -n lv1 vg1 /* 100%FREE 남은 공간 다 */
-LV 이름 변경
# lvrename /dev/vg1/lv1 /dev/vg1/lv2
# lvrename vg1 lv1 lv2 /* vg1(lv1 -> lv2) */ vg 다르면 같은 이름 존재 가능
-LV 정보 확인
# lvs
# lvscan
# lvdisplay
5) F/S 생성
# mkfs.ext3 /dev/vg1/lv1
6) 마운트 작업
# mount /dev/vg1/lv1 /lv1
-물리적인 파티션 작업과 LVM 작업 비교
- LVM 삭제
삭제는 생성의 역순으로 진행한다.
[작업순서]
1) 마운트 풀기 (umount CMD, /etc/fstab)
2) LV 삭제(lvremove CMD)
3) VG 삭제(vgremove CMD)
4) PV 생성(pvremove CMD)
1) 마운트 풀기
# umount /lv1
2) LV 삭제
# lvremove /dev/vg1/lv1
3) VG 삭제
# vgremove /dev/vg1
4) PV 삭제
# pvremove /dev/sda1
- LVM 용량 늘리기 / 줄이기
-용량 늘리기
용량을 늘릴땐 사용중인 lv를 umount 하지 않고도 이어 붙힐 수 있다.
[작업순서]
1) VG안에 용량이 남았는지 확인후 없다면 새로운 디스크를 VG안에 추가시킨다.
2) VG안의 남은 용량을 LV로 추가시킨다.
새로운 디스크 : /dev/sdf1
# fdisk /dev/sdf1 /* system partition ID 8e */
# fdisk -l | grep LVM /* 확인 */
# pvcreate /dev/sdf1 /* PV로 설정 */
# vgextend vg1 /dev/sdf1 /* vg1으로 추가 */
# pvs /* 확인 */
# lvextend -l +100%FREE /dev/vg1/lv1 /* 남은용량 모두 lv1 으로 추가 */
# df -h /lv1
# resize2fs /dev/vg1/lv1 /* 용량을 추가했음에도 df -h 명령어에 전과 같이 나오면 파일시스템을 다시 확인 */
# df -h /lv1 /* 확인 */
-용량 줄이기
(주의) 용량을 줄이기 위해서는 백업 과정을 거친다.
용량을 줄일때는 다른 사용자가 lv를 사용하고 있으면 안되기 때문에 umount 작업이 필요하다.
그리고 사용중인 공간 이상으로 줄이면 문제가 생기기 때문에 파일시스템 점검과 파일 시스템 용량을 줄이고 나서
lv의 용량을 줄여야한다.
[작업순서] 반드시 준수
1) 파일 시스템 언마운트 (umount)
# umount /lv1
2) 파일 시스템 점검 (fsck -f , fsck.ext3 -f , e2fsck -f)
# e2fsck -f /dev/vg1/lv1 /* -f 강제로 실행한다. 이상이 없다면 실행하지 않아 강제로 실행시켜 점검한다.*/
3) 파일 시스템 용량 줄이기
# resize2fs -p /dev/vg1/lv1 700M
4) LV 용량 줄이기
# lvreduce -L 700M /dev/vg1/lv1 /* 파일 시스템으로 줄인 용량만큼만 줄여야한다. */
# cp /etc/passwd /lv1/file1
[참고]데이터 백업
# mkdir -p /backup
# cd /lv1
# tar cvzf /backup/lv1.tar.gz .
# cd
# umount /lv1
[참고] fuser /* 사용중인 사람이 있다면 알림후 kill */
# fsck.ext3 -f /dev/vg1/lv1
# resize2fs -p /dev/vg1/lv1 2G
# lvreduce -L 2G /dev/vg1/lv1
# lvs
# mount /lv1 ; cd /lv1
# cat file1 /* 파일이 정상적인지 확인 */
- VG 안의 PV 를 새로운 PV로 교체
성능이 좋은 디스크로 교체하는 경우 또는 용량이 큰 디스크로 교체하는 경우에 기존의 PV에 저장된 내용을 새로운 PV로 옮겨야한다.
기존 디스크 : /dev/sdf 디스크가 속해있는 VG : vg1
새로운 디스크 : /dev/sdg
# fdisk /dev/sdg /* system partition id 8e 로 설정 */
# fdisk -l | grep lvm
# pvcreate /dev/sdg1 /* PV 설정 */
# pvs /* 확인 */
# vgextend vg1 /dev/sdg1 /* vg1 에 장치 추가 */
# pvmove /dev/sdf1 /dev/sdg1 /* sdf1 -> sdg1 */
# pvs /* 확인 */
- LV - Striping 구성
PV VG Fmt Attr PSize PFree /dev/sdc1 vg1 lvm2 a- 1016.00M 504.00M /dev/sdd1 vg1 lvm2 a- 1016.00M 504.00M /dev/sde1 vg1 lvm2 a- 1016.00M 504.00M |
- LV Mirroring 구성
PV VG Fmt Attr PSize PFree /dev/sdc1 vg1 lvm2 a- 1016.00M 1016.00M /dev/sdd1 vg1 lvm2 a- 1016.00M 1016.00M /dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M |
PV VG Fmt Attr PSize PFree /dev/sdc1 vg1 lvm2 a- 1016.00M 916.00M /dev/sdd1 vg1 lvm2 a- 1016.00M 916.00M /dev/sde1 vg1 lvm2 a- 1016.00M 1016.00M |
V VG Fmt Attr PSize PFree /dev/sdc1 vg1 lvm2 a- 1016.00M 816.00M /dev/sdd1 vg1 lvm2 a- 1016.00M 816.00M /dev/sde1 vg1 lvm2 a- 1016.00M 1012.00M |
위에선 1개의 copy를 만들어 놨으므로 100M가 1번더, 총 200M가 할당된다.
'Linux > Linux Server' 카테고리의 다른 글
SWAP (0) | 2017.08.31 |
---|---|
RAID (0) | 2017.08.30 |
마운트 ( mount ) (0) | 2017.08.28 |
파일 시스템( Filesystem) (0) | 2017.08.28 |
장치 인식과 파티션 작업 (0) | 2017.08.27 |