MinIO es una excelente solución cuando necesitas organizar un almacenamiento de objetos de manera sencilla y rápida. Su configuración elemental, la compatibilidad con múltiples plataformas y un buen rendimiento han contribuido a su popularidad. Por lo tanto, no tuvimos otra opción que declarar hace un mes la compatibilidad. . Incluyendo funciones importantes como la Inmutabilidad. De hecho, MinIO ofrece un en la documentación dedicada a nuestra integración.
Así que hoy hablaremos sobre cómo:
- Configurar MinIO de forma muy rápida.
- Configurar MinIO algo menos rápido, pero de una manera significativamente mejor.
- Utilizarlo como Archive Tier para un repositorio escalable de Veeam SOBR.

¿Qué eres?
Una breve introducción para aquellos que no están familiarizados con MinIO. Es un almacenamiento de objetos de código abierto compatible con la API de Amazon S3. Se lanza bajo la licencia Apache v2 y sigue la filosofía del minimalismo espartano.
Es decir, no tiene una GUI extensa con paneles, gráficos y numerosos menús. MinIO simplemente inicia su servidor con un solo comando, donde puedes almacenar datos utilizando toda la potencia de la API de S3. Pero hay que señalar que esta simplicidad puede ser engañosa cuando se trata de los recursos utilizados. La RAM y el CPU se consumen muy bien, pero las razones se explicarán más adelante. Y, de hecho, soluciones como FreeNAS y TrueNAS utilizan precisamente MinIO en su núcleo.
Con esto, podemos finalizar la introducción.
La configuración de MinIO es muy rápida.
Su configuración es tan rápida que la analizaremos para Windows y Linux. Hay opciones también para Docker, Kubernetes e incluso para macOS, pero el sentido en todos los casos será el mismo.
Entonces, en el caso de Windows, vamos al sitio oficial y descargamos la última versión. Allí también encontramos instrucciones para el lanzamiento:
minio.exe server F:Data
Y allí también un enlace a un . No tiene sentido no seguir las instrucciones, así que iniciamos y obtenemos aproximadamente esta respuesta.
¡Eso es todo! El almacenamiento funciona y puedes empezar a trabajar con él. No bromeaba cuando decía que MinIO es minimalismo y simplemente funciona. Si sigues el enlace proporcionado al iniciarlo, la máxima funcionalidad disponible allí es crear un bucket. Y puedes empezar a escribir datos.
Para los amantes de Linux, todo sigue siendo igual de simple. Instrucciones sencillas:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /dataEl resultado será indistinguible de lo visto anteriormente.
La configuración de MinIO es un poco más lógica
Como entendemos, el párrafo anterior es solo una broma para fines de prueba. Y, seamos sinceros, utilizamos MinIO de manera bastante amplia para pruebas, lo que no nos da vergüenza admitir. Por supuesto, funciona, pero es vergonzoso usarlo fuera de un entorno de prueba. Así que tomamos el esmeril y comenzamos a perfeccionarlo.
HTTPS
El primer paso obligatorio hacia la producción es la encriptación. Ya hay millones de manuales en la red sobre cómo agregar certificados a MinIO, pero su plan general es el siguiente:
- Creando un certificado
- En caso de Windows, lo colocamos en C:Users%User%.miniocerts
- En caso de Linux en ${HOME}/.minio/certs
- Reiniciamos el servidor
El trivial Let’s Encrypt es aburrido y está descrito en todas partes, así que nuestro camino es el camino del samurái, por lo que en caso de Windows descargamos , y en caso de Linux solo comprobamos que tenemos openssl instalado. Y hacemos un poco de magia en la consola:
- Creamos claves: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key
- Creamos el certificado con la clave: openssl req -new -x509 -days 3650 -key private.key -out public.crt
- Copiamos private.key y public.crt en la carpeta mencionada anteriormente
- Reiniciamos MinIO
Si todo ha salido bien, aparecerán líneas como estas en el estado.

