MinIO — отличное решение, когда необходимо легко и просто организовать объектное хранилище. Элементарная настройка, множество платформ и хорошая производительность сделали свое дело в народной любви. Так что у нас не было другого выбора, как месяц назад объявить о совместимости. . Включая такую важную функцию, как Immutability. На самом деле, у MinIO есть целый в документации, посвященной нашей интеграции.
Поэтому сегодня мы поговорим о том, как:
- Быстро настроить MinIO.
- Настроить MinIO чуть менее быстро, но значительно качественней.
- Использовать его в качестве Archive Tier для масштабируемого репозитория Veeam SOBR.

Что ты такое?
Краткое введение для тех, кто не сталкивался с MinIO. Это открытое объектное хранилище, совместимое с Amazon S3 API. Выпускается под лицензией Apache v2 и придерживается философии спартанского минимализма.
То есть у него нет развесистого интерфейса с дашбордами, графиками и многочисленными меню. MinIO просто запускает свой сервер одной командой, на котором можно хранить данные, используя всю мощь S3 API. Но стоит заметить, что эта простота может быть обманчива, когда речь заходит о ресурсах. RAM и CPU потребляются на отлично, но о причинах будет сказано ниже. И, к слову сказать, такие комбайны, как FreeNAS и TrueNAS под капотом используют именно MinIO.
На этом введение можно закончить.
Быстрая настройка MinIO
Его настройка настолько быстра, что мы рассмотрим ее для Windows и Linux. Есть варианты и для Docker, и для Kubernetes, и даже для macOS, но смысл везде будет одинаковый.
Итак, в случае Windows идем на официальный сайт и скачиваем последнюю версию. Там же наблюдаем инструкцию по запуску:
minio.exe server F:Data
И там же ссылка на чуть более развернутый . Инструкциям стоит доверять, поэтому запускаем и получаем примерно такой ответ.
На этом всё! Хранилище работает, и можно начинать с ним работать. Я не шутил, когда говорил, что MinIO — это минимализм и просто работает. Если пройти по предложенной при запуске ссылке, то максимум доступных там функций — это создание бакета. И можно начинать записывать данные.
Для любителей Linux всё остаётся не менее простым. Простейшая инструкция:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /dataРезултатът ще бъде неразличим от предишния.
Настройката на MinIO е малко по-смислена.
Както разбираме, предишният абзац е просто игра за тестови цели. И, да бъдем честни, именно за тестване на MinIO, ние го използваме доста широко и нямаме никакъв срам да го признаем. Разбира се, то работи, но е срамно да го изнесем извън тестовите стендове. Затова взимаме шлайф и започваме да го дообработваме.
HTTPS
Първата задължителна стъпка по пътя към продукция е шифроването. В мрежата вече има милион и хиляда наръчника за добавяне на сертификати към MinIO, но основният план изглежда така:
- Създаваме сертификат.
- В случай на Windows, поставяме го в C:Users%User%.miniocerts.
- В случай на Linux, в ${HOME}/.minio/certs.
- Рестартираме сървъра.
Обикновеният Let’s Encrypt е скучен и описан навсякъде, затова нашият маршрут е като на самурай, поради което в случай на Windows, изтегляме , а в случай на Linux просто проверяваме дали имаме инсталиран openssl. И правим малко конзолна магия:
- Създаваме ключове: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key.
- Създаваме сертификат по ключа: openssl req -new -x509 -days 3650 -key private.key -out public.crt.
- Копираме private.key и public.crt в папката, посочена по-горе.
- Рестартираме MinIO.
Ако всичко е минало както трябва, в статуса ще се появят приблизително тези редове.

