MinIO — doskonałe rozwiązanie, gdy trzeba łatwo i szybko zorganizować przechowywanie obiektów. Prosta konfiguracja, wiele platform i dobre osiągi przyczyniły się do jego popularności. Dlatego miesiąc temu ogłosiliśmy jego kompatybilność. . W tym ważną funkcję, jaką jest Immutability. W rzeczywistości MinIO ma cały w dokumentacji dotyczącej naszej integracji.
Dlatego dzisiaj porozmawiamy o tym, jak:
- Szybko skonfigurować MinIO.
- Nieco wolniej skonfigurować MinIO, ale znacznie lepiej.
- Użyć go jako Archive Tier dla skalowalnego repozytorium Veeam SOBR.

Kim ty jesteś?
Krótki wstęp dla tych, którzy nie mieli do czynienia z MinIO. To opensource’owe przechowywanie obiektów, zgodne z API Amazon S3. Wydawane na licencji Apache v2 i trzymające się filozofii spartańskiego minimalizmu.
Oznacza to, że nie ma rozbudowanego GUI z pulpitami nawigacyjnymi, wykresami i licznymi menu. MinIO uruchamia swój serwer jedną komendą, na którym można po prostu przechowywać dane, wykorzystując pełnię mocy API S3. Ale trzeba zauważyć, że ta prostota może być złudna, gdy chodzi o zasoby. RAM i CPU są używane doskonale, ale szczegóły będą podane później. A na marginesie, takie maszyny jak FreeNAS i TrueNAS działają na bazie MinIO.
Na tym wstęp można zakończyć.
Konfiguracja MinIO jest bardzo szybka
Jest tak szybka, że omówimy ją dla Windows i Linux. Są też opcje dla Dockera, Kubernetes i nawet macOS, ale zasada w każdym przypadku będzie ta sama.
Zatem w przypadku Windows przechodzimy na oficjalną stronę i pobieramy najnowszą wersję. Tam również znajduje się instrukcja uruchomienia:
minio.exe server F:Data
A tam także link do nieco bardziej szczegółowego . Nie ma sensu nie wierzyć w instrukcje, dlatego uruchamiamy i otrzymujemy mniej więcej taką odpowiedź.
Na tym koniec! Przechowalnia działa i można zacząć z nią pracować. Nie żartowałem, mówiąc, że MinIO to minimalizm i po prostu działa. Jeśli przejdziemy do podanej przy uruchamianiu linki, to maksymalnie dostępne tam funkcje to stworzenie kubła. I możemy zacząć pisać dane.
Dla miłośników Linuksa wszystko pozostaje równie proste. Najprostsza instrukcja:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /dataWynik będzie nieodróżnialny od tego, co widzieliśmy wcześniej.
Konfiguracja MinIO jest nieco bardziej sensowna.
Jak rozumiemy, poprzedni akapit to zabawa dla celów testowych. I, mówiąc szczerze, w testowaniu MinIO mamy bardzo szerokie doświadczenie, z czego absolutnie nie wstydzimy się przyznać. Oczywiście, działa, ale wyciąganie tego dalej niż na testowych stoiskach jest wstydliwe. Dlatego bierzemy pilnik w ręce i zaczynamy dopracowywać.
HTTPS
Pierwszy obowiązkowy krok na drodze do produkcji to szyfrowanie. W sieci jest już milion i tysiąc poradników dotyczących dodawania certyfikatów do MinIO, ale ogólny plan jest taki:
- Tworzymy certyfikat.
- W przypadku Windows umieszczamy go w C:Users%User%.miniocerts.
- W przypadku Linux w ${HOME}/.minio/certs.
- Restartujemy serwer.
Banale Let’s Encrypt — jest nudne i opisane wszędzie, więc nasza droga to droga samuraja, dlatego w przypadku Windows pobieramy , a w przypadku Linux po prostu sprawdzamy, czy mamy zainstalowany openssl. I robimy trochę konsolowej magii:
- Tworzymy klucze: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key.
- Tworzymy certyfikat z klucza: openssl req -new -x509 -days 3650 -key private.key -out public.crt.
- Kopiujemy private.key i public.crt do powyżej wskazanej folderu.
- Restartujemy MinIO.
Jeśli wszystko poszło zgodnie z planem, w statusie pojawią się mniej więcej takie linijki.

