MinIO è una soluzione eccellente quando è necessario organizzare facilmente e semplicemente uno storage oggetti. Una configurazione elementare, molte piattaforme e buone prestazioni hanno fatto il loro dovere nel campo dell'amore popolare. Quindi non avevamo altra scelta che proclamare un mese fa la compatibilità . Includendo una funzione così importante come l'Immutabilità. Infatti, MinIO ha un intero nella documentazione dedicata alla nostra integrazione.
Quindi oggi parleremo di come:
- Configurare MinIO molto rapidamente.
- Configurare MinIO un po' meno rapidamente, ma in modo significativamente migliore.
- Utilizzarlo come Archive Tier per un repository scalabile Veeam SOBR.

Che cos'è?
Una breve introduzione per chi non ha mai avuto a che fare con MinIO. Si tratta di uno storage oggetti open source compatibile con l'API Amazon S3. Rilasciato sotto licenza Apache v2, segue la filosofia del minimalismo spartano.
Ciò significa che non ha un GUI dettagliato con dashboard, grafici e numerosi menu. MinIO avvia semplicemente il suo server con un solo comando, sul quale è possibile semplicemente archiviare dati, sfruttando tutta la potenza dell'API S3. Ma va notato che questa semplicità può essere ingannevole, quando si parla delle risorse usate. La RAM e la CPU vengono utilizzate molto bene, ma di questo parleremo più avanti. E a proposito, commutatori come FreeNAS e TrueNAS utilizzano proprio MinIO sotto il cofano.
Possiamo concludere questa introduzione.
Configurare MinIO molto rapidamente
La configurazione è così rapida che la presenteremo per Windows e Linux. Ci sono opzioni anche per Docker, Kubernetes e persino per macOS, ma il concetto sarà lo stesso ovunque.
Quindi, nel caso di Windows, andiamo sul sito ufficiale e scarichiamo l'ultima versione. Qui troviamo anche le istruzioni per l'avvio:
minio.exe server F:Data
E lì troviamo anche il link a una guida un po' più dettagliata . Non ha senso non fidarsi delle istruzioni, quindi avviamo e otteniamo una risposta simile a questa.
Ecco tutto! Lo storage è attivo e possiamo iniziare a lavorarci. Non scherzavo quando dicevo che MinIO è minimalismo e funziona semplicemente. Se seguiamo il link fornito all'avvio, la funzione massima disponibile lì è quella di creare un bucket. E possiamo cominciare a scrivere dati.
Per gli amanti di Linux, tutto rimane altrettanto semplice. Istruzioni semplici:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /dataIl risultato sarà indistinguibile da quanto visto in precedenza.
La configurazione di MinIO è un po' più sensata
Come comprendiamo, il paragrafo precedente è solo un divertimento per scopi di test. E, diciamolo chiaramente, ci viene utilizzato ampiamente per testare MinIO, e non abbiamo affatto vergogna a dirlo. Certo, funziona, ma oltre ai banchi di prova è imbarazzante portare avanti qualcosa del genere. Quindi, prendiamo il limatore e iniziamo a perfezionarlo.
HTTPS
Il primo passo obbligatorio verso il produzione è la crittografia. Sono già disponibili in rete milioni e migliaia di manuali su come aggiungere certificati a MiniIO, ma il piano generale è il seguente:
- 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 ed è descritto ovunque, quindi la nostra strada è quella del 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 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 circa queste righe.

