• MinIO는 오픈소스로 제공되는 오브젝트 스토리지 서버
  • AWS S3와 호환되는 클라우드 스토리지를 구축할 수 있는 도구
  • MinIO는 Golang으로 제작되며, 단일 실행 파일 형태로 설치 방법이 매우 간단
  • MinIO에서 데이터 보호를 위해서 Erasure Code를 사용
  • MinIO의 기본 document URL : https://docs.min.io/docs/
  • MiniO의 Console 참고 URL : https://docs.min.io/minio/baremetal/console/minio-console.html

 

MinIO를 제공하는 3가지 형태의 도구

  1. MinIO Server
    • 클라우드 스토리지 서버(오브젝트 스토리지)를 구성 가능
  1. MinIO Client
    • MinIO Server, AWS S3, GCS 등에 연결하여 파일 업로드 및 관리 등의 기능을 제공
  1. MinIO Library
    • 개발자를 위하여 Golang, Java, Python 등 SDK를 제공하는 라이브러리

 

minIO의 성능

  • minIO는 빠른 객체 스토리지
  • 읽기 속도 : 183GB/s
  • 쓰기 속도 : 171GB/s

 

minIO의 확장성

  • minIO는 간단한 확장 모델을 사용
  • 여러개의 minIO 인스턴스를 하나의 클러스터로 묶고, 클러스터들은 다시 글로벌 네임스페이스를 생성하며 병합

 

minIO기능

1. Erasure Coding

  • minIO는 어셈블리 언어로 작성된 Erasure Coding을 통해 데이터를 보호
  • minIO는 Reed-Solomon 알고리즘을 사용 → 여러 블럭으로 쪼개진 데이터 중 많은 부분이 손실되어도 복구가 가능
  • minIO는 오브젝트 수준에서 데이터 복구가 가능

 

2. Bitort Protection

  • 디스크 드라이브는 노후화된 디스크, 물리적 충격, 펌웨어의 버그 등의 문제로 데이터가 부패할 수 있지만, 사용자는 문제를 인식하지 못 할 수 있음
  • 사용자가 인식하지 못하는 데이터 손실을 minIO는 해쉬 알고리즘을 통해서 쓰고 읽을 때의 데이터가 동일한지 검증

 

minIO의 Architecture

  • minIO는 클라우드 친화적으로 설계되었으며, 경량의 컨테이너로 구동이 가능
  • 컨테이너는 40MB이하의 바이너리 파일로 매우 가벼움

 

아키텍처 개념도

  • 여러 노드에 분산된 minIO를 하나로 묶어서 사용 → 어플리케이션 수준에서는 S3 API를 이용하여 자원 접근 가능
  • 클러스터 내부에 minIO간에는 RESTful API를 통해서 통신
  • minIO는 내부적으로 3개의 Layer로 구성
    1. S3 Lyaer : 대외적인 네트워크를 처리하는 영역
    2. Object Layer : Cache, Compression, Encryption, Erasure code, Bitrot와 같이 minIO 기능들을 수행하는 영역
    3. Storage Layer : File System과 직접적으로 통신하는 영역

+ Recent posts