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 サーバーにエイリアスを設定してください。
mc alias set destminio https://myminio.example.net minioadminuser minioadminpassword
さまざまな方法を検討する際に、さらにいくつかの「ソース」エイリアスを追加します。
データを MinIO に移行するユースケースのほとんどは、マウントされたファイルシステムまたは NFS ボリュームから始まります。この単純な構成では、 mc Mirror を使用して、ソースから宛先にデータを同期できます。 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 と一部のレガシー システムは、運用、分析、AI/ML、その他のユースケースに使用されるデータのリポジトリとして NFS を使用します。 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 にミラーリングします。この最も一般的な使用例の 1 つは、Amazon S3 バケットのミラーリングです。
次の手順に従って、アカウントに AWS S3 バケットを作成します。データを含む既存のアカウントをすでにお持ちの場合は、それを使用することもできます。
バケットを作成するか、既存のバケットにデータを追加したら、バケットへのアクセスのみを許可するアクセス キーと秘密キーを使用して新しいIAM ポリシーを作成します。生成された認証情報を次のステップのために保存します。
MinIO クライアントを使用して、S3 互換ストレージを操作できます。次に、作成した S3 バケット名とダウンロードした認証情報を使用してエイリアスを追加しましょう
mc alias set s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 --api S3v4
mc Mirror を使用して S3 から MinIO にデータをコピーする
mc mirror s3/mybucket destminio/mydata
データ量、ネットワーク速度、バケット データが保存されているリージョンからの物理的距離によっては、すべてのデータをミラーリングするのに数分以上かかる場合があります。 mc がすべてのオブジェクトのコピーを完了すると、メッセージが表示されます。
次のツール セットでは、満たす必要がある非標準のエッジ ケースのデータ移行要件の一部を満たす専用のスクリプトを作成します。その 1 つは、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 リポジトリを参照してください。また、ブログ投稿「 HDFS から 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 からデータをコピーするには 2 つの方法があります。
バケット レプリケーション: オブジェクトを作成しますが、オブジェクトがソースから削除されても宛先では削除されません。 https://min.io/docs/minio/linux/administration/bucket-replication.html
Mc ミラー: オブジェクトとバージョンを同期し、存在しないオブジェクトも削除しますhttps://min.io/docs/minio/linux/reference/minio-mc/mc-mirror.html
CephはS3と同様にS3互換のAPIを持っているため、MinIO Clientにエイリアスを追加することができます
mc alias set ceph http://ceph_host:port cephuser cephpass
その後、 mc mirror
使用してデータを MinIO クラスターにコピーできます。
mc mirror ceph/mydata destminio/mydata
--watch
フラグを指定してmc mirror
コマンドを実行して、オブジェクトを継続的に監視し、それらを MinIO に同期することをお勧めします。
データを MinIO に移行することがいかに簡単かを示す例がいくつかあります。 NFS などの古いレガシー プロトコルを使用している場合でも、S3 などの最新かつ最高のプロトコルを使用している場合でも、MinIO がサポートします。
この投稿では、ファイルシステムや、NFS、ファイルシステム、GlusterFS、HDFS、HCP、そして最後に重要な Ceph などの他のデータ ストアから移行する方法について詳しく説明しました。バックエンド MinIO は、実行されている技術スタックに関係なく、パフォーマンスが高く、耐久性があり、安全でスケーラブルでありながらシンプルなソフトウェア デファインド オブジェクト ストレージ ソリューションを提供します。
ご質問がございましたら、 Slackでお気軽にお問い合わせください。
ここでも公開されています。