Activamos la codificación de borrado de MinIO
Primero, algunas palabras sobre el tema. En pocas palabras: esto es una protección de software de los datos contra daños y pérdidas. Como RAID, solo que mucho más confiable. Si un RAID 6 clásico puede permitirse perder dos discos, MinIO puede soportar la pérdida de la mitad. La tecnología se describe con más detalle en . Pero si tomamos la esencia, es una implementación de los códigos de Reed-Solomon: toda la información se almacena en bloques de datos, a los que se añaden bloques de paridad. Y parece que esto ya se había hecho muchas veces, solo que hay un importante 'pero': podemos especificar claramente la proporción de bloques de paridad a bloques de datos para los objetos almacenados.
¿Quieres 1:1? ¡Por supuesto!
¿Quieres 5:2? ¡Sin problema!
Una función muy importante si utiliza varias nodos a la vez y desea encontrar su propio equilibrio entre la máxima seguridad de los datos y los recursos utilizados. Por defecto, MinIO utiliza la fórmula N/2 (donde N es el número total de discos), es decir, divide sus datos entre N/2 discos de datos y N/2 discos de paridad. Traduciendo al lenguaje humano: se pueden perder la mitad de los discos y recuperar los datos. Esta relación se establece a través de , lo que le permite elegir lo que es más importante: la fiabilidad o la capacidad.
En la guía se presenta un ejemplo: supongamos que tiene una instalación con 16 discos y necesita almacenar un archivo de 100 MB. Si se utilizan las configuraciones predeterminadas (8 discos para datos, 8 para bloques de paridad), el archivo ocupará prácticamente el doble, es decir, 200 MB. Si la relación de discos es 10/6, necesitará 160 MB. 14/2 — 114 MB.
Otra importante diferencia con los RAID: en caso de fallo de discos, MinIO funcionará a nivel de objetos, recuperándolos uno por uno, sin detener el funcionamiento de todo el sistema. Mientras que un RAID convencional tendrá que restaurar todo el volumen, lo que tomará un tiempo impredecible. En la memoria del autor, una estantería de discos que perdió dos discos tuvo que recalcular durante una semana y media. Fue bastante desagradable.
Y, un punto importante: MinIO divide todos los discos para Erasure Coding en conjuntos de entre 4 y 16 discos, utilizando el tamaño máximo posible del conjunto. Y en adelante, un elemento de información se almacenará solo dentro de un conjunto.
Todo esto suena muy bien, pero ¿cuán complicado será la configuración? Vamos a verlo. Tomamos el comando para iniciar y simplemente enumeramos los discos en los que se debe crear el almacenamiento. Si todo se hizo correctamente, en el informe veremos la cantidad de discos utilizados. Y el consejo es que no es prudente agregar la mitad de los discos en un solo host, porque esto puede llevar a la pérdida de datos.
c:minio>minio.exe server F: G: H: I: J: K:
A continuación, para gestionar y configurar el servidor MinIO, necesitaremos un agente, que se puede descargar todo desde el sitio oficial.
Para no estar tecleando la dirección y las claves de acceso cada vez (y tampoco es seguro), es conveniente, al primer inicio, crear un alias con la fórmula mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]
mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKEO también puedes agregar tu host de inmediato:
mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEYY luego crearemos un bucket inmutable con un hermoso 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 permite ver no solo el mensaje final, sino información más detallada.
-l significa —with-lock, lo que significa inmutable
Si ahora regresamos a la interfaz web, allí aparecerá nuestro nuevo bucket.

Por el momento, eso es todo. Hemos creado un almacenamiento seguro y estamos listos para pasar a la integración con Veeam.
También podemos asegurarnos de que todo funcione perfectamente:
c:minio>mc admin info veeamS3
● 172.17.32.52:9000
Uptime: 32 minutos
Versión: 2020-08-16T18:39:38Z
Red: 1/1 OK
Discos: 6/6 OK
0 B Usados, 1 Bucket, 0 Objetos
6 discos en línea, 0 discos fuera de líneaMinIO y Veeam
¡Atención! Si por alguna razón increíble deseas trabajar a través de HTTP, entonces en HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication crea una clave DWORD SOBRArchiveS3DisableTLS. Establece su valor en 1 y recuerda que no aprobamos este comportamiento ni lo recomendamos a nadie.
¡Atención una vez más! Si por algún malentendido sigues utilizando Windows 2008 R2, al intentar conectar MinIO a Veeam es probable que obtengas un error similar: Fallo en establecer conexión con el punto de acceso de Amazon S3. Esto se soluciona con un parche oficial de .
Bien, los preparativos han terminado, abramos la interfaz de VBR y vayamos a la pestaña Infraestructura de Copia de Seguridad, donde invocaremos el asistente para agregar un nuevo repositorio.

Por supuesto, nos interesa el almacenamiento de objetos, específicamente S3 Compatible. En el asistente que se abre, ingresamos el nombre, seguimos los pasos indicando la dirección y la cuenta. Si es necesario, no olvidamos indicar la puerta de enlace a través de la cual se proxiarán las solicitudes al almacenamiento.

Después de lo cual seleccionamos el bucket, la carpeta y marcamos la casilla Hacer que las copias de seguridad recientes sean inmutables. O no lo hacemos. Pero dado que hemos creado un almacenamiento con soporte para esta función, sería un pecado no aprovecharlo.

Siguiente > Finalizar y disfrutar del resultado.
Ahora hay que añadirlo al repositorio SOBR como Capacity Tier. Para ello, creamos uno nuevo o editamos el existente. Nos interesa el paso de Capacity Tier.

Aquí tenemos que elegir qué escenario vamos a utilizar. Todas las opciones están bien descritas en otro , así que no repetiré.
Y al finalizar el trabajo del asistente, se lanzarán automáticamente tareas para la copia o transferencia de las copias de seguridad. Pero si no tienes planes de cargar inmediatamente todos los sistemas, asegúrate de establecer los intervalos permitidos para la operación mediante el botón Window.

Y, por supuesto, se pueden crear tareas de Backup Copy por separado. Algunos consideran que esto es más conveniente, ya que son un poco más transparentes y predecibles para el usuario que no quiere profundizar en los detalles del funcionamiento del capacity tier. Y hay suficientes detalles, así que recomiendo una vez más el artículo correspondiente en el enlace anterior.
Y para concluir, la respuesta a la maliciosa pregunta: ¿qué pasará si intentas eliminar una copia de seguridad del almacenamiento inmutable?
Aquí está la respuesta:

Eso es todo por hoy. Como de costumbre, aquí tienes una lista de temas útiles sobre el tema:
- Manual
- Ejemplo de uso de .
- Manual general de configuración .
- Hilo en nuestro sobre el almacenamiento S3.
Fuente: habr.com
