MLOps/MinIO

MinIO SNSD, SNMD

ai-notes 2024. 6. 11. 18:52
반응형

들어가기전

Background

The MinIO Gateway and the related filesystem mode entered a feature freeze in July 2020. In February 2022, MinIO announced the deprecation of the MinIO Gateway. Along with the deprecation announcement, MinIO also announced that the feature would be removed in six months time.

As of RELEASE.2022-10-29T06-21-33Z, the MinIO Gateway and the related filesystem mode code have been removed. Deployments still using the standalone or filesystem MinIO modes that upgrade to MinIO Server RELEASE.2022-10-29T06-21-33Z or later receive an error when attempting to start MinIO.

 

2022-10-29 이후로 Single-Node Single-Drive에서도 EC로 작동합니다.
( 어쩐지... MinIO 도커를 SNSD로 실행하더라도 Backend type을 계속 Erasure로 잡는 이유가 있었습니다. )


MINIO 실행 방법

도커는 설치되었다는 가정하에

docker pull minio/minio:latest

minio docker 최신 이미지를 가져옵니다.

# .env
MINIO_ROOT_USER=your_id
MINIO_ROOT_PASSWORD=your_password

초기 도커 실행을 위해 env 파일에 MINIO의 계정명과 패스워드를 입력합니다.

# docker-compose.yml
version: '3.9'

services:
    minio:
          image: minio/minio:latest
          container_name: minio_main
          env_file:
            - .env
          ports:
            - "9000:9000"
            - "9001:9001"
          volumes:
            - ./data:/data
          command: server /data --console-address ":9001"

docker-compose.yml을 이용한 SNSD 실행 예제 입니다.

MinIO는 9000번 포트와 9001번 포트(WebUI)를 사용합니다.

volumes 옵션을 통해 로컬 폴더를 도커 폴더에 mount 하고, mount한 폴더를 Object Storage로 사용합니다.

 

#!/bin/bash
export $(grep -v '^#' .env | xargs)

# Docker 컨테이너를 실행합니다
docker run -d -p 9000:9000 -p 9001:9001 --name minio_main \
          -e MINIO_ROOT_USER=${MINIO_ROOT_USER} \
          -e MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} \
          -v ./data1:/data-1 \
          -v ./data2:/data-2 \
          minio/minio:latest server /data-{1...2} --console-address ":9001"

docker run을 사용한 SNMD 예제 입니다.

SNSD와 다르게 두 개의 폴더를 mount 하고, {start...end}를 통해 한번에 minio 폴더로 사용합니다.

파일 저장 방식

 예시로 두 개의 설치 파일(밀리의 서재, Rstudio)를 WebUI로 업로드 해봤습니다.

파일을 업로드 하면 위와 같이 업로드한 파일명으로 폴더가 생성됩니다.

생성된 폴더(millie-5.23.2.exe) 안에는 meta 데이터 정보와 Object ID (아마도)의 폴더가 생성됩니다.

Object ID 폴더 안에는 나뉘어진 파일이 저장되게 되는데, 위 예시에서는 SNSD 이므로 전체 파일이 하나로 저장됩니다.

(File System의 지원을 종료하였으므로, Erasure Code 방식으로 저장됩니다.)

설정에 따라 다르지만,  디스크 개수와 parity를 어떻게 설정하냐에 따라 파일이 여러개로 쪼개지기도 합니다.

 

파일을 업로드하게 되면 숨은 폴더로 .minio.sys 가 생성되고, 각종 설정값(몇번째 데이터폴더였는지 등)들이 저장됩니다.

나중에 도커를 내리고 재실행할때, 순서를 바꾸거나(./data1을 /data-2로 mount) 새로운 폴더(data3)를 추가할 경우 실행이 되지 않습니다.

  • 순서는 바꾸지 않지만, 기존에 mount한 폴더 중 하나를 빈 폴더로 mount 시키면 자동으로 복구 시스템을 실행합니다.

 

마치며..

계획이 변경되어 백업에 대한 문제도 있고, FS에 대한 내용도 MNMD로 두개의 서버와 두개의 디스크(3T, 3T)를 묶어서 관리를 하게될 것 같습니다.

또한, 찾아본 바로는 minio는 dynamic expansion이 불가능 하다는데, 용량 문제로 인하여 폴더를 추가(ex.디스크 드라이브를 추가)할 경우 기존데이터를 유지하며 어떻게 디스크를 추가할 수 있을지 방법을 찾아보는 중입니다.

반응형

'MLOps > MinIO' 카테고리의 다른 글

MinIO 부하 테스트 with NginX  (1) 2024.07.16
MinIO MNMD on Kubernetes with Prometheus  (0) 2024.07.09
Minio SNSD on Kubernetes (2/2)  (1) 2024.07.08
Minio SNSD on Kubernetes (1/2)  (0) 2024.07.04
MinIO 개요  (1) 2024.06.10