Linux LVM_Logical Volume Manager

  • 리눅스에서 디스크를 효율적으로 관리하고 사용하는 방법 중 하나
  • 물리적인 디스크를 논리적 볼륨그룹(VG)으로 구성해서, 이 논리적인 볼륨그룹 내에 사용자가 원하는 크기만큼의, 유동적으로! 논리볼륨(LV)을 할당하여 사용하는 방법
    • 여러개의 디스크를 하나의 논리적인 볼륨그룹(VG)로 구성할 수 있고 각 논리볼륨(LV)은 독립적이기에 하나의 디스크에도 여러가지 파일 시스템 설치 가능
    • 디스크 용량증설이 요구 될 경우에도 볼륨그룹에 물리볼륨(PV)만 추가하여 용량증설 가능
    • 볼륨은 기본적으로 단일 파티션에 상주하게 되지만 다수의 파티션을 하나의 볼륨으로도 관리할 수 있음


LVM 구성요소 전에 파티션, 볼륨 파악

  1. 파티션 Partition
    • 물리적인 디스크는 파티션이라는 논리적인 크기로 분할 or 통합해서 사용
      • 하나의 디스크를 여러 개로 분할하거나 여러 개의 디스크를 하나의 파티션으로 통합하기도 함
    • 파티션은 고정적이고 물리적인 개념이 강하며 한 번 크기를 설정하면 변경하거나 추가하기 힘들고 OS는 각 파티션을 별도의 디스크처럼 인식
  2. 볼륨 Volume
    • 파일 시스템으로 포맷된 디스크 상의 저장 영역
    • 디스크의 단일 파티션에 상주, 파티션보다 논리적이고 유동적인 개념
    • 하나의 디스크를 여러 개의 파티션으로 나누어 사용하는데 이때 볼륨은 파티션마다 하나씩 존재하거나, 여러 파티션에 하나만 존재할 수도 있음


LVM 구성요소

image

  1. PV_Physical Volume
    • 물리적 볼륨
    • 물리적 하드디스크에 LVM을 사용할 수 있도록 LVM 데이터 구조를 생성한 것
      • 디스크에 PV가 생성되면 LVM은 디스크를 하나의 LV로 간주, VG에 포함시킬 수 있게됨
  2. VG_Volume Group
    • 볼륨 그룹
    • VG는 하나 또는 그 이상의 PV를 포함
    • LV를 생성할 수 있는 VG의 집합
    • 물리적인 일정한 크기의 PE로 구성된 PV들이 모여 VG가 만들어짐
  3. LV_Logical Volume
    • 논리적 볼륨
    • 하나 또는 그 이상의 PV로 구성되어있는 VG 공간을 전체 or 분할하여 일반 파일시스템, swap or dump area, raw disk로 사용할 수 있도록 논리적으로 할당한 공간
      • 운영 중 공간이 부족할 경우 VG에 속해 있는 또 다른 PV를 사용하여 확장 가능, 필요하다면 크기를 변경하거나 다른 디스크로 데이터 옮기기 가능
    • 논리적인 파티션으로 볼 수 있으며 LV는 다시 LE로 나뉨
  4. PE_Physical Extent
    • PV가 갖는 일정한 블록
    • 디스크에 PV 생성 시, LVM은 주소를 지정할 수 있는 PE라는 단위로 물리 디스크를 나눔
      • extent는 주소 0번부터 시작하여 1씩 증가, 순차적으로 디스크에 할당되고, PE의 크기는 VG를 만들 때 구성할 수 있음
      • 각 PE의 default 크기는 4MB, 필요에 따라 VG 생성 시 1MB에서 256MB 사이의 값 지정 가능
    • PE와 LE는 1:1로 대응
  5. LE_Logical Extent
    • LV가 갖는 일정한 블록
    • 디스크에 PV 생성 후, 생성된 PV를 이용해 VG 구성, 이 VG에 LV 생성!
    • LV의 기본 할당 단위가 LE
      • LE는 PV 생성 시 나눠진 PE영역과 Mapping
        • PE의 크기가 4MB면 LE의 크기도 4MB
          _____

LVM 작업순서

  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)

VirtualBox_Rocky Linux 9.0



