07. LVM - 이론 (+기본 명령어)

prana·2023년 3월 7일
0

Linux

목록 보기
21/28

출처 : 유튜브 따라하면서 배우는 it - 리눅스 고급과정

목차

  1. LVM이란?
    • LVM이란? / LVM의 구성
  2. LVM 설정
    • 전체적인 과정
  3. 따라학IT
    • LVM 설정해보기

🤔 LVM이란?

  • Logical Volume Manager : LVM

  • 여러 개의 물리적인 하드 디스크를 논리적으로 하나로 합친 것. 파티션의 반대.

  • 논리적인 볼륨을 관리해주는 프로그램이라고 생각하면 된다.

  • 파티션을 만드는 거다. 라고 생각하면 된다.


  • 리눅스에 기본적으로 탑재. 처음 하드디스크 파티션을 LVM으로 만든다.

  • 논리 볼륨을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램

  • 기존 방식에서는 파일 시스템이 블록 장치에 직접 접근해서 읽고/ 쓰기를 했다.

  • LVM을 사용하면, 파일 시스템이 LVM이 만든 가상의 블록 장치에 읽고/쓰기 수행

  • 이를 통하여 다양한 기능 제공

  • 유연한 용량, 크기 조정 가능한 스토리지 풀(Pool), 온라인 데이터 재배치

  • 편의에 따라 장치 이름 지정, 디스크 스트라이핑, 미러 볼륨, 볼륨 스냅샷


LVM의 구성

  • 물리적인 하드디스크를 PE라는 작은 단위로 다 쪼갠다. PE를 원하는만큼만, 묶어서 사용할 수 있다.

  • 장점이 뭐냐면, 언제든지 내가 더 늘려서 쓸 수 있다.

  • 기존의 파티션은 한 번 만들고, 용량 바꾸려면 파티션을 새로 만들어야 함. 기존 내용 날라가거나 하는 위험이 있음.

  • 하드디스크를 하나 더 추가해서 똑같은 단위로 추가해서 그대로 사용할 수 있음.

  • 논리적으로 인식된 디스크에다가 얼마든지 늘릴 수 있다. 계속 늘려서 쓸 수 있다.

  • 만약 용량이 남아돌면 줄일 수도 있다.


  • PV : 내가 원하는만큼 떼가서 쓸 수 있음. 원하는 만큼 떼어 가는 단위가, LV(Logical Volume)

  • PE랑 LE랑 똑같은 단위라 생각해주면 됨.

-👍 원하는만큼 떼어가면 됨. VG으로 묶어놨으니까!


  • lvscan : 처음에 설치한 lv가 보임.
  • /dev/cs/root : cs라는 볼륨 그룹에, root라는 lv가 생성됨. (47GB를 뗌) 각각 파일시스템 만들어서 마운트 해서 씀.
  • fdisk -l 쳐서 나오는 정보값들이

  • 실제 디스크가 아니라 만들어진 애들 (cs-root / cs-swap 등)


  • PE는 우리가 쪼개는 게 아니라, 물리적인 하드디스크를 PV라는 것으로 만들어주면 PE 단위로 잘개잘개 쪼개놓는 것이 가능하다.

  • PV를 묶어서, 볼륨 그룹 VG으로 만듬

  • 하드디스크 1-> PV (원래있던 볼륨 그룹에 추가해주면 된다.)


  • 가상머신에서 pvscan

  • /dev/nvme0nlp2에 맨 처음 설치할 때 50GB 하드디스크에 physical volume이 만들어짐.

  • 이런 볼륨 그룹(VG cs)에 속해있음.

  • cs라는 볼륨 그룹이 하나 있고, /dev/nvme0nlp2 파티션이 PV로 추가되어 있음.

    • PV의 용량이 적으면 해당 하드디스크를 PV로 만들고, VG에 추가해서 용량 늘림(한 단계가 더 필요하긴 함)
  • 기존에 썼던 방식은, 원래있던 곳에서 늘어나는 게 아니라, 다른 경로에서 늘어났었다.

  • 47GB를 쓰고 있었는데, 80GB 짜리 파일을 넣으려면.. 20GB 두개 남아서 추가를 함. 47에 넣을 수는 없음. -> LVM은 47GB 자체가 늘어나게 됨.

  • 큰 파일도 저장할 수 있게 됨.

명령어

  • pvscan: pv 보려면
  • vgscan : VG 볼륨 그룹 보려면
  • lvscan : LV 보려면

하드디스크 추가, 해당 하드디스크를 LVM 파티션으로 만들어서 PV에 추가하는 것을 진행

  • 10GB 하드디스크 추가 (SCSI 타입)

  • 하드디스크를 처음 추가하면 인식이 안 됨.

  • rescan-scsi-bus.sh 실행하거나,
  • scsi_rescan
  • echo "- - -" > /sys/class/scsi_host/host 이 중 하나 실행

  • /dev/sdd 이름으로 10GB 하드디스크 추가.

  • 원래대로라면, 파티션 생성, 파일시스템 생성, 마운트 생성 순이다.

  • 중간에 LVM 이라고 하는 작업이 추가가 되는 것.

  • fdisk /dev/sdd 이름으로 파티션 만듦

  • 원래 쓰던거랑 다름 없음.

  • 그러나 PV로 만들려면, -> Linux LVM으로 바꿔줘야 함.

  • fdisk /dev/ssdd

  • 기본 타입의 파티션 만들어지는데, 이후 t

  • 대문자 L : 어떤 타입인지 선택할 수 있음. 8e

  • 타입이 바껴있게 됨.

  • w로 저장하고 나오면 된다.

LVM 생성 과정

