오브젝트 스토리지는 전통적인 파일 시스템처럼 마운트하여 사용하는 개념이 아니고, API 또는 시스템 명령어를 통해 파일 (객체) 을 송수신하는 개념입니다.
오브젝트 스토리지의 주요 특징과 사용 방법은 다음과 같습니다.
– 데이터 구조 : 오브젝트 스토리지는 데이터를 객체(object) 단위로 저장하며, 각 객체는 고유의 ID와 메타데이터를 가집니다.
– 확장성 : 수평적 확장이 용이하여 대규모 데이터를 효율적으로 관리할 수 있습니다.
– API 기반 접근 : HTTP 기반의 RESTful API를 통해 데이터를 송수신합니다.
– 메타데이터 : 각 객체에 대한 상세한 메타데이터를 저장하여 데이터 관리를 용이하게 합니다.
일반적으로 Object storage 서비스를 제공하기 위해 사용하는 OpenStack Swift 대신 더 간단하게 Object Storage 서비스를 제공할 수 있는 패키지로 MinIO 를 고려해 볼 수 있습니다. MinIO 는 설치와 설정이 매우 간단하고, S3 호환 API 를 제공하는 고성능 객체 스토리지 서버입니다. 우분투에서 MinIO 를 설치하고 설정하는 방법은 다음과 같습니다.
# mc alias set test http://<서버 IP>:9000 test test1234
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 `test` successfully.
2) 버킷 생성
파일을 업로드할 버킷을 생성합니다.
여기서 mybucket 은 새로 생성할 버킷의 이름입니다.
# mc mb test/mybucket
3) 파일 업로드
로컬 파일을 MinIO 서버에 업로드합니다.
# mc cp test.txt test/mybucket
aaa 디렉토리를 통째로 업로드 할때는 –recursive 옵션을 사용합니다.
# mc cp –recursive aaa test/mybucket/
4) 파일 다운로드
# mc cp test/mybucket/test.txt .
5) 파일 목록 확인
버킷에 있는 파일 목록을 확인합니다.
# mc ls test/mybucket
5. 공유 설정
위와 같이 업로드한 test.html 파일은 접근을 해보면 AccessDenied 메세지가 출력되는 것을 알 수 있습니다.
http://<서버 IP>:9000/mybucket/test.txt
이는 기본값이 private 으로 되어 있기 때문인데, bucket 에 해당되는 모든 파일을 public 처리하거나 특정 파일 하나에 대해서만 public 처리할 수 있습니다.
1) bucket 전체 public / private 처리
버킷 전체 공개
# mc anonymous set public test/mybucket
버킷 전체 비공개
# mc anonymous set private test/mybucket
2) 단일 파일 public / private 처리
하나의 파일 공개
# mc anonymous set public test/mybucket/test.txt
하나의 파일 비공개
# mc anonymous set private test/mybucket/test.txt
3) 특정 디렉토리 (aaa) 내 파일들 public / private 처리
for file in $(mc ls –recursive test/mybucket/aaa/ | awk ‘{print $5}’); do
mc anonymous set public test/mybucket/aaa/$file
done
private 처리할 경우 public 위치에 private 문자로 치환하여 사용하면 됩니다.
브라우저에서 접근하여 확인하고자 할 경우 MinIO 서버이름 (test) 은 제외하고 아래와 같이 접근하면 됩니다.
http://<서버 IP>:9000/mybucket/aaa/test.txt
Debian 12.x 에서 MinIO (Object storage service) 를 파일시스템처럼 마운트하기
원래 Object storage 는 파일시스템에 마운트 하는 형식이 아닌, API 또는 시스템 명령어를 통해 파일 (객체) 을 송수신하는 개념입니다.
그러나 S3FS-Fuse 를 설치하면 NFS 나 SMB 마운트한 것처럼 파일시스템에 마운트하여 파일 저장 및 읽기가 가능해집니다.
본 테스트는 Debian 12.x 환경에서 진행하였으나 Ubuntu 에서도 동일한 명령 사용이 가능합니다.