Активираме MinIO Erasure Coding.
Първо, няколко думи за темата. С две думи: това е софтуерна защита на данните от повреждане и загуба. Като RAID, само че много по-надежден. Докато класическият RAID6 може да си позволи да загуби два диска, MinIO спокойно преживява загубата на половината. По-подробно технологията е описана в . Но ако вземем същността, това е реализация на кодовете на Рийд-Шоломон: всяка информация се съхранява под формата на блокове данни, за които има блокове паритет. И сякаш всичко това вече е било направено много пъти, просто има важно 'но': можем изрично да указваме съотношението на блоковете паритет към блоковете данни за съхраняваните обекти.
Искате 1:1? Моля!
Искате 5:2? Няма проблем!
Много важна функция, ако използвате повече от един нод и искате да намерите собствен баланс между максималната безопасност на данните и ресурсите, които се изразходват. По подразбиране MinIO използва формула N/2 (където N е общият брой дискове), т.е. разпределя вашите данни между N/2 дискове за данни и N/2 дискове за паритет. Преведено на човешки език: можете да загубите половината от дисковете и да възстановите данните. Това съотношение се задава чрез , позволявайки ви сами да изберете кое е по-важно: надеждност или капацитет.
В ръководството е приведен такъв пример: да предположим, че имате инсталация на 16 диска и е необходимо да запазите файл с размер 100 Мб. Ако се използват настройките по подразбиране (8 диска за данни, 8 за блокове паритет), файлът в крайна сметка ще заеме практически двойна обем, т.е. 200 Мб. Ако съотношението на дисковете бъде 10/6, ще са необходими 160 Мб. 14/2 — 114 Мб.
Друго важно отличие от рейдовете: в случай на отпадане на дискове, MinIO ще работи на ниво обекти, възстановявайки един по един, без да спира работата на цялата система. Докато обикновен рейд ще е принуден да възстанови целия volume, което ще отнеме непредсказуемо количество време. Спомням си, че в авторовата памет, дискова рафт, която след отпадане на два диска, отне на преизчисление една и половина седмици. Беше доста неприятно.
И, важно забележка: MinIO разпределя всички дискове за Erasure Coding на комплекти от 4 до 16 диска, използвайки максимално възможния размер на комплекта. Впоследствие един елемент информация ще се съхранява само в рамките на един комплект.
Всичко това звучи много добре, но колко сложно ще бъде настройването? Нека да погледнем. Взимаме команда за стартиране и просто изброяваме дисковете, на които трябва да създадем хранилище. Ако всичко е направено правилно, в отчета ще видим количеството използвани дискове. И съвет, че е недопустимо на един хост да добавяте веднага половината от дисковете, защото това е свързано със загуба на данни.
c:minio>minio.exe server F: G: H: I: J: K:
След това, за управлението и настройването на MinIO сървъра ни е необходим агент, който може да изтеглите от официалния сайт.
За да не унищожавате пръстите си, всеки път набирайки адреса и ключовете за достъп (и това не е безопасно), удобно е при първоначалното стартиране веднага да създадете псевдоним по формулата mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]
mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKEИли можете веднага да добавите вашия хост:
mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEYПосле това ще създадем immutable bucket с красивата команда
mc mb --debug -l veeamS3/immutable
mc: PUT /immutable/ HTTP/1.1
Host: 172.17.32.52:9000
User-Agent: MinIO (windows; amd64) minio-go/v7.0.5 mc/2020-08-08T02:33:58Z
Content-Length: 0
Authorization: AWS4-HMAC-SHA256 Credential=minioadmin/20200819/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-bucket-object-lock-enabled;x-amz-content-sha256;x-amz-date, Signature=**REDACTED**
X-Amz-Bucket-Object-Lock-Enabled: true
X-Amz-Content-Sha256: UNSIGNED-PAYLOAD
X-Amz-Date: 20200819T092241Z
Accept-Encoding: gzip
mc: HTTP/1.1 200 OK
Content-Length: 0
Accept-Ranges: bytes
Content-Security-Policy: block-all-mixed-content
Date: Wed, 19 Aug 2020 09:22:42 GMT
Location: /immutable
Server: MinIO/RELEASE.2020-08-16T18-39-38Z
Vary: Origin
X-Amz-Request-Id: 162CA0F9A3A3AEA0
X-Xss-Protection: 1; mode=block
mc: Response Time: 253.0017ms—debug позволява да виждате не просто заключителното съобщение, а по-разширена информация.
-l което означава —with-lock, което значи immutable
Ако сега се върнем в уеб интерфейса, ще видим нашия нов bucket.

В момента това е всичко. Създадохме защитено хранилище и сме готови да преминем към интеграцията с Veeam.
Може да се уверим, че всичко работи отлично:
c:minio>mc admin info veeamS3
● 172.17.32.52:9000
Uptime: 32 minutes
Version: 2020-08-16T18:39:38Z
Network: 1/1 OK
Drives: 6/6 OK
0 B Used, 1 Bucket, 0 Objects
6 drives online, 0 drives offlineMinIO и Veeam
Внимание! Ако по някакви невероятни причини искате да работите през HTTP, създайте DWORD ключ в HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication SOBRArchiveS3DisableTLS. Задайте неговата стойност на 1 и помнете, че такова поведение решително не одобряваме и никому не го препоръчваме.
Внимание отново! Ако по някакво недоразумение продължавате да използвате Windows 2008 R2, при опит за свързване на MinIO с Veeam, вероятно ще получите подобна грешка: Failed to establish connection to Amazon S3 endpoint. Решава се с официален патч от .
Така, приготовленията приключиха, нека отворим интерфейса на VBR и преминем на таба Backup Infrastructure, където ще извикаме съветника за добавяне на нов репозиторий.

Разбира се, интересува ни Object storage, а именно S3 Compatible. В отворилия се wizard задаваме име, преминаваме през стъпките за указване на адреса и учетната запис. Ако е необходимо, не забравяйте да зададете gateway, през който ще се проксистрират заявките към хранилището.

След това избираме bucket, папка и поставяме отметка Make recent backups immutable. Или не поставяме. Но тъй като създадохме хранилище с поддръжка на тази функция, е цялостно да не се възползваме.

Next > Finish и се наслаждавайте на резултата.
Сега трябва да го добавим към репозитория SOBR като Capacity Tier. За целта или създаваме нов, или редактираме съществуващия. Интересува ни стъпката Capacity Tier.

Тук трябва да изберем по какъв сценарий ще работим. Всички варианти са добре описани в друг , така че няма да се повтарям.
А след завършване на работния процес автоматично ще бъдат стартирани задачи за копиране или преместване на бекъпи. Но ако не планирате веднага да натоварите всички системи, задължително задайте допустимите интервали за работа чрез бутона Window.

И, естествено, можете да направите отделни задания за Backup Copy. Някои смятат, че така е дори по-удобно, тъй като те са по-прозрачни и предсказуеми за потребителя, който не желае да се задълбочава в подробностите на работата на capacity tier. А подробности там достатъчно, така че отново препоръчвам съответната статия по линка по-горе.
И накрая - отговор на коварния въпрос: какво ще стане, ако все пак се опитате да изтриете бекъп от Immutable хранилището?
Ето отговорът:

Това е всичко за днес. По установена традиция, ето списък с полезни теми по въпроса:
- Мануал
- Пример за използване .
- Общото ръководство за настройка .
- Тема в нашия за S3 хранилища.
Източник: habr.com
