골방잡담

리눅스 파일시스템, 디스크 관리 개념 정리 본문

PC방에서/리눅스

리눅스 파일시스템, 디스크 관리 개념 정리

sisu_ 2020. 10. 10. 18:27

리눅스 공부를 하다보니 파일시스템, 디스크, LV, VG, PV 개념이 너무 헷갈려서 정리를 해보았다.

(리눅스 교재/구글링을 기반으로 정리한 내용이긴 하지만 혹시나 잘못된 부분이 있으면 지적해주시면 감사하겠습니다)  

 

일단... 찾다보니 요 그림이 이해에 매우 도움이 되었다 : 

Filesystem / LV / VG / PV 구조

 

Physical Volume인 ext3, ext4, xfs 와 같은 것들 여러개를 합쳐서 Volume Group으로 지정할 수 있고, 

Volume Group은 Logical Volume으로 나누어 할당을 할 수 있다. ext3, ext4 같은 일반적인 파일시스템들은 Logical volume 위에 생성된다. 

 

왜 굳이 이렇게 여러 개의 layer가 있는걸까? 

기존에는, sysadmin 들에게는 diskspace를 늘리는 것은 굉장히 복잡한 일이었다고 한다. 새로운 하드드라이브를 설치하고, 파티션을 생성하고, 파일시스템을 만들고, mountpoint를 작은 파일시스템에서 새로운 큰 파일시스템으로 바꾼 후, /etc/fstab 파일을 수정하여 새로운 파티션의 device 이름을 맵핑시킨 후, 리부팅을 하는 과정이 있었다고 한다. 

 

lvm 이 생기면서, 디스크 용량 관리가 훨씬 쉬워졌다고 한다. 파일시스템이 마운트&사용 중인 상태에서 logical volume을 파일시스템에 추가 할당 할 수 있고, 여러 개의 물리적인 하드드라이브를 하나의 volume group으로 묶어준 후, 또 다시 logical volume으로 나눌 수 있기 때문이다. 

 

단, ext3,4와 같은 파일시스템들도 용량을 늘리고 줄이는 것을 온라인에서 허용하는지 확인해야 한다. ext2,3,4는 용량을 늘릴 때에는 온라인/오프라인 모두 지원하지만, 줄일 때에는 오프라인만 지원한다. 

 

 

Logical Volume 증설은 어떻게 할까? 

[물리디스크부터 증설을 해야 하는 경우 참고]

1. 필요한 경우, 새로운 하드 드라이브 설치 

2. 필요한 경우, 해당 하드드라이브에 파티션 생성

3. 해당 하드드라이브의 일부를 PV로 생성하거나, 전체를 PV로 생성

4. 새로운 PV를 VG 에 assign (이미 있는 것에 assign하거나, 새로운 VG 생성)

5. VG에서 새로운 LV 생성

6. 새로운 LV에 filesystem 생성 

7. 마운트를 위한 정보를 /etc/fstab에 넣기. 

8. filesystem mount하기 

 

[보통 실무에서 쓰게 될 명령어]

보통은, 특정 logical volume에 용량이 차서 증설을 해주는 경우가 많은 것 같다. 

VG에 사용 가능한 용량이 있는지 확인한 후, 50G를 /dev/centos/backup 에 추가해주려면 아래와 같이 명령어를 치면 된다. 

lvextend -L+50G /dev/centos/backup

lv 확장 후에는, filesystem도 확장해줘야한다. 이 부분은 파일시스템마다 다른 것 같은데, 

아래는 xfs 의 경우 사용하는 명령어다. 

xfs_growfs /dev/centos/backup

확인은 df 명령어를 이용해서 할 수 있다. 

 

 

[기타 관련 명령어들]

 

- 물리볼륨, 볼륨그룹, 논리볼륨 현황 확인 : pvs, vgs, lvs

 

- 파일시스템 별 용량 확인

ubuntu@ip-172-31-43-2:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs            98M  740K   98M   1% /run
/dev/xvda1      7.7G  5.3G  2.5G  69% /
tmpfs           490M     0  490M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           490M     0  490M   0% /sys/fs/cgroup
/dev/loop0       29M   29M     0 100% /snap/amazon-ssm-agent/2012
/dev/loop1       97M   97M     0 100% /snap/core/9804
/dev/loop2       18M   18M     0 100% /snap/amazon-ssm-agent/1566
/dev/loop4       98M   98M     0 100% /snap/core/9993

 

- 특정 디렉토리 별 용량 확인 

ubuntu@ip-172-31-43-2:~$ du -h script
4.0K    script/bak
12K     script

 

 

참고 : https://opensource.com/business/16/9/linux-users-guide-lvm

 

Comments