Włączamy MinIO Erasure Coding.
Najpierw kilka słów o temacie. W skrócie: to programowe zabezpieczenie danych przed uszkodzeniem i utratą. Jak RAID, tylko dużo bardziej niezawodne. Jeśli klasyczny RAID6 może sobie pozwolić na utratę dwóch dysków, to MinIO spokojnie znosi utratę połowy. Bardziej szczegółowo technologia jest opisana w Ale jeśli weźmiemy samą istotę, to to realizacja kodów Reeda-Solomona: wszystkie informacje są przechowywane w postaci bloków danych, do których przypisane są bloki parzystości. I wydaje się, że to już było robione wiele razy, tylko jest jedno ważne „ale”: możemy wyraźnie określić proporcję bloków parzystości do bloków danych dla przechowywanych obiektów.
Chcecie 1:1? Proszę bardzo!
Chcecie 5:2? Żaden problem!
Bardzo ważna funkcja, jeśli używasz jednocześnie kilku węzłów i chcesz znaleźć własny balans między maksymalnym bezpieczeństwem danych a zużytymi zasobami. Z pudełka MinIO używa formuły N/2 (gdzie N to łączna liczba dysków), tj. dzieli twoje dane między N/2 dysków danych i N/2 dysków parzystości. Przetłumaczone na ludzkie: można stracić połowę dysków i odzyskać dane. Ten stosunek jest ustawiany przez , pozwalając ci samodzielnie wybrać, co jest ważniejsze: niezawodność czy pojemność.
W przewodniku podano taki przykład: załóżmy, że masz instalację na 16 dyskach i musisz zachować plik o rozmiarze 100 MB. Jeśli używane są ustawienia domyślne (8 dysków na dane, 8 na bloki parzystości), to plik zajmie praktycznie podwójną objętość, tj. 200 MB. Jeśli stosunek dysków wyniesie 10/6, to będzie potrzebne 160 MB. 14/2 — 114 MB.
Inną ważną różnicą w porównaniu do RAID-ów jest to, że w przypadku awarii dysków MinIO będzie działać na poziomie obiektów, odbudowując je jeden po drugim, nie zatrzymując pracy całego systemu. Podczas gdy zwykły RAID będzie musiał odbudować cały wolumen, co zajmie nieprzewidywalną ilość czasu. W pamięci autora szafka dyskowa, która po awarii dwóch dysków musiała być przeliczone przez półtora tygodnia. Było to dość nieprzyjemne.
I ważna uwaga: MinIO dzieli wszystkie dyski dla Erasure Coding na zestawy od 4 do 16 dysków, używając maksymalnie możliwego rozmiaru zestawu. A w przyszłości, jeden element informacji będzie przechowywany tylko w obrębie jednego zestawu.
To wszystko brzmi świetnie, ale jak trudna będzie konfiguracja? Zobaczmy. Bierzemy polecenie do uruchomienia i po prostu wymieniamy dyski, na których należy utworzyć magazyn. Jeśli wszystko zostało zrobione poprawnie, w raporcie zobaczymy liczbę zaangażowanych dysków. I rady, że nie powinno się na jednym hoście dodawać od razu połowy dysków, gdyż to prowadzi do utraty danych.
c:minio>minio.exe server F: G: H: I: J: K:
Następnie do zarządzania i konfiguracji serwera MinIO potrzebujemy agenta, którego możemy pobrać wszystko z oficjalnej strony.
Aby nie zdrapać palców, za każdym razem wpisując adres i klucze dostępu (i to jest niebezpieczne), wygodnie jest przy pierwszym uruchomieniu od razu stworzyć alias według formuły mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]
mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKEMożna również od razu dodać twój host:
mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEYA potem stworzymy nierozwijalny bucket za pomocą ładnej komendy
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 pozwala zobaczyć nie tylko końcową wiadomość, ale również bardziej szczegółowe informacje.
-l oznacza —with-lock, co oznacza nierozwijalny
Jeśli teraz wrócimy do interfejsu webowego, nasz nowy bucket się tam pojawi.

