놀랍도록 빠르고, 당장 구현 가능한 분산 스토리지 MinIO
오픈소스로 제공되는 분산 객체 스토리지 (S3 API 호환)
- Ubuntu 18.04+
- Redhat 8+
- 환경 : VM
- CPU : 4Core
- Memory : 8GB
- Disk : (OS)30GB / 10GB / 10GB / 10GB / 10GB
- OS : CentOS 8.x
모든 디스크는 MinIO에서 권장하고 있는 xfs 파티션으로 포맷합니다.
$ mkfs.xfs /dev/sdb -L DISK1
$ mkfs.xfs /dev/sdc -L DISK2
$ mkfs.xfs /dev/sdd -L DISK3
$ mkfs.xfs /dev/sde -L DISK4
fstab에 마운트 내용 추가
$ vi /etc/fstab
LABEL=DISK1    /mnt/disk1   xfs    defaults,noatime    0    2
LABEL=DISK2    /mnt/disk2   xfs    defaults,noatime    0    2
LABEL=DISK3    /mnt/disk3   xfs    defaults,noatime    0    2
LABEL=DISK4    /mnt/disk4   xfs    defaults,noatime    0    2
$ yum install https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20221008201100.0.0.x86_64.rpm
$ groupadd -r minio-user
$ useradd -M -r -g minio-user minio-user
$ chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4
기본 설정 사용자는 minio-user로 되어 있습니다. 실 서비스에서는 꼭 다른 사용자와 그룹을 지정하여 사용해야 합니다. 기본 사용자가 아닌 다른 사용자 지정은 /etc/systemd/system/minio.servier 파일의 “User=”,”Group=” 내용을 수정하여 적용하시면 됩니다.
/etc/default/minio 파일 생성 및 내용 추가
MINIO_ROOT_USER=itmayaadmin
MINIO_ROOT_PASSWORD=itmayaadmin
MINIO_VOLUMES="/mnt/disk{1...4}"
$ firewall-cmd --permanent --zone=public --add-port=9000/tcp
$ firewall-cmd --permanent --zone=public --add-port=xxxxx/tcp -> 매번 변경됨 (journalctl 에서 확인)
$ firewall-cmd --reload
$ systemctl enable minio.service
$ systemctl start minio.service
상태 확인
$ journalctl -f -u minio.service
서비스가 시작되면 웹브라우저에서 IP:9000로 접근하여 GUI 툴에서 버킷을 생성하거나 사용자를 관리할 수 있습니다.
$ yum install https://dl.min.io/client/mc/release/linux-amd64/mcli-20221009211059.0.0.x86_64.rpm
Host 등록
$ mcli config host add itmayas3/ http://MINIO-SERVER MYUSER MYPASSWORD
등록된 Host 확인
$ mcli config host ls
등록된 Host 삭제
$ mcli config host rm itmayas3/
버킷 생성
$ mcli mb itmayas3/testbk1/
$ mcli mb itmayas3/testbk2/yyk1/
버킷 목록 확인
$ mcli ls itmayas3/
$ mcli ls itmayas3/testbk1/
$ mcli ls itmayas3/testbk2/
정책 변경 (버킷 생성시 기본 정책은 Private) -> 모두 사용가능하도록 Public 으로 변경할 수 있습니다.
$ mcli policy set public itmayas3/testbk1/
버킷 삭제
$ mcli rb itmayas3/testbk1
$ mcli rb --force itmayas3/testbk1
파일/폴더 업로드
$ mcli cp /forder/filename itmayas3/testbk1/filename
$ mcli cp --recursive /forder/ itmayas3/testbk1/
파일/폴더 다운로드
$ mcli cp itmayas3/testbk1/filename /forder/filename
$ mcli cp itmayas3/testbk1/forder/ /forder/
파일/폴더 삭제
$ mcli rm itmayas3/testbk1/filename
$ mcli rm --recursive itmayas3/testbk1/forder
$ mcli rm --recursive --force itmayas3/testbk1/forder