Ubuntu 24.04 에서 MinIO (Object storage service) 설치 및 설정

리눅스/OS 일반|2024. 7. 1. 14:58
반응형

오브젝트 스토리지는 전통적인 파일 시스템처럼 마운트하여 사용하는 개념이 아니고, API 또는 시스템 명령어를 통해 파일 (객체) 을 송수신하는 개념입니다.

 

오브젝트 스토리지의 주요 특징과 사용 방법은 다음과 같습니다.

- 데이터 구조 : 오브젝트 스토리지는 데이터를 객체(object) 단위로 저장하며, 각 객체는 고유의 ID와 메타데이터를 가집니다.

- 확장성 : 수평적 확장이 용이하여 대규모 데이터를 효율적으로 관리할 수 있습니다.

- API 기반 접근 : HTTP 기반의 RESTful API를 통해 데이터를 송수신합니다.

- 메타데이터 : 각 객체에 대한 상세한 메타데이터를 저장하여 데이터 관리를 용이하게 합니다.

 

일반적으로 Object storage 서비스를 제공하기 위해 사용하는 OpenStack Swift 대신 더 간단하게 Object Storage 서비스를 제공할 수 있는 패키지로 MinIO 를 고려해 볼 수 있습니다. MinIO 는 설치와 설정이 매우 간단하고, S3 호환 API 를 제공하는 고성능 객체 스토리지 서버입니다. 우분투에서 MinIO 를 설치하고 설정하는 방법은 다음과 같습니다.

 

 

1. 설치

 

# apt -y update

# apt -y upgrade

# wget https://dl.min.io/server/minio/release/linux-amd64/minio

# chmod +x minio

# mv minio /usr/local/bin/

 

MinIO 를 실행하려면 데이터를 저장할 디렉토리를 지정해야 합니다. 예를 들어 /data 디렉토리에 데이터를 저장하도록 설정할 수 있습니다.

# mkdir /data

# minio server /data

이 명령을 실행하면 MinIO 서버가 시작되고, 웹 브라우저에서 http://<서버 IP>:9000 으로 접속할 수 있습니다.

기본적으로 MinIO 는 웹 UI 를 통해 관리할 수 있는데, 로그인 계정은 다음과 같습니다.

- RootUser: minioadmin 
- RootPass: minioadmin

 

 

2. 계정 패스워드 변경

 

데몬 실행 전에 패스워드를 미리 지정하고 실행하면 됩니다.

# export MINIO_ROOT_USER=sysdocu

# export MINIO_ROOT_PASSWORD=sysdocu1234

# minio server /data

 

 

3. 사용 도구

 

1) MinIO 웹 인터페이스 사용

웹 브라우저에서 http://<서버 IP>:9000 에 접속하여 MinIO 웹 인터페이스에 로그인하면 전반적인 관리가 가능합니다.

 

2) 클라이언트 도구 설치

MinIO 클라이언트 (mc) 는 MinIO 서버를 관리하고 파일을 업로드/다운로드하는 데 사용됩니다.

# wget https://dl.min.io/client/mc/release/linux-amd64/mc

# chmod +x mc

# mv mc /usr/local/bin/

 

 

4. Client 에서 테스트

 

1) MinIO 클라이언트 설정

MinIO 클라이언트에서 MinIO 서버를 설정합니다.

# mc alias set sysdocu http://<서버 IP>:9000 sysdocu sysdocu1234
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
Added `sysdocu` successfully.

 

2) 버킷 생성

파일을 업로드할 버킷을 생성합니다.

여기서 mybucket 은 새로 생성할 버킷의 이름입니다.

# mc mb sysdocu/mybucket

 

3) 파일 업로드

로컬 파일을 MinIO 서버에 업로드합니다.

# mc cp test.txt sysdocu/mybucket

 

aaa 디렉토리를 통째로 업로드 할때는 --recursive 옵션을 사용합니다.

# mc cp --recursive aaa sysdocu/mybucket/

 

4) 파일 다운로드

# mc cp sysdocu/mybucket/test.txt .

 

5) 파일 목록 확인

버킷에 있는 파일 목록을 확인합니다.

# mc ls sysdocu/mybucket

 

 

5. 공유 설정

 

위와 같이 업로드한 test.html 파일은 접근을 해보면 AccessDenied 메세지가 출력되는 것을 알 수 있습니다.

http://<서버 IP>:9000/mybucket/test.txt

이는 기본값이 private 으로 되어 있기 때문인데, bucket 에 해당되는 모든 파일을 public 처리하거나 특정 파일 하나에 대해서만 public 처리할 수 있습니다.

 

1) bucket 전체 public / private 처리

버킷 전체 공개

# mc anonymous set public sysdocu/mybucket

버킷 전체 비공개

# mc anonymous set private sysdocu/mybucket

 

2) 단일 파일 public / private 처리

하나의 파일 공개

# mc anonymous set public sysdocu/mybucket/test.txt

하나의 파일 비공개

# mc anonymous set private sysdocu/mybucket/test.txt

 

3) 특정 디렉토리 (aaa) 내 파일들 public / private 처리

for file in $(mc ls --recursive sysdocu/mybucket/aaa/ | awk '{print $5}'); do
  mc anonymous set public sysdocu/mybucket/aaa/$file
done

 

private 처리할 경우 public 위치에 private 문자로 치환하여 사용하면 됩니다.

브라우저에서 접근하여 확인하고자 할 경우 MinIO 서버이름 (sysdocu) 은 제외하고 아래와 같이 접근하면 됩니다.

http://<서버 IP>:9000/mybucket/aaa/test.txt

 

반응형

댓글()