Linux

디스크 관리(1)

abc94 2024. 7. 8. 21:30

안녕하세요

이번 시간에는 리눅스 시스템 내, 디스크가 어떻게 관리되는지 공부하는 시간을 갖고자 합니다.

 

리눅스를 운영 하다보면 디스크, 파일시스템 과 같은 용어들을 많이 접할 수 있는데요

볼륨, 파일시스템, 마운트, 블록 I/O 등 대충은 무얼 뜻하는지 알지만 정확하게 설명하기는 난해한 부분이 있습니다.

리눅스 커널이 어떻게 핸들링 하는지 확인해보면서 정확한 개념을 얻고자 하는게 이번 섹션의 목표입니다.

 

피드백은 언제나 환영입니다.


1. 물리 디스크

2. 파일시스템

3. 파티셔닝

4. 볼륨


1. 물리디스크

물리 디스크란, SSD,HDD 와 같은 하드 디스크를 의미합니다.

이러한, 디스크를 CPU가 인식하기 위해선 인터페이스 컨트롤러가 필요합니다.

 

인터페이스 컨트롤러란, 하드웨어와 소프트웨어의 결합체 입니다.

하드웨어 : HBA 카드 or 마더보드 컨트롤러 칩셋

소프트웨어 : 내장 펌웨어

 

SAS,SATA,NVME 중 어떠한 인터페이스를 사용할 지 여부는 하드웨어 인터페이스(HBA, 칩셋)에 의해 결정됩니다.

디바이스 드라이버는 OS의 커널에 로드되며, 드라이버 모듈을 통해 어떠한 장치를 인식하는지 알 수 있습니다.

 

외장 스토리지(SAN)의 경우, HBA 카드에 내장된 인터페이스 컨트롤러를 통해 CPU가 볼륨을 인식합니다.

로컬 디스크의 경우, 마더보드에 내장된 인터페이스 컨트롤러를 통해 CPU가 디스크를 인식할 수 있습니다.

특성 SAS SATA NVME
속도 12 Gbps 6 Gbps 32 Gbps
Latency 낮음 다소 높음 매우 낮음
사례 데이터 센터 PC 고성능 스토리지
비용 높음 낮음 높음

 

그러면, 신규 디스크를 OS에 인식하기 위해선 어떠한 과정이 필요할까요??


2. 파일시스템

해당 디스크를 어떠한 방법으로 OS가 읽기 / 쓰기를 할지 결정해줘야 합니다.

이를 "파일시스템으로 변환한다" 라고 표현 합니다.

 

파일시스템이란,  RAW 디스크나 파티션을 OS 가 데이터를 저장하고 읽을 수 있도록 포맷한 상태 입니다.

파일 시스템을 생성하고 마운트하는 과정을 통해서 디스크를 사용합니다.


3. 파티셔닝

RAW 디스크를 그대로 사용하지 않고 디스크를 왜 논리적으로 나누어서 사용하는 것일까요?

가장 강력한 이유는 디스크 공간을 용도에 맞게 분리하여 사용할 수 있기 때문입니다.

각 파티션은 논리적으로 분리되어, 독립적으로 사용되며 서로의 파티션에 영향을 미치지 않습니다.

Disk /dev/xvda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D209C89E-EA5E-4FBD-B161-B461CCE297E0

Device       Start      End  Sectors  Size Type
/dev/xvda1    2048     4095     2048    1M BIOS boot
/dev/xvda2    4096   413695   409600  200M EFI System
/dev/xvda3  413696  2510847  2097152    1G Linux extended boot
/dev/xvda4 2510848 20971486 18460639  8.8G Linux filesystem

 


4. 논리 볼륨

데이터를 저장할 수 있는 논리적인 저장 공간을 의미 합니다.

파티션이랑 무슨 차이점이 있으며 왜 사용하는 것일까요?

 

결론부터 말씀드리며, 디스크 공간을 훨씬 유연하게 관리할 수 있습니다.

먼저, pvcreate, vgcreate, lvcreate 와 같은 명령어를 통해서 논리 볼륨을 생성할 수 있습니다.

 

하나의 파티션으로 파일시스템을 생성하게 되면, resize 하는데 매우 복잡합니다.

하지만, LVM을 통해 파일시스템 생성시, resize가 매우 간단하여, 필요에 따라 용량을 쉽게 조정할 수 있습니다.

sudo lvextend -L +50G /dev/myvg/mylv
sudo resize2fs /dev/myvg/mylv

 


이번 시간에는 간단하게 디스크 관련 개념을 익혀보는 시간을 가졌습니다.

두번째 챕터에서 뵙겠습니다.

오늘도 감사합니다.