MinIO работает на чем угодно — на «голом железе», Kubernetes, Docker, Linux и т. д. Организации предпочитают использовать MinIO для размещения своих данных на любой из этих платформ и все чаще полагаются на несколько платформ для удовлетворения множества требований. Выбор базового оборудования и ОС основан на ряде факторов, в первую очередь на объеме данных, которые будут храниться в MinIO, а также на требованиях к интеграции с другим облачным программным обеспечением, производительности и безопасности.
Многие из наших клиентов используют MinIO на «голом железе», а большинство — на Kubernetes. Запуск нескольких экземпляров MinIO в контейнерной архитектуре, управляемой Kubernetes, чрезвычайно эффективен. Клиенты MinIO развертывают новые регионы и обновляют сервисы без сбоев, при этом в каждом регионе работают отдельные кластеры Kubernetes, а операционная цель — отсутствие общего доступа для максимальной отказоустойчивости и масштабируемости.
Клиенты переходят на MinIO по разным причинам, в том числе:
Из-за этих разнообразных причин и сред, в которых можно использовать и устанавливать MinIO, вполне реально предположить, что существует ряд источников данных, в которых уже хранятся данные, которые вы хотели бы перенести в MinIO.
В этом посте давайте рассмотрим некоторые инструменты, доступные для получения данных из S3, локальной файловой системы, NFS, Azure, GCP, Hitachi Content Platform, Ceph и других, а также в кластеры MinIO, где они могут быть доступны облачному искусственному интеллекту. /ML и пакеты аналитики.
Для начала в ходе этой статьи мы будем использовать клиент MinIO (mc) для некоторых из этих опций. Обязательно установите его и установите псевдоним для вашего работающего сервера MinIO .
mc alias set destminio https://myminio.example.net minioadminuser minioadminpassword
Мы добавим еще несколько псевдонимов «исходников» по мере изучения различных методов.
Большинство вариантов использования переноса данных в MinIO начинаются с смонтированной файловой системы или тома NFS. В этой простой конфигурации вы можете использовать зеркало mc для синхронизации данных из источника в пункт назначения. Думайте о mc mirror
как о швейцарском армейском ноже для синхронизации данных. С пользователя снимается бремя определения наилучшего способа взаимодействия с источником, из которого вы извлекаете объекты. Он поддерживает несколько источников, и в зависимости от источника, из которого вы извлекаете, для их включения используются правильные функции.
Например, давайте начнем с простой файловой системы, которая монтируется с физического жесткого диска, виртуального диска или даже с чего-то вроде монтирования GlusterFS. Пока это файловая система, читаемая ОС, 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 в качестве хранилища данных, которые будут использоваться для операций, аналитики, искусственного интеллекта и машинного обучения и дополнительных вариантов использования. Было бы разумнее хранить эти данные в MinIO из-за масштабируемости, безопасности и высокой производительности кластера MinIO в сочетании со способностью MinIO предоставлять услуги облачным приложениям с использованием API S3.
Установите необходимые пакеты для монтирования тома NFS.
apt install nfs-common
Обязательно добавьте каталог /home
в /etc/exports
/home client_ip(rw,sync,no_root_squash,no_subtree_check)
Примечание. Обязательно перезапустите сервер NFS, например, на серверах Ubuntu.
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 с ключом доступа и секретным ключом, разрешающим доступ только к нашей корзине. Сохраните сгенерированные учетные данные для следующего шага.
Мы можем работать с любым хранилищем, совместимым с S3, используя клиент MinIO. Далее давайте добавим псевдоним, используя имя корзины 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 , а также у нас есть запись в блоге «Миграция с HDFS на объектное хранилище ».
Ранее мы написали замечательную публикацию в блоге о платформе контента Hitachi и о том, как перенести ваши данные в кластер 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 является популярным хранилищем данных и имеет API, совместимый с S3. Он используется другими проектами Kubernetes в качестве бэкэнда для хранения объектов, например Rook. 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 имеет API-интерфейс, совместимый с S3, вы можете добавить псевдоним к клиенту MinIO.
mc alias set ceph http://ceph_host:port cephuser cephpass
Затем вы можете использовать mc mirror
для копирования данных в кластер MinIO.
mc mirror ceph/mydata destminio/mydata
Мы предлагаем вам запустить команду mc mirror
с флагом --watch
, чтобы постоянно отслеживать объекты и синхронизировать их с MinIO.
Вот лишь несколько примеров, показывающих, насколько легко перенести данные в MinIO. Неважно, используете ли вы старые устаревшие протоколы, такие как NFS, или новейшие и лучшие, такие как S3, MinIO всегда готов поддержать вас.
В этом посте мы подробно рассмотрели, как мигрировать из файловых систем и других хранилищ данных, таких как NFS, файловая система, GlusterFS, HDFS, HCP и, наконец, что не менее важно, Ceph. Независимо от технологического стека, серверная часть MinIO обеспечивает производительное, надежное, безопасное и масштабируемое, но простое программно-определяемое объектное решение для хранения данных.
Если у вас есть какие-либо вопросы, свяжитесь с нами в Slack !
Также опубликовано здесь .