Abilitiamo MinIO Erasure Coding
Prima di tutto, due parole sull'argomento. In due parole: è una protezione software dei dati da danni e perdite. Come un raid, solo molto più affidabile. Se un classico RAID6 può permettersi di perdere due dischi, MinIO sopporta tranquillamente la perdita della metà. Maggiori dettagli sulla tecnologia sono descritti nella . Ma se prendiamo il succo stesso, si tratta di un'implementazione dei codici di Reed-Solomon: tutte le informazioni sono conservate sotto forma di blocchi di dati, ai quali sono associati blocchi di parità. E sembra che sia già stato fatto molte volte, solo che c'è un'importante "ma": possiamo specificare esplicitamente il rapporto tra blocchi di parità e blocchi di dati per gli oggetti memorizzati.
Volete 1:1? Certo!
Volete 5:2? Nessun problema!
Funzione molto importante se utilizzi più nodi e desideri trovare il tuo equilibrio tra la massima sicurezza dei dati e le risorse utilizzate. Di default, MinIO utilizza la formula N/2 (dove N è il numero totale di dischi), ovvero divide i tuoi dati tra N/2 dischi di dati e N/2 dischi di parità. Tradotto in termini semplici: si possono perdere la metà dei dischi e recuperare i dati. Questo rapporto è impostato tramite , consentendoti di decidere autonomamente cosa è più importante: affidabilità o capacità.
La guida fornisce un esempio: supponiamo di avere un'installazione su 16 dischi e di dover salvare un file di 100 MB. Se si utilizzano le impostazioni di default (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, serviranno 160 MB. 14/2 - 114 MB.
Un'altra differenza importante rispetto ai RAID: in caso di guasti nei dischi, MinIO opererà a livello di oggetti, recuperando uno alla volta senza fermare l'intero sistema. Mentre un RAID tradizionale sarà costretto a ripristinare l'intero volume, il che richiederà un tempo imprevedibile. Nella memoria dell'autore, un ripiano di dischi dopo il guasto di due dischi è andato in ristrutturazione per una settimana e mezza. È stato piuttosto sgradevole.
E, un appunto importante: MinIO divide tutti i dischi per l'Erasure Coding in set da 4 a 16 dischi, utilizzando la dimensione massima possibile per il set. E in seguito, un elemento informativo verrà memorizzato solo all'interno di un singolo set.
Tutto ciò suona fantastico, ma quanto sarà complicata la configurazione? Diamo un'occhiata. Prendiamo il comando per avviare e semplicemente elenchiamo i dischi su cui creare lo storage. Se tutto è fatto correttamente, nel report vedremo il numero di dischi utilizzati. E un consiglio: è sconsigliato aggiungere metà dei dischi a un singolo host, poiché ciò può portare a perdita di dati.
c:minio>minio.exe server F: G: H: I: J: K:
Successivamente, per gestire e configurare il server MinIO avremo bisogno di un agente, che può essere scaricato tutto dal sito ufficiale.
Per non dover digitare indirizzi e chiavi di accesso ogni volta (e inoltre è poco sicuro), è comodo creare subito un alias al primo avvio secondo la formula mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]
mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKEOppure puoi subito aggiungere il tuo host:
mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEYE poi creeremo un bucket immutabile con un bel comando.
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 permette di vedere non solo il messaggio finale, ma informazioni più dettagliate.
-l significa --with-lock, che indica immutabile.
Se ora torniamo all'interfaccia web, vedremo il nostro nuovo bucket.

Per il momento è tutto. Abbiamo creato uno storage sicuro e siamo pronti a procedere con l'integrazione con Veeam.
Possiamo anche assicurarci che tutto funzioni alla perfezione:
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 Used, 1 Bucket, 0 Objects
6 unità online, 0 offlineMinIO e Veeam
Attenzione! Se per qualche strana ragione vuoi lavorare tramite HTTP, crea una chiave DWORD in HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication SOBRArchiveS3DisableTLS. Imposta il suo valore su 1 e ricorda che non approviamo affatto questo comportamento e non lo consigliamo a nessuno.
Attenzione ancora una volta! Se a causa di qualche malinteso continui a usare Windows 2008 R2, è probabile che riceverai un errore simile a questo: Failed to establish connection to Amazon S3 endpoint. Questo può essere risolto con una patch ufficiale da .
Bene, con i preparativi è tutto, apriamo l'interfaccia VBR e andiamo alla scheda Infrastruttura di Backup, dove invocheremo la procedura guidata per aggiungere un nuovo repository.

Naturalmente, ci interessa lo Storage Object, precisamente S3 Compatible. Nella procedura guidata aperta inseriamo un nome, seguiamo i passaggi per inserire l'indirizzo e i dettagli dell'account. Se necessario, non dimentichiamo di specificare il gateway attraverso cui verranno inoltrate le richieste allo storage.

Dopo di che scegliamo il bucket, la cartella e spuntiamo la casella Rendi immutabili i backup recenti. O non la spuntiamo. Ma dato che abbiamo creato uno storage con supporto a questa funzione, sarebbe un peccato non approfittarne.

Avanti > Fine e godiamoci il risultato.
Ora bisogna aggiungerlo al repository SOBR come Capacity Tier. Per fare ciò, possiamo creare uno nuovo o modificare quello esistente. Ci interessa il passo Capacity Tier.

Qui dobbiamo scegliere quale scenario seguirà il nostro lavoro. Tutte le opzioni sono ben descritte in un altro , quindi non mi ripeterò.
Al termine del lavoro della procedura guidata, verranno automaticamente avviati i lavori di copia o trasferimento dei backup. Ma se non prevedi di caricare immediatamente tutti i sistemi, assicurati di impostare gli intervalli consentiti per il lavoro tramite il pulsante Window.

E, ovviamente, è possibile creare compiti di Backup Copy separati. Alcuni ritengono che sia più comodo, poiché sono leggermente più trasparenti e prevedibili per l'utente che non desidera approfondire i dettagli del funzionamento del Capacity Tier. E ci sono molti dettagli, quindi consiglio ancora una volta l'articolo pertinente al link sopra.
E infine – la risposta alla domanda insidiosa: cosa succede se provi a eliminare un backup dallo storage Immutable?
Ecco la risposta:

Per oggi è tutto. Come da tradizione, ecco un elenco di argomenti utili sul tema:
- Manuale
- Esempio di utilizzo .
- Manuale generale sulla configurazione .
- Discussione nel nostro sugli storage S3.
Fonte: habr.com