1. System Partition ID 변경 (fdisk CMD)

  • 디스크 장착 및 확인 용량이 1G인 디스크 4개 추가 후 디스크 확인
    ls -l /dev/sd?
    image

    /dev/sdb ~ sde 까지 새로 장착된 디스크

  • 디스크 파티션 설정 하나의 디스크는 하나의 파티션으로 설정, LVM 설정을 하기 위해서는 System Partition ID는 8e로 설정
    fdisk /dev/sdb
    image

  • fdisk 진입 후 m 입력 시 fdisk 옵션 목록 나열됨 image

  • fdisk 내에서 n은 add a partition, 새로운 파티션 추가
  • n 옵션 입력 후 select에서 p (partition type을 주 파티션인 primary로 설정,
                                   e는 extended, 확장 파티션),
    partition number에서 1 (엔터 입력 시 기본 값인 1로 설정),
    First sector에서 엔터 (엔터 입력 시 기본 값으로 설정, 시작 섹터 값은 2048),
    Last sector에서 엔터 (엔터 입력 시 기본 값으로 설정, 마지막 섹터 값은 2097151)
  • 파티션 설정 후 p 옵션 입력해서 현재 설정된 파티션 정보 확인 image


  • fdisk 내에서 t 옵션 입력으로 partition type 설정

    image

    • t 옵션 내부에서 L 옵션 입력 시 전체 partition type과 연결된 Hex code 목록 출력 image
  • LVM 설정을 위해서 partition type을 8e로 설정

    image

  • 이후 p 옵션으로 partition type 8e로 변경 확인 후 w 옵션으로 파티션 수정 정보 저장
    (이미 저장된 상태여서 아래와 같이 뜬당,,~! 수정하고 w 바로 누르면
    Command (m for help): w
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    Syncing disks
    이렇게 뜰 것이얌)

    image

  • 장착 디스크 전부 파티션 설정하고 디스크 확인하면 앞서 처음에 장착한 디스크 명과
    숫자가 붙어있는 디스크 명이 동시에 존재해야 파티션 설정이 맞게 된 것

    image




2. PV 생성 (pvcreate CMD)

생성한 디스크를 LVM으로 사용하기 위한 선처리 작업으로 PV 생성

  • PV 생성 및 삭제 관련한 커맨드를 사용하기 위해선 lvm2 패키지 설치 필요 image

  • pvcreate /dev/sdb1 입력으로 pv 생성
    image

  • pv 생성 후 pv 정보 확인
    pvs
    pvscan
    pvdisplay
    lvmdiskscan
    image image

PV 생성 PV 정보 확인
pvcreate pvs pvscan pvdisplay lvmdiskscan


3. VG 생성 (vgcreate CMD)

PV 생성 후 각각의 PV를 하나의 그룹으로 생성

  • vgcreate primary_vg /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 명령으로 VG 생성

    image

  • 생성 후 VG 정보 확인
    vgs
    vgscan
    vgdisplay
    image image image

VG 생성 VG 정보 확인
vgcreate vgs vgscan vgdisplay


4. LV 생성 (lvcreate CMD)

LV는 LVM에서 생성하는 파티션, 단일 파티션 or 다중 파티션으로 나눌 수 있는데 이때 LV를 생성하는 방법은 용량 단위 or PE 수를 통해 생성 가능


  • lvcreate -L 1G n lv1 primary_vg 명령으로 lv 생성 image
  • LV 생성 후 LV 정보 확인
    lvs
    lvscan
    lvdisplay image image image
LV 생성 LV 정보 확인
lvcreate lvs lvscan lvdisplay


5. F/S 생성 (mkfs CMD)

LV에 대해 ext4 파일 시스템을 갖도록 mkfs.ext4로 포맷

  • mkfs.ext4 /dev/primary_vg/lv1으로 파일시스템 포맷 진행 image


6. 마운트 (mount CMD, /etc/fstab)

LV 마운트

  • 마운트는 디렉터리를 하나 생성 후 진행 ! (나는 그냥,,, user1 홈 디렉터리에 만들랜당)

  • mkdir lvm_dic 디렉터리 생성

    image

  • mount /dev/primary_vg/lv1 /home/user1/lvm_dic로 디렉터리에 LV를 마운트 image
  • df -h로 마운트 된 디스크 사용량 확인 image

Leave a comment