MinIO는 베어메탈, Kubernetes, Docker, Linux 등 무엇이든 실행됩니다. 조직은 MinIO를 실행하여 이러한 플랫폼 중 하나에서 데이터를 호스팅하기로 선택하고 여러 요구 사항을 충족하기 위해 여러 플랫폼에 점점 더 의존하고 있습니다. 기본 하드웨어 및 OS 선택은 주로 MinIO에 저장할 데이터의 양과 다른 클라우드 기반 소프트웨어, 성능 및 보안과의 통합을 위한 요구 사항 등 다양한 요소를 기반으로 선택됩니다.
많은 고객이 베어메탈에서 MinIO를 실행하는 반면 대다수는 Kubernetes에서 실행합니다. Kubernetes에 의해 조정되는 컨테이너화된 아키텍처에서 MinIO의 여러 인스턴스를 실행하는 것은 매우 효율적입니다. MinIO 고객은 중단 없이 새로운 지역을 출시하고 서비스를 업데이트합니다. 각 지역에서 실행되는 별도의 Kubernetes 클러스터와 최대의 탄력성과 확장성을 위한 비공유 운영 목표를 갖추고 있습니다.
고객은 다음과 같은 다양한 이유로 MinIO로 전환합니다.
이처럼 MinIO를 활용하고 설치할 수 있는 다양한 이유와 환경으로 인해 MinIO에 들어가고 싶은 데이터가 이미 저장되어 있는 데이터 소스가 많이 있다고 가정하는 것이 현실적입니다.
이 게시물에서는 S3, 로컬 파일 시스템, NFS, Azure, GCP, Hitachi Content Platform, Ceph 등에서 데이터를 가져오고 클라우드 네이티브 AI에 노출할 수 있는 MinIO 클러스터로 데이터를 가져오는 데 사용할 수 있는 몇 가지 도구를 검토해 보겠습니다. /ML 및 분석 패키지.
시작하려면 이 게시물을 진행하는 동안 몇 가지 옵션에 대해 MinIO 클라이언트 (mc)를 사용하겠습니다. 반드시 설치하고 별칭을 실행 중인 MinIO Server 로 설정하세요.
mc alias set destminio https://myminio.example.net minioadminuser minioadminpassword
다양한 방법을 진행하면서 "소스" 별칭을 더 추가할 예정입니다.
데이터를 MinIO로 마이그레이션하는 대부분의 사용 사례는 마운트된 파일 시스템 또는 NFS 볼륨으로 시작됩니다. 이 간단한 구성에서는 mc 미러를 사용하여 소스에서 대상으로 데이터를 동기화할 수 있습니다. mc mirror
데이터 동기화를 위한 스위스 군용 칼로 생각하십시오. 개체를 가져오는 소스와 상호 작용하는 가장 좋은 방법을 결정하는 데 대한 사용자의 부담이 줄어듭니다. 다양한 소스를 지원하며, 가져오는 소스에 따라 올바른 기능을 사용하여 이를 활성화합니다.
예를 들어, 물리적 하드 디스크, 가상 디스크 또는 GlusterFS 마운트와 같은 것에서 마운트되는 간단한 FileSystem부터 시작해 보겠습니다. OS에서 읽을 수 있는 파일 시스템이라면 MinIO도 읽을 수 있습니다.
filesystem kbytes used avail capacity mounted on /dev/root 6474195 2649052 3825143 41% / /dev/stand 24097 5757 18340 24% /stand /proc 0 0 0 0% /proc /dev/fd 0 0 0 0% /dev/fd /dev/_tcp 0 0 0 0% /dev/_tcp /dev/dsk/c0b0t0d0s4 10241437 4888422 5353015 48% /home /dev/dsk/c0b0t1d0sc 17422492 12267268 5155224 71% /home2
객체가 /home/mydata
에 있다고 가정하고 다음 명령을 실행하여 객체를 미러링합니다( mydata
버킷이 아직 존재하지 않는 경우 먼저 생성해야 합니다).
mc mirror /home/mydata destminio/mydata
이 명령을 사용하면 더 이상 소스 위치에 없는 개체가 대상에서 제거되거나 새 개체가 소스에 추가될 때 대상에 복사됩니다. 하지만 소스에서 수정된 기존 객체를 덮어쓰려면 --overwrite
플래그를 전달하세요.
NFS(네트워크 파일 공유)는 일반적으로 프로토콜이 네트워크 전체에서 매우 느리기 때문에 자주 액세스되지 않는 개체나 데이터를 저장하는 데 사용됩니다. 그럼에도 불구하고 많은 ETL과 일부 레거시 시스템은 NFS를 운영, 분석, AI/ML 및 추가 사용 사례에 사용할 데이터 저장소로 사용합니다. MinIO 클러스터의 확장성, 보안 및 고성능과 S3 API를 사용하여 클라우드 네이티브 애플리케이션에 서비스를 제공하는 MinIO의 기능으로 인해 이 데이터가 MinIO에 존재하는 것이 더 합리적입니다.
NFS 볼륨을 마운트하는 데 필요한 패키지를 설치합니다.
apt install nfs-common
/home
디렉토리를 /etc/exports
에 추가하십시오.
/home client_ip(rw,sync,no_root_squash,no_subtree_check)
참고: 예를 들어 Ubuntu 서버에서는 NFS 서버를 다시 시작해야 합니다.
systemctl restart nfs-kernel-server
NFS 마운트를 마운트할 디렉터리 생성
mkdir -p /nfs/home
NFS 볼륨 마운트
mount <nfs_host>:/home /nfs/home
NFS에서 MinIO로 데이터 복사
mc mirror /nfs/home destminio/nfsdata
이제 대규모 개체를 NFS에서 MinIO로 이동할 수 있습니다.
앞서 언급했듯이 mc mirror
데이터 동기화의 스위스 군용 칼입니다. 파일 시스템 외에도 S3 또는 S3 API 호환 저장소에서 객체를 복사하여 MinIO에 미러링합니다. 가장 널리 사용되는 사용 사례 중 하나는 Amazon S3 버킷을 미러링하는 것입니다.
계정에 AWS S3 버킷을 생성하려면 다음 단계를 따르세요. 데이터가 포함된 기존 계정이 이미 있는 경우 해당 계정도 사용할 수 있습니다.
버킷이 생성되거나 기존 버킷에 데이터가 추가되면 버킷에 대한 액세스만 허용하는 액세스 키와 비밀 키를 사용하여 새 IAM 정책을 생성합니다. 다음 단계를 위해 생성된 자격 증명을 저장합니다.
MinIO 클라이언트를 사용하면 모든 S3 호환 스토리지로 작업할 수 있습니다. 다음으로 다운로드한 자격 증명과 함께 생성한 S3 버킷 이름을 사용하여 별칭을 추가해 보겠습니다.
mc alias set s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 --api S3v4
mc 미러를 사용하여 S3에서 MinIO로 데이터 복사
mc mirror s3/mybucket destminio/mydata
데이터 양, 네트워크 속도, 버킷 데이터가 저장되는 지역과의 물리적 거리에 따라 모든 데이터를 미러링하는 데 몇 분 이상 걸릴 수 있습니다. mc가 모든 개체 복사를 완료하면 메시지가 표시됩니다.
다음 도구 세트를 위해 우리는 충족해야 하는 비표준 엣지 케이스 데이터 마이그레이션 요구 사항 중 일부를 충족하기 위한 전용 스크립트를 작성합니다. 그 중 하나는 HDFS 및 Hadoop에서 마이그레이션하는 것입니다. 많은 기업이 Hadoop에 너무 많은 데이터를 저장하고 있기 때문에 이를 무시하고 클라우드 네이티브 플랫폼으로 새로 시작하는 것은 불가능합니다. 해당 데이터를 MinIO와 같은 보다 현대적인(및 클라우드 기반) 무언가로 전송하고 ETL 및 기타 프로세스를 그런 방식으로 실행하는 것이 더 실현 가능합니다. 설정하는 것은 오히려 간단합니다.
다음 내용으로 core-site.xml
이라는 파일을 만듭니다.
<configuration> <property> <name>fs.s3a.path.style.access</name> <value>true</value> </property> <property> <name>fs.s3a.endpoint</name> <value>https://minio:9000</value> </property> <property> <name>fs.s3a.access.key</name> <value>minio-sample</value> </property> <property> <name>fs.s3a.secret.key</name> <value>minio-sample123</value> </property> </configuration>
다음 환경 변수를 설정하십시오.
export HDFS_SOURCE_PATH=hdfs://namenode:8080/user/minio/testdir export S3_DEST_PATH=s3a://mybucket/testdir
chmod +x 파일을 다운로드하고 실행하세요.
curl -LSs -o https://github.com/minio/hdfs-to-minio/blob/master/hdfs-to-minio.sh chmod +x hdfs-to-minio.sh ./hdfs-to-minio.sh
몇 년 동안 Hadoop에 데이터를 저장해 왔다면 이 프로세스는 몇 시간이 걸릴 수 있습니다. 프로덕션 클러스터에 있는 경우 데이터가 미러링되는 동안 Hadoop 클러스터에 대한 성능 저하의 영향을 최소화하기 위해 유지 관리 기간 중 업무 외 시간에 데이터를 마이그레이션하는 것이 좋습니다.
HDFS에서 MinIO로의 마이그레이션에 대한 자세한 내용은 이 GitHub Repo 에서 확인할 수 있으며 Migating from HDFS to Object Storage 블로그 게시물도 있습니다.
우리는 이전에 Hitachi Content Platform 과 데이터를 MinIO 클러스터로 마이그레이션하는 방법에 대한 놀라운 블로그 게시물을 작성했습니다. 자세한 내용은 블로그 게시물을 읽어보는 것이 좋지만 핵심은 다음과 같습니다.
필요한 HCP 클러스터와 입력 파일이 구성되면 마이그레이션 도구를 다운로드하고 다음 명령을 실행하여 마이그레이션 프로세스를 시작합니다.
$ hcp-to-minio migrate --namespace-url https://finance.europe.hcp.example.com --auth-token "HCP bXl1c2Vy:3f3c6784e97531774380db177774ac8d" --host-header "s3testbucket.sandbox.hcp.example.com" --data-dir /mnt/data --bucket s3testbucket --input-file /tmp/data/to-migrate.txt
마지막으로, 우리는 끝까지 코끼리를 방에 가두었습니다. 오래되었지만 Ceph는 인기 있는 데이터 저장소이며 S3 호환 API를 갖추고 있습니다. Rook과 같은 다른 Kubernetes 프로젝트에서 객체 스토리지의 백엔드로 사용됩니다. 그러나 Ceph는 설정하고 실행하기에는 다루기 힘든 거대 괴물입니다. 따라서 사람들이 자신의 데이터를 더 간단하고, 유지 관리하기 쉽고, 더 뛰어난 성능을 갖춘 데이터로 옮기고 싶어하는 것은 당연합니다.
Ceph에서 데이터를 복사하는 방법에는 두 가지가 있습니다.
버킷 복제: 객체를 생성하지만 객체가 소스에서 삭제되면 대상에서는 삭제되지 않습니다. https://min.io/docs/minio/linux/administration/bucket-replication.html
Mc 미러: 개체와 버전을 동기화합니다. 존재하지 않는 개체도 삭제합니다 . https://min.io/docs/minio/linux/reference/minio-mc/mc-mirror.html
S3와 마찬가지로 Ceph에는 S3 호환 API가 있으므로 MinIO 클라이언트에 별칭을 추가할 수 있습니다.
mc alias set ceph http://ceph_host:port cephuser cephpass
그런 다음 mc mirror
사용하여 데이터를 MinIO 클러스터에 복사할 수 있습니다.
mc mirror ceph/mydata destminio/mydata
객체를 지속적으로 모니터링하고 MinIO에 동기화하려면 --watch
플래그와 함께 mc mirror
명령을 실행하는 것이 좋습니다.
데이터를 MinIO로 마이그레이션하는 것이 얼마나 쉬운지 보여주는 몇 가지 예가 있습니다. NFS와 같은 오래된 레거시 프로토콜을 사용하든, S3와 같은 최신 및 최고의 프로토콜을 사용하든 상관없이 MinIO가 여러분을 지원해 드립니다.
이 게시물에서는 NFS, 파일 시스템, GlusterFS, HDFS, HCP 및 Ceph와 같은 파일 시스템 및 기타 데이터 저장소에서 마이그레이션하는 방법에 대해 자세히 설명했습니다. 실행되는 기술 스택에 관계없이 백엔드 MinIO는 성능이 뛰어나고 내구성이 뛰어나며 안전하고 확장 가능하면서도 간단한 소프트웨어 정의 개체 스토리지 솔루션을 제공합니다.
질문이 있으시면 언제든지 Slack 으로 문의해 주세요!
여기에도 게시되었습니다.