2024_02_02_LVM_정리덜함

이기태·2024년 2월 2일

리눅스

목록 보기
3/27

1. LVM

일반적인 논리 기술(Logical Volume Technology)

  1. LVM(Logical Volume Manage)
  2. RAID(Redudant Array Inexpensive Disk)
  • 일반적인 논리 볼륨 방식 장점: 확장성, 안정성, 편의선(관리에 용이)
    C:\, D:\가 총 1TB일때 100GB만 C:\ 나머지 D;\로 나눔.
    사용하다가 C는 거의 다 사용하고 D는 많이 남았을때 D의 남은 용량을 C에 나눠서 유연하게 줄 수 있음.

LVM 논리 볼륨 장점

  • 유연한 용량, 크기조정 가능한 스토리지 풀, 온라인 데이터 재배치
  • 편의에 따라 장치 이름 지정, 디스크 스트라이핑, 미러 볼륨, 볼륨 스냅샷


Volume Group에서 Logical Volume으로 나눌때 리니어, 스트라이프, 미러 방식이 있음.

LVM 구성요소(5장 4p 참고)

  • PV (Physical Volume) - PE(Physical Extend)
  • VG(Volume Group)
  • LV(Logical Volume) - LE(Logical Extend)
    PV를 나눈 각각을 PE, PV가 나뉠때 LV도 같이 나뉘고 LV를 나눈 각각을 LE라함. PE와 LE는 1:1매핑 // 리니어 방식
    2개 디스크를 하나로 펼친것 처럼. 성능을 위해. PE,LE 1:1매핑// 스트라이프
    하나로 들어갈때 둘다 들어감. 용량이 2배 필요. 한 데이터를 잃어도 다른 디스크에 저장되어있음. 성능보단 안전성.PE,LE 2:1매핑//미러

LVM 작업 절차

  • partition id 변경 : fdisk
  • PV 생성(pvcreate CMD)
  • VG 생성(vgcreate CMD)
  • LV 생성(lvcreate CMD)
  • F/S 생성(mkfs CMD)
  • 마운트(mount CMD, /etc/fstab)

PV 관리

#pvcreate /dev/sdc1 //생성
#pvremove /dev/sdc1 //삭제

#pvs //간단하게 확인
#pvdisplay /dev/sdc1 // 자세하게 확인.

VG 관리

■ VG 생성
#vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1
#vgcreate vg1 /dev/sd[cde]1
#vgcreate vg1 /dev/sd[cde]1 -s 16M / PE Size : 16MB /

■ VG 삭제
#vgremove vg1
#vgremove /dev/vg1

■ VG에 디스크 추가/제거
#vgextend vg1 /dev/sdf1
#vgreduce vg1 /dev/sdf1

■ VG 이름 변경
#vgrename /dev/vg1 /dev/vg1_backup
#vgrename vg1 vg1_backup

■ VG 정보 확인
#vgs (# vgs -v)

#vgdisplay (# vgdisplay vg1)
#vgscan

LV 관리

방식: Linear, Stripe, Mirror

■ LV 생성
#lvcreate -L 10G vg1 / LV 이름 자동 생성 : lvol#(용량 10G) /
#lvcreate -L 1500M -n lv1 vg1
#lvcreate -L 1500 -n lv1 vg1 / 용량 단위가 없으면 MB /

■ LV 삭제
#lvremove /dev/vg1/lv1

■ LV 이름 변경
#lvrename /dev/vg1/lv1 /dev/vg1/lv2
#lvrename vg1 lv1 lv2 / vg1(lv1 -> lv2) /

■ LV 공간 늘리기/줄이기
#lvextend -L 12G /dev/vg1/lv1 / lv1 용량을 12G로 맞춤 /
#lvextend -L +1G /dev/vg1/lv1 / lv1 용량을 1G 만큼 추가 /

#lvreduce -L 3G /dev/vg1/lv1
#lvreduce -L -3G /dev/vg1/lv1
*크기를 줄일땐 백업하거나 스냅샷을 뜨고 줄인후 이상있을시 복구

■ LV 정보 확인
#lvs

#lvdisplay (# lvdisplay /dev/vg1/lv1)

F/S(file system) 관리

  • mkfs -t ext4 /dev/vg1/lv2

마운트 관리

#mkdir -p /lv1 /lv2
#mount /dev/vg1/lv1 /lv1
#mount /dev/vg1/lv2 /lv2

vi /etc/fstab ->
/dev/mapper/vg1-lv1 /lv1 ext4 defaults 0 2
/dev/vg1/lv2 /lv2 ext4 defaults 0 2
:wq

업로드중..


  • lvm체계를 사용하면 디스크 용량을 늘릴 수 있음.

LVM 시나리오 작업

-- help: 명령어 도움말
man: 메뉴얼 페이지
-v ~ -vvvv: 자세히.

    1. 파일시스템(EX: /lv2) 용량을 늘리는 경우
      [참고] 파일시스템 용량 늘리기/줄이기
      -(ext4) (0)늘리기, (0)줄이기 가능
      -(xfs ) (0)늘리기, (X)줄이기 불가능
      // lv2 파일시스템이 용량이 부족하여 파일시스템 용량을 늘리기
      // lv2((500M) + 1G = 1.5G)
      [실습]
      #lvs
      #df -h /lv1 /lv2
      #dd if=/dev/zero of=/lv2/file1 bs=1M count=400
      #df -h /lv2
      #vgs
      #lvextend -l +100%FREE /dev/vg1/lv2
      #lvs
      #df -h /lv2
      #resize2fs /dev/vg1/lv2 // 파일시스템 사이즈 재설정.
      #df -h /lv2

