ASHD Dev_Blog

인프라 일기 : FileSystem (ZFS vs LVM-thin)

개발 일기 1편

이재룡
이재룡 Apr 19, 2026

[ 파일 시스템의 가상화 ]

일반적인 파일 시스템은 디스크와 1:1 이다!

기본적인 구조는

  • 물리적 파티션 (/dev/sda1)
  • 파일 시스템 (XFS)

즉 책장 하나에, 그 책장에 대한 설명서이자 검색 시스템이 하나만 존재하는 구조

그럼 뭐가 문제냐

  1. Silent Data Corruption (데이터 오염)

파일 시스템은 “aaa책이 책장 1열 4번째 칸에 있다”라는 정보를 갖고 있지만

실제 동작은 디스크 컨트롤러에서 하기 때문에 손상 여부를 알 수 없음

⇒ 즉 해당 파일을 가져와 열기 전까지, 하드디스크의 자성 문제 등으로 인해, 0이어야 하는 값이 1이 되어있을 지 등에 대한 내부 데이터 손상 정보는 모름!

 
  1. Storage Pooling 불가능

1:1 구조이기 때문에, 여러 물리적 파티션을 묶어 더 큰 공간을 사용하려고 하면, 별도의 시스템 컨트롤러 자원이 필요 (like RAID)

RAID는 복구 시스템 아닌가?

해당 동작을 위해서는 여러 물리적 파티션에 대한 복합 처리가 가능해야 하므로,

실제 파일시스템에는 3GB의 큰 책장이라고 알려주고, RAID에서 3개의 큰 책장에 대한 분할 관리를 함 그래서 여유 공간이 1GB 1GB 1GB인 3개의 책장에 2GB의 데이터가 들어와도 처리가 가능

 

추가로, 3GB를 4GB로 늘리려면 파일 시스템을 재조정 필요
= 실시간으로 용량을 늘리고 줄이는 과정이 불가능

 
 

[ 가상화 기술 LVM vs ZFS]

LVM (Logical Volume Manager)은 가상 메모리와 너무 유사하다

⇒ 물리 HW - LVM - 파일시스템의 Layered 구조이다!

따라서 표로 정리한 부분만 남겨 놓도록 하겠다

항목
가상 메모리 (RAM 관리)
LVM (디스크 관리)
실제 물리 공간
PA (Physical Address)
PV (Physical Volume)
최소 분할 단위
Page (페이지)
PE (Physical Extent)
번역/매핑 장치
Page Table
Device Mapper
가상/논리 공간
VA (Virtual Address)
LV (Logical Volume)

LVM-thin : 오버부킹!

더 많은 영역을 할당 → 조정을 용이하게!

 

ZFS (Zettabyte File System)는 뭘까?

기존 LVM은 (물리 디스크 - Logical Volume)을 고정크기로 할당하는 방식이다!

 

따라서 수정 과정이 복잡하다

(/home , /db) ⇒ home을 줄이고, db를 더 많이 할당하고 싶을 때

  • /home 파일 시스템을 줄이고
  • LVM 볼륨을 줄인 뒤
  • 다시 /db 볼륨을 늘리고
  • /db 파일 시스템을 확장

⇒ 위험하고 번거로운 작업

ZFS는 디스크를 묶어 zpool(거대한 스토리지 풀) [쪼개지 않음]

가상파티션을 만들지 않고, dataSet을 형성

  • dataSet은 크기가 0
  • 하나의 dataSet이 1TB를 사용하고자 하면
  • zpool의 크기가 1TB 감소
  • 남은 공간은 자연스럽게 공유

⇒ Linux의 sharedMemory와 유사한 개념!

 

결과적으로 ZFS는 (파일시스템 + 볼륨 매니저)가 합쳐진 형태!

  • CoW중에 문제가 발생하면? → 그래도 데이터 손상이 없다
    • ZFS는 A구역 데이터 중 수정이 필요한 데이터를 B구역에 복사하고, 수정을 시작
    • 이후에 UberBlock(최상위 장부)이 주소를 A → B로 수정 (1 Tr)
    • 따라서 마지막 과정이 정상적으로 끝나지 않으면 공간은 소비될 지 언정 포인터가 바뀌지 않아 기존 파일 시스템 유지
 
 
 
 
 
 

추천 글

BlogPro logo