본문 바로가기
Linux

Storage 관리-2 (LVM)

by Nirah 2022. 11. 1.

저번 포스팅에 이어서 Linux Storage(디스크) 관리에 관한 내용을 이어 갑니다.

 

목차

 

    storage 관리-1

0. VMware 하드 추가

1. partition

2. file system (포멧)

3. mount

 

    storage 관리-2

4. LVM

5. VMware 머신 생성 시 파티션 설정

 

    storage 관리-3

6. Quota

 

 

 

 

 

<< 4. LVM >>

- LVM(Logical Volume Manager)

 

사용자가 직접 disk를 제어 하지 않고 중간에 NVM 계층을 이용해서 디스크 제어를 하는 방식이다.
리눅스 디스크 확장의 문제점을 해결하기 위해 등장했다.

(Server 가 전기적 작동 중에 하드 추가가 불가능 한 점 등을 극복하여 계속 확장이 가능하게 한다.)

 

현재 리눅스 설치 시 기본옵션이다.

 

( ※하지만 VMware에서 가상머신을 만들 때 파티션을 수동으로 설정하면 설치가 안될 때가 있다.

아마도 / 의 파일속성을 LVM으로 하지 않고 표준파티션을 고르게 되면 이런 일이 벌어지는 듯 하다.
LVM이 설치가 안되어 있으면 LMV 과정 중에 명령어 not found가 뜬다.
해결은 yum install -y lvm2 로 수동 설치해 주는 방법이다.)

 

 

 

<<구성 하는법>>


!!!순서!!! 
1.partition -> 2.pv -> 3.vg -> 4.lv -> 5.File system -> 6.mount

삭제는 역순이다.

 

 

1. 파티션 (partition)

 

lv때 파티션이 나뉘니까 최초 파티션은 하나로 잡으면된다.
파티션할때 linux LVM으로 하겠다 선언하는 과정을 거친다.

 

이전 게시글 처럼 fdisk 명령어로 파티셔닝을 한다.

단, 저장(w)전에 t 를 입력하고 8e를 입력한다.

8e라는 것은 Hex code에서 약속된 Linux LVM의 system ID로 ( l )을 눌러서 Hex code 종류를 미리 확인해 볼수 있다.  

 

 

저장 (w) 전에 p로 변화를 확인해 보자.

위의 캡쳐에선 system ID가 83 Linux 였는데 아래와 같이 8e Linux LVM 으로 변한 것을 확인할 수 있다.

 

 

 

2. pv (physical volume)

 

물리적인 볼륨을 lvm으로 사용하겠다는 선언적 의미

 

 # pvcreate [장치 위치1] [장치 위치2] ...

 

# pvremove
# pvscan (자주 씀)
# pvs
# pvdisplay

 

 

 

 

3. vg(volume group) 

 

장치들을 그룹으로 묶어서 lv를 만들 수 있는 볼륨 공간을 제공한다.

(제일 중요하다. vg용량만 있으면 파티션은 얼마든지 만들수있다.)

 

# vgcreate [vg명] [장치 위치1] [장치 위치2]...  

 

# vgremove [vg명] [장치 위치1] [장치 위치2]...
# vgextend [vg명] [장치 위치1] [장치 위치2]...
# vgreduce (쓰지않는다. 디스크는 데이터가 순차로 써지는 것이 아니라 줄이면 깨질 위험이 있다.)
# vgscan  (잘 안씀)
# vgdisplay (자주 씀)

# vgs (아래 보는 방법 분석)


 VG     #PV #LV #SN   Attr       VSize      VFree

centos   1      2     0     wz--n-  <19.00g    0 

PV : 피지컬 볼륨의 개수
LV : 로지컬 볼륨의 개수
Vsize : 전체 볼륨의 크기
Vfree : 놀고있는 여유 볼륨의 크기

 

 

 

 

4. lv(logical volume)

 

VG를 논리적으로 구분해서 사용한다.

(vl 로 볼륨을 한 번 나눌때 마다 4Mb씩 소비된다)

 

# lvcreate -L [용량] -n [lv명] [vg명]

 

lvremove [장치 위치]                          (/dev/babo/babo1)
lvextend -L +[용량] [장치 위치]           (+1G /dev/babo/babo1)
lvredure -L -[용량] [장치 위치]            (쓰지 말자 데이터 깨질수있다.)
lvscan    (자주 씀)
lvs
lvdisplay

 

아래는 'babo' vg그룹에서 3G를 할당하여 논리적인 lv 파티션인 babo2를 생성하는 과정이다.

lvscan으로 babo1, 2를 확인한 모습을 보면, 장치의 경로가 VG 그룹으로 바뀐것을 확인 할 수 있다.

원래 이들의 장치명은 /dev/sdb1 이었다.

 

  

 

 

5. mkfs

 

# mkfs.ext4 /dev/babo/babo1
# mkfs.xfs /dev/babo/babo2
(mkfs -t ext4 /dev/~ 형식을 써도 된다)

 

 

 

6. mount

 