파일시스템 만들면 상단에 슈퍼블락이 생성되고 밑에 데이터
lv용량과 파일시스템의 용량은 별개 그래서 따로 작업을 해줘야함.
umount하지않아도 됌. 물리적으론 떨어져있지만 논리적으로 붙어있음.

    1. VG(EX: vg1)에 PV(EX: sdf1)를 추가하는 경우
      LV1(/dev/vg1/lv1(1.5G + ?)) 용량을 늘리고 싶다.
      VG(/dev/vg1)에는 남는 공간이 없다.
      VG(/dev/vg1)에 PV(/dev/sdf1) 추가하고 LV(/dev/vg1/lv1)에 용량 늘리기
      == vg1(sdc1, sdd1, sde1) + sdf1
      #df -h /lv1
      #dd if=/dev/zero of=/lv1/file2 bs=1M count=500 <- 2번 실행
      #df -h /lv1
      #vgs
      #pvs
      #vgextend vg1 /dev/sdf1
      #pvs
      #vgs
      #lvextend -l +100%FREE /dev/vg1/lv1
      #resize2fs /dev/vg1/lv1
      #df -h /lv1
    1. LV 용량 감소(Filesystem Shrinking)
      [주의] ext4만 용량 감소가 가능하다.
      (가정) VG에 증설할 PV는 존재하지 않는다.
      /lv1 용량은 남은 상태이고, /lv2는 용량이 부족한 상태이다.
      따라서, /lv1 용량을 감소 시키고(2.5G - ?), /lv2 용량을 늘린다(1.5G + ?).
      == /lv1 - 용량 감소(2.5G - 500M)
      == /lv2 - 용량 증설(1.5G + 500M)
      #cp /etc/passwd /lv1/file10
      #cp /etc/passwd /lv2/file11
      #df -h /lv1 /lv2
      [참고] 안전하게 데이터를 백업 받는다.
      #mkdir -p /backup
      #cd /lv1
      #tar cvzf /backup/lv1.tar.gz .
      #cd; umount /lv1
      #fsck.ext4 -f /dev/vg1/lv1
      #resize2fs -p /dev/vg1/lv1 2G // 만얅 2.5G일땐 2500M로 하자.
      [참고] fsck 명령어를 수행하지 않은 상태에서 resize2fs 명령어 수행한 경우
      #resize2fs -p /dev/vg1/lv1 2G
      resize2fs 1.39 (29-May-2006)
      Please run 'e2fsck -f /dev/vg1/lv1' first.
      #e2fsck -f /dev/vg1/lv1
      #resize2fs -p /dev/vg1/lv1 2G
      #lvreduce -L 2G /dev/vg1/lv1
      #lvs
      #mount /lv1 <- 이상 발생했다면 아까 백업한것 파일로 복구하자.
      #df -h /lv1
      #cat /lv1/file10 | head // 이상없는지 확인
    1. VG 안의 PV를 새로운 PV로 교체
      *** VG 안에 PV를 새로운 PV로 교체하는 이유
      ■ 성능이 좋은 디스크로 교체하는 경우(10000 rpm -> 15000 rpm)
      ■ 용량이 큰 디스크로 교체하는 경우(128G SCSI -> 500G SAS)
      ■ 작업 계획
      (전제조건) 새로운 디스크 (/dev/sdg(1G), /dev/sdh(1G))가 추가되어 있고, 하나의 파티션(/dev/sdg1, /devv/sdh1)으로 설정 되어있어야함.)
      새로 추가한 디스크/파티션(ex: /dev/sdg1)을 PV 선언하고, VG(ex:vg1)에 포함시킨다.
      교체할 디스크 (ex: /dev/sdf1)의 내용을 pvmove를 통해 새로 추가된 디스크(ex: /dev/sdg1)로 데이터를 이동시킨다.
      교체할 디스크의 내용은 전혀 사용되지 않는 상태가 되므로, VG에서 제거한다.

#fdisk /dev/sdg
#pvcreate /dev/sdg1
#vgentend vg1 /dev/sdg1
#pvmove /dev/sdf1 /def/sdg1
#vgreduce /dev/sdf1

    1. LV/VG/PV삭제
    1. LV - Striping 구성
      striping 특성: 성능(r/w)↑, 안정성 ↓, 디스크 사용 효율: -
      -i : number of stripes
      -I : stripe size(KB) [default: 64KB]
      -> 2개의 PV에 걸쳐 sripte 크기는 64KB 크기로 vg1에 lv1 구성.

(Stripe LV) lvcreate -L 10G -n lv1 -i 3 vg1
(Stripe LV) lvcreate vg1 -n lv1 -L 10G -i 3

    1. LV Mirroring 구성
      mirror 특성: 성능 read ↑, write ↓, 안정성 ↑, 디스크 사용효율 ↓
      (Mirror LV) lvcreate -L 10G -n lv1 -m 1 vg1
      (Mirror LV) lvcreate vg1 -n lv1 -L 10G -m 1

(Nomal LV) lvcreate -L 10G -n lv1 vg1
(Nomal LV) lvcreate vg1 -n lv1 -L 10G

(Stripe LV) lvcreate -L 10G -n lv1 -i 3 vg1 // -i 3 : 3개의 디스크에 걸쳐 스프라이트
(Stripe LV) lvcreate vg1 -n lv1 -L 10G -i 3

(Mirror LV) lvcreate -L 10G -n lv1 -m 1 vg1 // -m 1: 원본에 대한 하나의 복사본 생성
(Mirror LV) lvcreate vg1 -n lv1 -L 10G -m 1
만약 '-m 2'라면 원본에 대한 두개의 복사본 생성.
10GB디스크 3개로 총 30GB공간이 있을 때 -m 2 옵션을 주면 10GB 복사본 2개 생김
사용 공간은 그대로 10GB


5장 40p 실습 안고 혼자해보기......

0개의 댓글