MinIO — una soluzione eccellente quando è necessario organizzare facilmente e semplicemente uno storage per oggetti. Impostazione semplice, supporto per molte piattaforme e buone prestazioni hanno conquistato il cuore degli utenti. Così non abbiamo avuto altra scelta che annunciare un mese fa la compatibilità. . Inclusa una funzionalità così importante come l'Immutability. In effetti, MinIO ha un intero nella documentazione dedicata alla nostra integrazione.
Quindi oggi parleremo di come:
- Impostare MinIO molto rapidamente.
- Impostare MinIO un po' meno rapidamente, ma in modo significativamente migliore.
- Utilizzarlo come Archive Tier per un repository scalabile di Veeam SOBR.

Chi sei?
Una breve introduzione per coloro che non hanno mai avuto a che fare con MinIO. È uno storage per oggetti open source compatibile con l'API di Amazon S3. È rilasciato sotto la licenza Apache v2 e segue la filosofia del minimalismo spartano.
Cioè, non ha un'interfaccia grafica complessa con cruscotti, grafici e numerosi menu. MinIO avvia semplicemente il suo server con un unico comando, dove puoi archiviare dati utilizzando tutta la potenza dell'API S3. Tuttavia, è importante notare che questa semplicità può essere ingannevole riguardo alle risorse utilizzate. RAM e CPU vengono consumate abbondantemente, ma ne parleremo più avanti. Inoltre, va detto che sistemi come FreeNAS e TrueNAS utilizzano proprio MinIO sotto il cofano.
Concludiamo qui l'introduzione.
Impostare MinIO molto rapidamente
La configurazione è così rapida che la analizzeremo per Windows e Linux. Ci sono opzioni anche per Docker, Kubernetes, e persino per macOS, ma il concetto rimane lo stesso.
Quindi, nel caso di Windows, andiamo sul sito ufficiale e scarichiamo l'ultima versione. Lì troveremo anche le istruzioni per l'avvio:
minio.exe server F:Data
E lì troveremo il link a una guida di avvio rapido leggermente più dettagliata. . Non ha senso non seguire le istruzioni, quindi avviamo e otteniamo una risposta simile.
Ecco fatto! Lo storage è attivo e possiamo iniziare a lavorarci. Non scherzavo quando dicevo che MinIO è semplicità e funziona. Se si segue il link suggerito all'avvio, l'unica funzione disponibile è creare un bucket. E si può cominciare a scrivere dati.
Per gli amanti di Linux, tutto rimane semplice. Le istruzioni più basilari sono:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /dataIl risultato sarà indistinguibile da quello visto prima.
Configurare MinIO in modo più ragionato
Come comprendiamo, il paragrafo precedente è solo un gioco per scopi di test. E, diciamolo chiaramente, utilizziamo MinIO ampiamente per i test, il che non ci fa affatto vergognare. Certo, funziona, ma portarlo oltre i banchi di prova sarebbe imbarazzante. Quindi prendiamo in mano il file di configurazione e iniziamo a perfezionarlo.
HTTPS
Il primo passo obbligatorio verso la produzione è la crittografia. In rete esistono già mille e una guida sull'aggiunta di certificati a MinIO, ma il piano generale è questo:
- Creiamo un certificato
- Nel caso di Windows, posizioniamolo in C:Users%User%.miniocerts
- Nel caso di Linux in ${HOME}/.minio/certs
- Riavviamo il server
Il banale Let's Encrypt è noioso e descritto ovunque, quindi il nostro approccio è quello di un samurai, quindi nel caso di Windows scarichiamo , mentre nel caso di Linux verifichiamo semplicemente che abbiamo openssl installato. E facciamo un po' di magia da console:
- Creiamo le chiavi: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key
- Creiamo un certificato dalla chiave: openssl req -new -x509 -days 3650 -key private.key -out public.crt
- Copiamo private.key e public.crt nella cartella indicata sopra
- Riavviamo MinIO
Se tutto è andato bene, nello stato appariranno righe simili a queste.