# mount /dev/babo/babo1 /lv1
# mount /dev/babo/babo2 /lv2

(미리 mkdir /lv1 /lv2 를 해두거나 저 명령어를 치는 도중 `` 사이에 넣어서 우선실행해준다.)

 

 

 

7. 파티션 용량 확장 시

 

만약 지금 쓰고 있는 하드 디스크의 용량이 full이 났다고 가정해 보자.

Server는 쉽게 셧다운 할 수도 없어서 전기적인 작동 중에는 하드를 추가해서 쓸 수가 없는 상황이다.

이럴때 지금까지 구성한 LVM 기술을 이용해 확장을 하는 것이다.

 

일단 이전 포스팅 Storage 관리-1 의 0.VMware 하드 추가 부분을 실행해서 물리적인 용량을 확장한다.

 

# lvextend -L +1G /dev/babo/babo1 를 써서 babo1의 용량을 +1G 확장한다.

 

 

lvscan으로는 용량이 늘어난 것이 보이나 df -Th 를 써서 보면 용량을 변경해도 파일시스템에 적용이 안 돼 있다.
변경한 용량을 적용 시키려면 적용된 파일 시스템마다 다른 방법을 한 단계 더 적용시켜야 한다.

 

xfs 파일의 경우 :  # xfs_growfs [장치 경로]                (/dev/babo/babo2)
ext 파일의 경우 :  # resize2fs [장치 경로]                   (/dev/babo/babo1) 

 

캡쳐를 미처 못했지만 slblk로 확인해 보면 하드A 하나에 VG 그룹들 용량이 다 들어가지 못하면

초과한 만큼 연속해서 추가 하드B에 할당되는 것을 확인 할 수 있다.

하드들 양쪽에 쪼개져 나뉘어 들어가는 VG 그룹원이 생긴다..

 

 

=========================================================================================

 

 

 

Q. LVM 문제

1.물리적인 disk sdb(10G), sdc(5G) 생성
2.vg이름은 bibi
3.lv를 각 2G로 생성합니다.
vl는 6개를 만듭니다. bibi1~bibi6
파일 시스템은 bibi1=ext4, bibi2=xfs, bibi3~6=ext3
mount는 /lv1 /lv2 /lv3~ /lv6
df -Th로 확인 후 bibi1, bibi2에 용량을 1G씩 추가

 

용량 추가 전 / 후

 

 
 

 

 

 

 

<<5. VMware 머신 생성 시 파티션 설정>>

 

이제 LVM을 배웠으니까 좀더 응용할 방법을 작성하겠다.

 

 

<<리눅스 설치 시 생성되는 파일시스템>>

 

 - swap
메모리가 부족할 때 (하드)디스크를 메모리처럼 사용하는 가상화 기술
메모리와 디스크는 속도차이가 천배가 넘는다.
느리기는 하지만 어쨌든 App를 실행할 수 있다.

통상적으로 사용하는 메모리의 2배로 설정하는데, 현재는 현실적으로 불가능하다.

(서버가 사용하는 메모리가 Tera단위가 되면 어렵다)

- Root   /  

 

- /boot /root /bin /lib /etc /var /home /tmp /mnt /opt /lib64 /run 등이 생성됨

 

 

 

<<리눅스 생성 시 별도로 구성하는 디렉토리>>

 

  • /home : 유저 계정을 많이 저장하는 서버는 확장을 고려해 LVM으로 VG 그룹에 포함시켜 생성한다. 그리고 사용자 계정이 저장되는곳은 OS가 설치된 파티션에 생성하지 않고 별도 파티션이나 다른HDD에 생성하는 것이 좋다.
  •  /var : 로그가 많이 저장되는 서버는 확장을 고려해서 LVM으로 VG 그룹에 포함시켜 생성한다.
  • /boot : 부팅에 관련된 파일이 존재하기 때문에 논리적인 볼륨에 사용 금지해야 한다.
    반드시 LVM이 아닌 표준 파티션으로 일반 파일 시스템 사용해야 한다.

 

(애초에 서버를 무슨 용도로 쓸 지 다 계획하고 구성해야 한다는 뜻이다.

/home 디렉토리 같은건 표준 파티션으로 쓰다가 나중에 LVM으로 VG 그룹에 포함을 시키는건 안되는 듯 하다.)

 

 

swap 은 사용될 메모리의 2배가 적당하다.

 

이건 예전 설치 방식으로 구성했던 것인데, 이렇게 만들면 LVM이 아니라 표준파티션이라 지금은 제약이 크다

LVM2 도 기본설치가 안돼서 나오는 문제도 있다.

 

변경사항을 적용하면 아래와 같이 만들어진다.

 

 

'Linux' 카테고리의 다른 글

Package 관리-1 (yum, RPM)  (0) 2022.11.02
storage 관리-3 (Quota)  (0) 2022.11.01
Storage 관리-1 (partition - format - mount)  (0) 2022.10.31
파일 속성 분석 (권한)  (0) 2022.10.31
사용자 계정  (0) 2022.10.31