Na ten moment to wszystko. Stworzyliśmy zabezpieczone przechowalnię i jesteśmy gotowi do integracji z Veeam.
Można również upewnić się, że wszystko działa doskonale:
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 i Veeam
Uwaga! Jeśli z jakiegoś niewiarygodnego powodu chcesz pracować przez HTTP, to w lokalizacji HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication stwórz klucz DWORD SOBRArchiveS3DisableTLS. Ustaw jego wartość na 1 i pamiętaj, że zdecydowanie nie akceptujemy tego zachowania i nikomu go nie polecamy.
Uwaga jeszcze raz! Jeśli z powodu jakiegoś nieporozumienia nadal używasz Windows 2008 R2, to podczas próby podłączenia MinIO do Veeam prawdopodobnie otrzymasz mniej więcej taki błąd: Failed to establish connection to Amazon S3 endpoint. Można to naprawić oficjalną łatką od .
Cóż, przygotowania zakończone, otwórzmy interfejs VBR i przejdźmy do zakładki Backup Infrastructure, gdzie uruchomimy kreator dodawania nowego repozytorium.

Oczywiście interesuje nas przechowywanie obiektów, a dokładniej zgodne z S3. W otwartym kreatorze podajemy nazwę, przechodzimy przez kroki z podaniem adresu i danych logowania. Jeśli jest to konieczne, nie zapominajmy podać bramy, przez którą będą kierowane żądania do przechowalni.

Następnie wybieramy bucket, folder i zaznaczamy opcję Make recent backups immutable. Lub nie zaznaczamy. Ale ponieważ stworzyliśmy przechowalnię z obsługą tej funkcji, byłoby grzechem nie skorzystać.

Next > Finish i cieszmy się wynikiem.
Teraz musimy dodać go do repozytorium SOBR jako Capacity Tier. W tym celu możemy stworzyć nowy lub edytować istniejący. Interesuje nas krok Capacity Tier.

Tutaj musimy wybrać, według jakiego scenariusza będziemy działać. Wszystkie opcje są dość dobrze opisane w innym , więc nie będę się powtarzać.
A po zakończeniu pracy kreatora zadania dotyczące kopiowania lub przenoszenia kopii zapasowych zostaną automatycznie uruchomione. Jednak jeśli nie planujesz od razu obciążać wszystkich systemów, koniecznie ustaw odpowiednie interwały pracy przyciskiem Window.

I, oczywiście, można stworzyć osobne zadania Backup Copy. Niektórzy uważają, że to nawet wygodniejsze, ponieważ są one nieco bardziej przejrzyste i przewidywalne dla użytkownika, który nie chce zagłębiać się w szczegóły działania capacity tier. A szczegółów tam jest sporo, więc jeszcze raz polecam odpowiedni artykuł pod linkiem powyżej.
I na koniec — odpowiedź na podchwytliwe pytanie: co się stanie, jeśli spróbujesz usunąć kopię zapasową z Immutable storage?
Oto odpowiedź:

Na tym to wszystko na dzisiaj. Zgodnie z tradycją, oto lista przydatnych tematów na ten temat:
- Podręcznik
- Przykład użycia .
- Ogólny przewodnik po konfiguracji .
- Wątek na naszym o S3 storages.
Źródło: habr.com