fdisk /dev/sdd
n (새로운 파티션)
p (주 파티션)
enter (몇 번째 파티션으로)
enter (몇 번 섹터부터)
enter (몇 번 섹터까지)
t (타입 변경)
8e (linux lvm)
w (저장)
lvm용 파티션이 만들어지게 된다.

  • 만들고 나서, PV로 만들고, 볼륨 그룹에 추가, LV 만들고 파일 시스템

기존이라면 (파란색 LVM 작업)
추가 - 인식 - 파티션 - PV - VG - LV - 파일시스템 - 마운트

  • 클라우드에서 유연하게 사용하다. elastic
  • 하드디스크 용량을 유연하게 사용한다.

PV 만들기

  • pvcreate /dev/sdd1(파티션 이름, 디스크 이름 x)

  • pvscan

  • /dev/sdd1는 아직 볼륨그룹에 추가되어있지 않아서 VG에 나타나있지 않는 것임.

  • 다른 볼륨 그룹에 새로 만들어서 해볼 것. (기존은 건들지 말것. 운영체제 최대한 안건드려보려고)

  • 볼륨그룹 새로 만듦

  • vgcreate myvg(이름 자유) /dev/sdd1(PV로 추가했던 얘를)

  • 여기에 추가하겠다. PV 남는게 있으면 추가해도 됨.

  • 볼륨 그룹에서 원하는 만큼 떼어가면 된다. 얼마나 남아있는지 확인하려면,

  • vgdisplay -> 더 자세한 정보 (scan은 목록만 보는 것)

  • PE size : 4MB 단위로 쪼갬

  • 총 10GB 사용 가능


  • 용량을 떼서 8GB 써보기
  • lvcreate -L +8G -n(n 옵션 설정) mylv1(이름 자유) myvg(어떤 볼륨그룹에서 8GB만큼 떼어갈것)

  • 여기에 파일 시스템 생성, 디렉토리 만들고 마운트까지 해봄

  • mkfs -t xfs /dev/myvg/mylv1

  • mkdir /test3

  • mount /dev/myvg/mylv1 /test3

  • df -h

  • 8GB짜리 저장소가 생김


실습 2 - LVM 확장

  • 기존것과의 차이점은, 이 용량 자체를 늘렸다 줄였다 할 수 있음.
  • vgdisplay myvg하면,
  • 10GB중 8기가 Alloc PE

  • 남아있는 것, 2GB -> 디스크 추가해보기

    1. fdisk - l
    1. echo "- - -" > /sys/class/scsi_host/host2/scan
    1. fdisk - l -> sde로 추가됨
    1. fdisk /dev/sde로 파티션 생성, PV까지 만듦
    1. t 8e w 해서 Linux LVM까지
    1. pvcreate /dev/sde1 파티션 지정해주면, PV까지 만들어짐.

  • 볼륨 그룹에 추가되면, 전체 용량이 늘어날 것임.

  • 볼륨 그룹에 vgextend myvg /dev/sde1 를 추가. (10GB 늘어날 것임)
  • 볼륨그룹에서 가져다 쓸 수 있는 게 많아짐. LV 자체를 늘려야함.
  • vgdisplay 로 확인


LV 늘리기

  • 기존에 쓰던 lv : lvscan

  • mylv1 용량을 늘려 줘야.
  • lvextend -1 +100%FREE(남아있는용량 다써버리겠음) /dev/myvg/mylv1
  • 8GB에서 20GB정도까지 늘어나는 것을 확인할 수 있다.

  • df -h로 보면, 그대로임을 알 수 있는데,

  • 왜? 가상의 하드디스크 자체는 늘어나기는 했는데, 파일시스템 자체는 8GB짜리로 생성이 되어 있는 것임. 파일 시스템 자체를 늘려주는 작업도 필요하다.

  • xfs (기존 ext4 resize이런 명령어임)

  • xfs_growfs /dev/myvg/mylv1

  • 명령 한 번만 실행해주면

  • 마운트 해제한 적 없음, 연결은 계속되어 있는 상태에서 용량만 늘려줌.


LVM 기본

1. LVM 타입의 파티션 생성

fdisk [장치명]
n-> p(주 파티션) -> 첫 번째 섹터 -> 마지막 섹터 -> t타입 변경 -> 8e LVM 타입으로 변경 -> w 저장

2. PV 생성 및 확인

  • pvcreate [파티션명]
    • ex) pvcreate /dev/sdb1
  • pvscan
  • pvdisplay [파티션명]

3. VG 생성 및 확인

  • vgcreate [볼륨그룹명][파티션명1] [파티션명2][파티션명3]....
    • ex) vgcreate vg_test /dev/sdb1 /dev/sdc1
  • vgscan
  • vgdisplay [볼륨그룹명]

4. LV 생성 및 확인

  • lvcreate -L [볼륨크기] -n [볼륨명][볼륨그룹명]
    • ex) lvcreate -L 5G -n lv_test vg_test
  • lvscan
  • lvdisplay [볼륨명]
    • ex) lvdisplay /dev/vg_test/lv_test

5. 파일 시스템

  • mkfs -t [파일시스템 타입][볼륨명]
    • ex) mkfs -t xfs /dev/vg_test/lv_test

6. 마운트

mount [볼륨명][마운트 포인트]


LVM 삭제

  1. LV 삭제
  • lvremove [lv명]
  1. VG 삭제
  • vgremove [vg명]
  1. PV 삭제
  • pvremove [pv명]

LVM 확장

  1. VG 확장

    디스크 추가 → 파티션 생성 → PV 생성 → vgextend [볼륨그룹명][파티션명]

  2. LV 확장

    • lvextend -L + [용량][볼륨명]
  • resized2fs [볼륨명] // 파일 시스템 조정
  • 또는 xfs_growfs [볼륨명] // 마운트 후 실행

0개의 댓글