Attiviamo il MinIO Erasure Coding
Prima di tutto, alcune parole sul soggetto. In parole semplici: questa è una protezione software dei dati da danni e perdite. Come un RAID, ma molto più affidabile. Se un RAID6 classico può permettersi di perdere due dischi, MinIO sopporta tranquillamente la perdita della metà. Maggiori dettagli sulla tecnologia sono descritti nella . Ma se prendiamo il nocciolo, si tratta di un'implementazione dei codici di Reed-Solomon: tutte le informazioni vengono memorizzate in blocchi di dati, ai quali sono associati i blocchi di parità. E sembra che tutto questo sia già stato fatto molte volte, ma c'è un importante 'ma': possiamo chiaramente specificare il rapporto tra blocchi di parità e blocchi di dati per gli oggetti memorizzati.
Vuoi 1:1? Certo!
Vuoi 5:2? Nessun problema!
Una funzione fondamentale se utilizzi più nodi e desideri trovare un equilibrio tra la massima sicurezza dei dati e le risorse impiegate. Di default, MinIO utilizza la formula N/2 (dove N è il numero totale di dischi), ovvero distribuisce i tuoi dati tra N/2 dischi dati e N/2 dischi di parità. In termini semplici: puoi perdere la metà dei dischi e riportare indietro i dati. Questo rapporto è definito attraverso , permettendoti di scegliere autonomamente ciò che è più importante: affidabilità o capacità.
Nel manuale viene fornito un esempio: supponiamo che tu abbia un'installazione con 16 dischi e debba salvare un file di 100 MB. Se usi le impostazioni predefinite (8 dischi per i dati, 8 per i blocchi di parità), il file occuperà praticamente il doppio, ovvero 200 MB. Se il rapporto dei dischi è 10/6, avrai bisogno di 160 MB. 14/2 — 114 MB.
Un'altra importante differenza rispetto ai RAID: in caso di guasto dei dischi, MinIO funziona a livello di oggetti, ripristinando uno dopo l'altro, senza interrompere il funzionamento dell'intero sistema. Mentre un RAID tradizionale deve ripristinare l'intero volume, il che richiederà un tempo imprevedibile. A memoria dell'autore, una scaffalatura che ha subito un guasto di due dischi ha impiegato una settimana e mezza per il ripristino. È stato piuttosto sgradevole.
E, un'osservazione importante: MinIO suddivide tutti i dischi per l'Erasure Coding in set da 4 a 16 dischi, utilizzando la dimensione massima del set possibile. E in seguito, un elemento di informazione sarà archiviato solo all'interno di un singolo set.
Tutto ciò suona molto interessante, ma quanto sarà complessa la configurazione? Diamo un'occhiata. Prendiamo il comando per avviare e semplicemente elenchiamo i dischi sui quali dobbiamo creare lo storage. Se tutto è stato eseguito correttamente, nel report vedremo il numero di dischi utilizzati. Un consiglio: non è opportuno aggiungere metà dei dischi su un unico host, poiché potrebbe portare alla perdita dei dati.
c:minio>minio.exe server F: G: H: I: J: K:
In seguito, per gestire e configurare il server MinIO avremo bisogno di un agente, che può essere scaricato tutto dal sito ufficiale.
Per non sforzare le dita ogni volta che inserisci l'indirizzo e le chiavi di accesso (e non è sicuro), è comodo creare subito un alias al primo avvio secondo la formula mc alias set <YOUR-MINIO-ENDPOINT> [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]
mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKEYOppure puoi aggiungere subito il tuo host:
mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEYDopo di che, creeremo un bucket immutabile con un bel comando
mc mb --debug -l veeamS3/immutable
mc: <DEBUG> 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: <DEBUG> 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: <DEBUG> Response Time: 253.0017ms—debug permette di vedere non solo il messaggio finale, ma anche informazioni più dettagliate.
-l significa —with-lock, che indica immutabile
Se ora torniamo all'interfaccia web, vedremo il nostro nuovo bucket.

Per ora è tutto. Abbiamo creato uno storage protetto e siamo pronti a passare all'integrazione con Veeam.
Possiamo anche assicurarci che tutto funzioni perfettamente:
c:minio>mc admin info veeamS3
● 172.17.32.52:9000
Uptime: 32 minuti
Version: 2020-08-16T18:39:38Z
Network: 1/1 OK
Drives: 6/6 OK
0 B Usati, 1 Bucket, 0 Oggetti
6 dischi online, 0 dischi offlineMinIO e Veeam
Attenzione! Se per qualche incredibile motivo desideri lavorare tramite HTTP, crea la chiave DWORD in HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication SOBRArchiveS3DisableTLS. Imposta il suo valore a 1 e ricorda che non approviamo né consigliamo tale comportamento.
Attenzione di nuovo! Se per qualche malinteso continui a utilizzare Windows 2008 R2, al tentativo di collegare MinIO a Veeam riceverai probabilmente un errore simile: Failed to establish connection to Amazon S3 endpoint. Questo si risolve con una patch ufficiale da .
Bene, le preparazioni sono terminate, apriamo l'interfaccia VBR e passiamo alla scheda Backup Infrastructure, dove invocheremo il wizard per aggiungere un nuovo repository.

Naturalmente, ci interessa lo storage Object, ovvero S3 Compatible. Nel wizard che appare, impostiamo un nome e seguiamo i passaggi per specificare l'indirizzo e l'account. Se necessario, non dimentichiamo di indicare il gateway attraverso il quale saranno instradate le richieste allo storage.

Dopo di che scegliamo il bucket, la cartella e spuntiamo la casella Make recent backups immutable. O non la spuntiamo. Ma dato che abbiamo creato uno storage con questa funzione, sarebbe un peccato non approfittarne.

Next > Finish e godiamoci il risultato.
Ora è necessario aggiungerlo al repository SOBR come Capacity Tier. Per farlo, creiamo un nuovo repository o modifichiamo quello esistente. Ci interessa il passaggio Capacity Tier.

Qui dobbiamo scegliere quale scenario utilizzeremo. Tutte le opzioni sono ben descritte in un altro , quindi non mi dilungherò a ripetere
Al termine del lavoro, verranno avviati automaticamente i compiti di copia o trasferimento dei backup. Ma se non avete intenzione di sovraccaricare subito tutti i sistemi, assicuratevi di impostare gli intervalli consentiti per il funzionamento tramite il pulsante Window.

E, naturalmente, è possibile creare compiti di Backup Copy separati. Alcuni ritengono che sia più conveniente, poiché sono un po' più trasparenti e prevedibili per l'utente che non desidera approfondire i dettagli del funzionamento del capacity tier. E di dettagli ce ne sono, quindi consiglio nuovamente l'articolo corrispondente al link sopra.
E infine — la risposta alla fatidica domanda: cosa succede se si tenta di eliminare un backup dallo storage Immutable?
Ecco la risposta:

Per oggi è tutto. In perfetta tradizione, ecco un elenco di argomenti utili sul tema:
- Manuale
- Esempio di utilizzo di .
- Guida generale alla configurazione .
- Discussione sul nostro riguardo agli storage S3.
Fonte: habr.com
