Linux Volume 구조
LVM
- LVM(Logical Volume Manager)
- 논리적인 공간을 생성, 관리해주는 프로그램
- 저장 장치를 파티션(하나의 하드디스크에서 나누어진 구역)이 아닌 논리 볼륨으로 할당
- 관리 쉽고 확장성이 뛰어남
- 파티션을 원하는 대로 추가하거나 제거하고 크기 조절할 수 있도록 하는 방법
LVM의 사용
- 여러개의 디스크 공간을 합쳐서 하나의 디스크로 사용하기 위해 사용
- 사용하기 애매한 공간의 디스크 파티션들을 활용하기 위해 사용
- 기존에 사용 중인 디스크 공간을 확장할 수 있게 사용
PV(Physical Volume)
- 각각의 파티션을 LVM에서 사용하기 위해 나눈 물리적 공간
- 디스크 공간이 PE라는 단위로 이루어져있음
- 실제로 나눈 파티션
PE(Physical Extent)
- 물리적 저장공간인 PV의 최소 단위
- 기본 단위는 4MB
- 실제 데이터가 저장되는 공간
VG(Volume Group)
- PV들을 하나의 그룹으로 합친 것
- PV로 되어 있는 파티션을 그룹으로 설정
LV(Logical Volume)
- mount point로 사용할 실질적인 파티션
- 크기 확장 및 축소 가능
- LVM에서 사용하기 위한 논리적인 공간
LE(Logical Extent)
- 논리적 공간인 LV의 최소 단위
LVM 설정
LVM 명령어
- 명령어 기본 베이스
1 2 3 4 5 6 7
create 생성 remove 삭제 scan 검색 display 확인 extend 확장 reduce 축소 change 속성 변경
- 물리 볼륨 관련 명령어
1 2 3
pvcreate {DEVICE_NAME} # fdisk로 만든 파티션을 물리 볼륨(PV)로 생성 pvscan # 물리 볼륨에 해당하는 시스템에 있는 모든 lvm 블록 장치 스캔 pvdisplay # 각각의 물리 볼륨에 대해 상세 출력 가능 (크기, extend, volume group)
- 볼륨 그룹 관련 명령어
1 2 3 4 5 6 7
vgcreate {VOLUME_NAME} {DEVICE_NAME} # 볼륨 그룹 설정 vgscan # 디스크에 있는 볼륨 그룹 (VG)을 검색하여 출력 vgdisplay {-v} {DEVICE_NAME} # 볼륨 그룹의 속성과 정보를 보여주는 명령어 vgreduce {VOLUME_NAME} {DELETE_DEVICE_NAME} # 볼륨 그룹에서 물리 볼륨 (장치) 삭제 vgextend {VOLUME_NAME} {ADD_DEVICE_NAME} # 볼륨 그룹에 추가로 물리 볼륨 추가 vgchange { -a, -l} {VOLUME_GROUP} # 볼륨 그룹 속성 변경 (볼륨 그룹 사용 여부, 최대 LV갯수) vgremove {VOLUME_GROUP} # 볼륨 그룹을 제거
vgdisplay -v
- logical volume과 physical volume도 같이 자세히 보여주는 옵션
vgchange -a {Y/N}
- 볼륨 그룹의 사용 여부 지정
vgchange -l {COUNT}
- 해당 볼륨 그룹에 생성할 수 있는 최대 논리 볼륨 수 지정
- 논리 볼륨 관련 명령어
1 2 3 4 5 6 7
lvcreate {-L,-l,-n} {VOLUME_GROUP} # 볼륨 그룹 안에 논리 볼륨(LV) 생성 lvscan {-v} # 디스크에 있는 논리 볼륨 스캔 lvdisplay {-v} {LV_PATH} # 논리볼륨의 정보 출력 lvreduce {-L,-l} {LV_PATH} # 논리 볼륨 용량 줄이기 lvextend {-L,-l} {LV_PATH} # 논리 볼륨 용량 확장 lvresize {-L,-l} {LV_PATH} # 논리 볼륨 용량 조정 lvremove {LV_PATH} # 논리 볼륨 제거
lvcreate -L {size}
- LV의 사이즈 지정 (kb, mb, gb, tb)
lvcreate -l {PE COUNT}
- LV의 사이즈 지정
- pe 개수로 용량 지정 (1MB = 4MB)
{ % }FREE
- 볼륨 그룹에 있는 나머지 여유 공간 퍼센트 지정
lvcreate -n {VOLUME_NAME}
- LV의 이름 지정
lvscan -v
- 정보 자세히 출력
lvdisplay -v
- 정보 자세히 출력
lvreduce -L {-SIZE}
- 지정한 사이즈만큼 용량 줄이기 (default : MB)
lvreduce -l {-SIZE}
- 지정한 pe수 만큼 용량 줄이기
lvextend -L {+SIZE}
- 지정한 사이즈만큼 용량 확장 (default : MB)
lvextend -l {+SIZE}
- 지정한 pe수 만큼 용량 확장
lvresize -L {+/-SIZE}
- 지정한 사이즈만큼 용량 확장/줄이기 (default : MB)
lvresize -l {+/-SIZE}
- 지정한 pe수 만큼 용량 확장/줄이기
LVM 설정
- Virtual Machine Settings → Hardware → HDD 추가
- 추가한 하드 디스크 재부팅 없이 인식
1 2
find /sys -name scan # 가장 마지막 host 내용 드래그 echo "- - -" >/sys/devices/~~ # 마지막 host 내용 붙이기
- 파티션 생성 및 속성 변환
1 2 3 4 5 6 7 8 9 10 11 12
fdisk -l # 추가한 하드 디스크 list 확인 ex) /dev/sdc fdisk /dev/sdc # 추가한 /dev/sdc를 fdisk 명령어를 이용하여 실행 n # 새로운 파티션 추가 p # primary 파티션 생성 # 파티션 넘버 default # Enter # Enter t # 파티션 속성(시스템 ID) 변경 L # 시스템 ID list 확인 8e # LVM 속성으로 변경 w # 파티션 정보 저장 fdisk -l # 속성 변경한 하드 디스크 list 확인
- 물리적 볼륨 생성
1
pvcreate /dev/sdc1 # 물리적 볼륨 생성
- 볼륨 그룹 설정
1 2
vgcreate lvmtest /dev/sdc1 # 생성된 PV를 특정 볼륨 그룹에 추가 vgdisplay -v lvmtest # lvmtest 볼륨 그룹의 속성, 정보 자세히 출력
- 논리 볼륨 생성
1 2 3
lvcreate -L 1000M -n lovolume lvmtest # lvmtest 볼륨 그룹 안에 1000M 크기의 lovolume 논리 볼륨 생성 lvscan # 디스크에 있는 논리 볼륨 스캔 및 경로 확인 lvdisplay -v /dev/lvmtest/lovolume # 논리 볼륨의 정보 자세히 출력
- 정보 확인
1 2 3 4
vgdisplay -v lvmtest # lvmtest 볼륨 그룹의 속성,정보 자세히 출력 # vg 속성 정보 확인 # lv 속성 정보 (경로, lv 속한 vg) 확인 # # pv 속성 정보 확인
- 포맷 후 마운트
1 2 3 4 5
mkfs -t ext4 /dev/lvmtest/lovolume # /dev/sdc1 파티션을 포맷 mount -t ext4 /dev/lvmtest/lovolume /mount # ext4 파일시스템 형식으로 /dev/lvmtest/lovolume을 /mount 디렉토리에 mount df -h # mount 정보 출력 blkid # 영구 mount하기 위해 디바이스 UUID 검색 vi /etc/fstab # 영구 mount하기 위한 file 수정
1 2 3
# /etc/fstab UUID=fa29083a-72e5-4e3d-a9c0-1b3c616e56c1 /mount ext4 defaults 0 0 # UUID=파일시스템 DEVICE_NAME mout point filesystem type mount option 로그기록여부 오류체크