MinIO 란 무엇인가?

2026. 8. 21. 08:59리눅스이야기

반응형
 
1. 설계 철학: 왜 '객체(Object)' 스토리지인가?
컴퓨터가 데이터를 저장하는 방식은 크게 세 가지로 나뉩니다.
  • 파일 스토리지 (Samba, NFS, 일반 하드디스크): 데이터를 '디렉터리 폴더 트리 구조'로 관리합니다. 파일이 수백만 개, 수천만 개로 늘어나면 OS가 특정 파일의 경로(인덱스)를 찾는 과정에서 심각한 병목 현상(속도 저하)이 발생합니다.
  • 블록 스토리지 (SAN, NAS, 클라우드 EBS): 데이터를 일정한 크기의 블록(Block) 단위로 쪼개어 저장합니다. 주로 OS 설치나 고성능 데이터베이스(DB) 운영에 쓰이지만, 확장이 어렵고 가격이 비쌉니다. [1]
  • 객체 스토리지 (MinIO, AWS S3): 데이터를 폴더 구조 없이 '버킷(Bucket)'이라는 거대한 단일 가상 평면에 수평으로 정렬합니다.
    • 데이터는 '객체(Object)' 단위로 저장되며, 이 객체는 [실제 파일 데이터(값) + 고유 식별 주소(Key) + 메타데이터]가 묶인 하나의 덩어리입니다.
    • 폴더 트리를 타고 들어가는 것이 아니라 http://url/bucket/filename.png라는 고유 Key(주소)를 이용해 데이터에 다이렉트로 접근하므로, 데이터가 수십억 개로 늘어나도 파일을 찾아오는 속도가 처음과 똑같이 빠릅니다.

2. 핵심 메커니즘: 이레이저 코딩 (Erasure Coding)
현재 질문자님이 가장 궁금해하셨던 "5개의 디스크를 묶어 쓰는데 왜 안 깨지는가?"를 가능하게 하는 MinIO의 핵심 기술입니다 [[^17]]. 과거 기업들은 하드디스크 고장에 대비하기 위해 'RAID' 기술을 쓰거나 똑같은 하드를 하나 더 복사하는 '미러링'을 썼습니다. 하지만 MinIO는 수학적 알고리즘인 리드-솔로몬 코드(Reed-Solomon Code)를 기반으로 한 이레이저 코딩을 자체 내장하고 있습니다 [[^17]].
  • 동작 방식: 사용자가 10MB짜리 자재 도면 PDF를 업로드하면, MinIO는 이를 통째로 저장하지 않습니다.
    1. 데이터를 여러 개의 데이터 블록(Data Blocks)으로 쪼갭니다.
    2. 동시에 데이터가 손실되었을 때 수학적으로 계산해서 원본을 복구해 낼 수 있는 암호 표식인 패리티 블록(Parity Blocks)을 생성합니다.
    3. 이 블록들을 질문자님이 연결하신 5개의 독립된 디스크에 고르게 나누어 저장합니다. [1, 2]
  • 안전성 (Fault Tolerance): 설정에 따라 다르지만, 보통 전체 디스크 개수의 최대 절반(N/2)까지 디스크가 동시에 완전히 불타서 망가져도 시스템이 중단되지 않습니다. 남은 디스크에 들어있는 데이터 블록과 패리티 블록을 수학적으로 역연산하여 실시간으로 원본 파일을 100% 무결하게 조립 복구해 냅니다.

3. 통신 방식의 개념: RESTful API 기반 서비스
Samba나 일반 공유 폴더는 OS 커널 레벨의 전용 프로토콜(SMB/CIFS)을 사용하기 때문에 웹 브라우저나 스마트폰 어플에서 직접 파일을 열기 까다롭고 방화벽 설정이 복잡합니다.
  • MinIO는 철저하게 웹 표준인 HTTP/HTTPS 프로토콜 기반의 REST API로만 소통합니다.
  • 따라서 파일 저장소가 하나의 '웹 서버'처럼 동작합니다. 파일을 올릴 때는 HTTP PUT, 파일을 가져올 때는 HTTP GET, 파일을 지울 때는 HTTP DELETE라는 웹 표준 명령어를 보냅니다.
  • 이 방식 덕분에 NiceGUI(파이썬) 프로그램이든, PHP 웹페이지든, 자바스크립트 앱이든 간에 네트워크 연결이 가능한 환경이라면 전 세계 어디서든 라이브러리나 순수 cURL 코드로 파일 저장소를 원격 제어할 수 있게 됩니다.

4. 소프트웨어 정의 스토리지 (SDS, Software-Defined Storage)
전통적인 대용량 스토리지 시스템을 구축하려면 Dell이나 EMC 같은 대기업의 수천만 원~수억 원짜리 전용 하드웨어 장비(NAS/SAN 등)를 사야 했습니다. 이를 '하드웨어 중심 스토리지'라고 부릅니다.
반면 MinIO는 소프트웨어 정의 스토리지(SDS)입니다.
  • 비싼 전용 장비가 필요 없습니다. 일반 구형 PC, 리눅스 조립 서버, 가상머신(VM) 등 하드웨어 제약 없이 어디서든 소프트웨어(컨테이너)만 실행하면 그 즉시 대기업 수준의 분산 객체 스토리지 인프라가 구축됩니다.
  • 컴퓨터 사양을 타지 않고 Go 언어로 컴파일된 단 하나의 가벼운 바이너리 파일로 돌아가기 때문에 하드웨어 독립성이 완벽하며, 클라우드 환경(도커/쿠버네티스)으로의 이식성이 극대화되어 있습니다.