리눅스에서의 하드디스크
- 리눅스에서는 디스크를 효율적으로 관리하고 사용하는 방법으로 LVM과 RAID 기술을 사용하고 있습니다.
- 이는 디스크의 파티션을 보다 유연하게 사용할 수 있게 해주며 데이터의 손실을 방지하고 효율적으로 읽고 쓸 수 있는 방법으로 사용되기도 합니다.
LVM (Logical Volume Manager)을 사용하는 이유
- 리눅스 안에서 하나의 디스크를 여러 파티션으로 분할해서 파일 시스템을 사용해 특정 디렉터리와 연결시켜 사용하게 됩니다.
- 이때 하드디스크를 파티션으로 나눌 경우 물리적인 개념이 강해서 고정적인 용량으로 사용하게 됩니다. 따라서 디스크의 추가/제거 시에 별도로 복잡한 작업이 필요하게 되고 데이터 관리가 불편할 수 있습니다.
- LVM은 파티션을 논리적인 개념인 볼륨으로 나눠서 더 유동적으로 디스크의 용량을 관리 할 수 있습니다.
- 볼륨은 기본적으로 단일 파티션에 상주하게 되지만 다수의 파티션을 하나의 볼륨으로 관리할 수도 있습니다.
- 그래서 여러 파티션을 합치거나 분할하기에 용이해서 유용하게 사용할 수 있습니다.
볼륨과 파티션
LVM을 이해하기 위해서는 먼저 볼륨과 파티션을 구분할 수 있어야 합니다.
- 파티션
- 디스크는 파티션이라는 논리적인 크기로 분할 / 통합해서 사용합니다.
- 하나의 디스크를 여러 개로 분할하기도 하며 여러 개의 디스크를 하나의 파티션으로 통합하기도 합니다.
- 파티션은 고정적이고 물리적인 개념이 강하며 한 번 크기를 설정하면 변경하거나 추가하기 힘들고 OS는 각 파티션을 별도의 디스크처럼 인식합니다.
- 볼륨
- 파일 시스템으로 포맷된 디스크 상의 저장 영역이라고도 하며 파티션과 비슷한 개념이지만 엄연히 다릅니다.
- 볼륨은 디스크의 단일 파티션에 상주하게 되며 파티션보다 논리적이고 유동적인 개념입니다.

LVM의 기능
- 리눅스에서 디스크를 사용하는 방법은 가장 기본적으로 디스크를 파티션으로 나누어 각각의 디렉터리에 파일 시스템으로 마운트 한 뒤 지정된 위치에 데이터를 저장해서 사용하게 됩니다.
( 디스크 -> 파티션 -> 파일시스템(/home) )
- LVM은 커널에 구현된 기능으로 디스크를 좀 더 효율적으로 사용할 수 있습니다.
- LVM은 파티션 대신 볼륨이라는 단위로 저장장치를 다루며 물리 디스크를 볼륨 그룹으로 묶어 다시 논리 그룹으로 나누어 파일 시스템을 만듭니다.
( 디스크 -> 파티션 -> 볼륨그룹 -> 논리그룹 -> 파일시스템(/home) )

LVM의 구성
- 디스크를 좀 더 유연하게 사용하기 위해 물리적인 파티션을 논리적인 볼륨으로 바꿔서 사용합니다.
- LVM에서는 여러 파티션을 하나의 논리적인 볼륨으로 묶은 뒤 다시 필요한 크기만큼 나눠서 사용할 수 있습니다.
PV (Physical Volume)
- 물리적인 볼륨으로 디스크를 LVM에서 사용할 수 있게 변환하는 작업을 말합니다.
- 디스크의 파티션을 PV로 초기화시켜 일정한 크기의 PE로 구성됩니다.
VG (Volume Group)
- PV가 모여 만들어진 그룹을 말합니다.
- 물리적인 일정한 크기의 PE로 구성된 PV들이 모여 VG가 만들어집니다.
- VG는 다시 LV로 할당할 수 있는 공간을 말하기도 합니다.
PE (Physical Extent)
- PV에서 나누어 사용하는 블록입니다.
- 보통 1PE의 크기는 4MB이며 VG가 새롭게 나누는 논리적인 LV의 LE와 1:1 대응합니다.
LV (Logical Volume)
- VG에서 사용자가 필요한 만큼 할당돼서 만들어지는 공간입니다.
- 논리적인 파티션이라고 볼 수 있으며 이는 다시 LE로 나누어집니다.
LE (Lovical Extent)
- LV가 나누어진 일정한 크기의 블록으로 물리적 크기인 PE와 1:1 대응합니다.

물리적인 크기를 논리적인 크기로 바꿔서 분할, 결합이 더 유연합니다.
물리적 크기인 PE는 논리적 크기인 LE와 1:1 맵핑하게 됩니다.
RAID란
- 여러 개의 하드디스크가 있을 때 동일한 데이터를 다른 디스크에 중복해서 저장하는 방법입니다.
- 동일한 데이터를 여러 디스크에 나눠서 저장할 경우 효율적으로 데이터를 관리하여 데이터의 손실을 막을 수도 있습니다.
- OS에서는 하나의 RAID가 논리적으로 하나의 디스크로 인식해서 처리됩니다.
- RAID의 기술은 데이터 기록하는 방식이나 에러를 체크하는 패리티나 ECC등 구성 방법에 따라 다양한 형태로 존재합니다.
RAID에서 사용되는 기술
- RAID에서 데이터를 나누는 방법에는 여러 가지가 있으며 공통적인 목적으로는 저장장치의 신뢰성을 높이고 빠르게 데이터를 읽어 들이면서 데이터의 손실을 막으려는 목적도 있씁니다.
스트라이핑 (Striping)
- 스트라이핑은 라운드 로빈 방식으로 데이터를 기록하는 기술로 대량의 데이터를 순차적으로 읽기/쓰기 할 수 있는 기술입니다.
- 스트라이핑은 여러 디스크에 데이터를 읽고 쓰는 작업을 병렬로 실행합니다.
- 순차적으로 여러 디스크에 같은 데이터를 기록하게 되며 이는 프로세서가 하나의 디스크에서 데이터를 읽어 들이는 것보다 더 빠르게 데이터를 읽어올 수 있습니다.
- 4개의 디스크에 같은 데이터를 스트라이핑 방식으로 기록하게 된다면 하나의 디스크에 기록하는 것보다 훨씬 빠르게 처리할 수 있습니다.
미러링 (Mirroring)
- 미러링은 데이터 손실을 막을 수 있는 방법 중 하나입니다.
- 디스크에 에러가 발생할 경우 해당 데이터들이 손실될 수 있습니다.
- 이를 방지하기 위해 여러 개의 장치에 데이터를 중복 저장합니다.
- 두 개의 디스크로 미러링을 구현한다면 하나의 디스크에 데이터가 입력되면 자동으로 미러링 된 디스크에도 데이터가 입력됩니다.
- 미러링은 결함 허용이라고도 불리며 디스크와 같은 하드웨어뿐만 아니라 소프트웨어에도 구현이 가능한 기술입니다.