파일시스템과 DBMS
파일시스템이란?
웅영체제가 디스크에 데이터를 저장하고 관리하는 방식입니다.
조금 더 명확하게 말씀드리면 파일시스템은 디스크 공간을 구조적으로 관리하는 규칙을 가진 메타데이터 시스템입니다. 파일시스템이 하는 일은
- 파일 저장
파일 생성파일 삭제파일 읽기파일 쓰기
- 디렉토리 관리
폴더 구조 관리파일 경로 관리
- 파일 저장
파일 생성파일 삭제파일 읽기파일 쓰기
- 메타데이터 관리
파일 크기생성 시간수정 시간권한
실제로 파일시스템이 중요한 이유는 파일 형태로 디스크에 저장되기 때문입니다.
PostgreSQL -> 데이터 파일
SQL Server -> MDF, LDF 파일
Oracle -> Datafile
DB 성능은 파일 시스템 성능 영향을 강하게 받습니다. 이에 대표적인 파일시스템은 아래와 같습니다.
NTFS
Windows 기반의 파일 시스템
- 저널링 파일시스템
- 변경 로그 기록
- 장애 복구 가능
- 보안 기능
- ACL 권한
- 파일 암호화
- 감사 로그
- 대용량 파일 지원
- 매우 큰 파일 가능
- 파일 압축 지원
이는 NTFS 내부적으로 MFT(Master File Table) 구조를 채택했기 때문입니다. 이때 MFT란 파일에 대한 모든 정보를 저장하는 방식을 말합니다. DBA의 관점으로 안정성이 매우 높고 Windows DB 운영에 적합한 것이 장점이지만 Linux 대비 성능 최적화 한계가 있습니다.
EXT4
Linux 대표 파일 시스템
- 저널링 지원
- 장애 복구 가능
- Extent 기반 저장
- 연속 블록 저장
- 조각화 감소
- 대용량 성능 향상
- 빠른 파일 접근
- 높은 안정성
Linux DB 서버에서 EXT4는 사실상 표준이며 이를 따르고 있는 DB는 아래와 같습니다.
- PostgreSQL
- MySQL
- Oracle Linux
APFS
Apple 최신 파일 시스템
- Copy-on-Write 구조
- 데이터를 덮어쓰지 않음
- 새로운 블록 생성
- Snapshot 지원
- 특정 시점 데이터 보존
- SSD 최적화
- 암호화 기본 지원
Mac 개발 환경에서는 매우 좋지만 서버 환경에서는 제한적으로 사용됩니다.
FAT32
오래된 파일 시스템
- 매우 단순 구조
- 구현 쉬움
- 호환성 높음
- 크기 제한
- 파일 최대 4GB
- 볼륨 크기 제한 존재
- 저널링 없음
- 장애 시 데이터 손상 가능 DB 저장에는 거의 사용하지 않지만 주로 USB나 임베디드 장치에서 사용합니다.
보통 파일 시스템의 내부 구조는 아래와 같습니다.
Disk
└ Block
└ Page
└ Record
Block
- 디스크 최소 저장 단위로 보통 4KB~16KB입니다.
Inode (Linux)
- 파일 메타데이터 저장 구조로 파일 위치, 권한, 크기를 가지고 있습니다.
Alocation Table (FAT)
- 파일 블록 연결 정보를 저장합니다.
MFT (NTFS)
- 모든 파일 정보 중앙 저장합니다.
DB에서 중요한 성능 요소
- Page Size
- Random I/O
- Sequential I/O
- Write Latency
파일시스템이 영향을 줍니다.
WAL과 파일 관계
WAL이 중요한 이유는 DB -> WAL 기록 -> 파일시스템 flush -> 데이터 안전성 확보
파일시스템 sync 정책이 DB 안정성에 직접 영향을 미칩니다.
DBA가 파일시스템 선택할 때 고려사항
- 저널링 지원
- SSD 최적화
- 쓰기 성능
- Shnpshot 지원
- 안정성