Home Linux Volume
Post
Cancel

Linux Volume

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 설정

  1. Virtual Machine Settings → Hardware → HDD 추가
  2. 추가한 하드 디스크 재부팅 없이 인식
    1
    2
    
      find /sys -name scan  # 가장 마지막 host 내용 드래그 
      echo "- - -" >/sys/devices/~~  # 마지막 host 내용 붙이기
    
  3. 파티션 생성 및 속성 변환
    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 확인
    
  4. 물리적 볼륨 생성
    1
    
      pvcreate /dev/sdc1  # 물리적 볼륨 생성
    
  5. 볼륨 그룹 설정
    1
    2
    
      vgcreate lvmtest /dev/sdc1  # 생성된 PV를 특정 볼륨 그룹에 추가
      vgdisplay -v lvmtest  # lvmtest 볼륨 그룹의 속성, 정보 자세히 출력
    
  6. 논리 볼륨 생성
    1
    2
    3
    
      lvcreate -L 1000M -n lovolume lvmtest  # lvmtest 볼륨 그룹 안에 1000M 크기의 lovolume 논리 볼륨 생성
      lvscan  # 디스크에 있는 논리 볼륨 스캔 및 경로 확인
      lvdisplay -v /dev/lvmtest/lovolume  # 논리 볼륨의 정보 자세히 출력 
    
  7. 정보 확인
    1
    2
    3
    4
    
      vgdisplay -v lvmtest  # lvmtest 볼륨 그룹의 속성,정보 자세히 출력
      # vg 속성 정보 확인
      # lv 속성 정보 (경로, lv 속한 vg) 확인
      # # pv 속성 정보 확인
    
  8. 포맷 후 마운트
    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 로그기록여부 오류체크