MinIO란?
MinIO는 Amazon S3와 완벽하게 호환되는 혁신적인 고성능 객체 스토리지 시스템으로, Apache License v2.0 하에 배포된 이 오픈소스 소프트웨어로 무료로 제공되며, 다양한 플랫폼에서의 유연성을 자랑합니다. Docker, macOS, Linux, Windows, FreeBSD 등에서 로컬 또는 클라우드 환경에 쉽게 배포할 수 있으며 Amazon S3 호환 API를 통해 MinIO는 데이터의 저장, 검색, 분석을 간편하게 만들어 줍니다. 분산형 아키텍처로 설계된 MinIO는 뛰어난 확장성과 함께 가벼우면서도 강력한 성능을 제공합니다. 사용자는 FS (file-system) 모드와 EC (erasure-code) 모드 중에서 선택하여, 데이터 보호 및 저장 효율성을 극대화할 수 있습니다.
MinIO의 모드
FS (File-System) 방식: FS 방식은 파일 시스템을 기반으로 기본적인 구조를 가지고 있습니다. 사용자는 MinIO 서버를 시작할 때 지정된 경로(디렉토리)에 데이터를 저장합니다. 이 방식의 주된 특징은 사용자가 서버를 통해 직접 파일을 열람하고, 필요한 경우 편집할 수 있다는 점입니다. 하지만, 이 구조는 서버가 오프라인 상태가 되면 MinIO 서버도 작동을 멈추게 되므로, 연속성이 중요한 작업에는 적합하지 않을 수 있습니다. FS 방식은 설정이 간단하고 실행이 빠르다는 장점이 있어, 단일 드라이브를 사용하는 소규모 시스템이나 테스트 환경에서 유용하게 사용됩니다.
EC (Erasure-Code) 방식: EC 방식은 데이터의 내구성을 높이기 위해 설계된 고급 스토리지 구성 방식입니다. 데이터를 여러 개의 데이터 블록과 패리티 블록으로 나누어 저장함으로써, 일부 드라이브에 문제가 발생해도 전체 데이터를 안전하게 보호할 수 있습니다. 이는 데이터의 일부가 손상되거나 유실되었을 때에도 전체 데이터를 복원할 수 있는 능력을 제공합니다. EC 방식은 특히 대규모 데이터 센터나 클라우드 스토리지 시스템에서 많이 사용되며, 데이터 보호와 저장 공간의 최적화를 위한 최선의 선택으로 간주됩니다.
FS (File-System) 방식 | EC (Erasure-Code) 방식 | |
저장방식 | 단일 저장 | 분산 저장 |
파일 일부 손실시 복구가능성 |
낮음 | 높음 |
확장성 | 부적합 소규모 시스템이나 단일 서버에 적합 |
적합 대규모 분산 시스템에 적합 |
성능요구사항 | 낮음 구조가 단순하여 성능이 더 빠를 수 있지만, 대규모 데이터 처리에는 제한적 |
높음 데이터를 분산하여 처리하기 때문에 복잡한 연산이 필요 |
관리용이성 | 설정과 관리가 간단 빠른 설정과 운영이 필요한 경우 유리 |
설정과 관리가 더 복잡 높은 가용성과 내구성 공 |
MinIO의 주요기능
S3 호환 API | 기존 S3 애플리케이션과 클라이언트를 MinIO와 즉시 사용할 수 있습니다. |
객체 스토리지 | 이미지, 동영상, 로그, 백업 등 다양한 유형의 데이터를 저장할 수 있습니다. |
고성능 | 수 페타바이트의 데이터를 처리할 수 있는 확장 가능한 아키텍처를 제공합니다. |
다양한 스토리지 백엔드 지원 | 로컬 디스크, 네트워크 스토리지, 클라우드 스토리지 등을 백엔드로 사용할 수 있습니다. |
강력한 데이터 보안 | 암호화, 접근 제어, 데이터 무결성 검사 등의 기능을 제공합니다. |
MinIO 설치
docker-compose를 통해 MinIO를 설치해보도록 하겠습니다.
아래의 코드에서 Enviroment의 값들을 채워 넣어주시고 실행시켜주세요.
version: "3"
services:
minio:
image: minio/minio
restart: unless-stopped
container_name: minio
environment:
MINIO_ROOT_USER: [ROOT_USER] #이곳을 채워주세요!
MINIO_ROOT_PASSWORD: [ROOT_PASSWORD] #이곳을 채워주세요!
MINIO_SERVER_URL: [SERVICE_URL] #이곳을 채워주세요!
ports:
- 9000:9000
- 9001:9001
volumes:
- ./data:/data
command: server /data --address ":9000" --console-address ":9001"
MinIO WebUI 접속화면
실행 후 9000번 포트(http://localhost:9000)를 통해 접속을 하면 아래와 같은 화면이 나오게 되면, 성공입니다. 이후 Bucket을 생성한 뒤 MinIO를 사용하시면 됩니다.
마치며
지금까지 MinIO에 대해 알아보고 설치하여 실제 동작까지 진행해보았습니다.
다음은 MinIO에서 생성한 Basket을 활용하는 방법을 작성하도록 하겠습니다.
오타 혹은 잘못된 내용이 있다면 부담없이 댓글로 알려주세요 :)
문장을 다듬는데 ChatGPT의 도움을 받았습니다
'Development > Docker' 카테고리의 다른 글
[Docker] 안전하고 최적화된 Dockerfile 만들기 (0) | 2024.06.17 |
---|---|
[Docker] Self-hosted Obsidian 설치 및 짧은 사용기 (1) | 2024.06.17 |
[Docker] 즉시 종료되는 docker contatiner 해결방법 (0) | 2024.06.17 |
[Docker] Docker Private Hub - Minio를 곁들인 (2) | 2024.06.17 |
[Docker] 사용하지 않는 이미지, 컨테이너, 볼륨 정리하기 (0) | 2024.06.17 |