MinIO — uma excelente solução para organizar facilmente um armazenamento de objetos. A configuração simples, a compatibilidade com várias plataformas e o bom desempenho conquistaram o coração dos usuários. Portanto, não tivemos outra opção senão anunciar, há um mês, a compatibilidade. . Incluindo uma função tão importante como a Imutabilidade. Na verdade, o MinIO possui toda uma na documentação dedicada à nossa integração.
Portanto, hoje vamos falar sobre como:
- Configurar o MinIO rapidamente.
- Configurar o MinIO um pouco mais devagar, mas de forma significativamente melhor.
- Usá-lo como Archive Tier para um repositório escalável Veeam SOBR.

O que é isso?
Uma breve introdução para aqueles que ainda não se depararam com o MinIO. É um armazenamento de objetos de código aberto, compatível com a API Amazon S3. É lançado sob a licença Apache v2 e segue a filosofia do minimalismo espartano.
Ou seja, não há uma interface gráfica extensa com painéis, gráficos e muitos menus. O MinIO simplesmente inicia seu servidor com um único comando, onde você pode armazenar dados usando toda a potência da API S3. Mas deve-se notar que essa simplicidade pode ser enganosa quando se trata dos recursos utilizados. RAM e CPU são consumidos de maneira eficaz, mas as razões estarão abaixo. A propósito, sistemas como FreeNAS e TrueNAS utilizam precisamente o MinIO.
Com isso, podemos encerrar a introdução.
Configurar o MinIO rapidamente
A configuração é tão rápida que a veremos para Windows e Linux. Existem opções para Docker, Kubernetes e até mesmo para macOS, mas o sentido será o mesmo em todos eles.
Portanto, no caso do Windows, acesse o site oficial e baixe a versão mais recente. Lá você também encontrará as instruções de inicialização:
minio.exe server F:Data
E lá também está o link para um . Não faz sentido desconfiar das instruções, então vamos iniciar e obter uma resposta semelhante a esta.
É isso! O armazenamento está funcionando e você pode começar a utilizá-lo. Não estava brincando quando disse que o MinIO é minimalista e simplesmente funciona. Se você seguir o link sugerido ao iniciar, a única função disponível lá é criar um bucket. E você pode começar a gravar dados.
Para os amantes do Linux, tudo continua igualmente simples. Instruções básicas:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /dataO resultado será indistinguível do que foi visto anteriormente.
A configuração do MinIO é um pouco mais lógica
Como entendemos, o parágrafo anterior é apenas uma brincadeira para fins de teste. E, sejamos honestos, usamos o MinIO de maneira muito extensa para testes, o que não temos vergonha de admitir. Claro, funciona, mas seria vergonhoso usá-lo além de bancos de teste. Portanto, pegamos uma lixa e começamos a aprimorar.
HTTPS
O primeiro passo obrigatório em direção à produção é a criptografia. Já existem milhões de manuais na internet sobre como adicionar certificados ao MiniIO, mas o plano geral é este:
- Criar um certificado
- No caso do Windows, colocá-lo em C:Users%User%.miniocerts
- No caso do Linux, em ${HOME}/.minio/certs
- Reiniciar o servidor
O banal Let’s Encrypt é maçante e descrito em todo lugar, então nosso caminho é o caminho do samurai, por isso, no caso do Windows, baixamos , e no caso do Linux, verificamos se o openssl está instalado. E fazemos um pouco de mágica no console:
- Criar chaves: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key
- Criar um certificado a partir da chave: openssl req -new -x509 -days 3650 -key private.key -out public.crt
- Copiar private.key e public.crt para a pasta mencionada acima
- Reiniciar o MinIO
Se tudo correu como deveria, o status mostrará linhas aproximadamente assim.

Ativar a codificação de erros do MinIO
Primeiro, algumas palavras sobre o assunto. Em resumo: essa é uma proteção de software contra danos e perdas de dados. É como RAID, mas muito mais confiável. Enquanto um RAID6 clássico pode perder dois discos, o MinIO suporta a perda de até metade. A tecnologia é descrita em mais detalhes no . Mas se pegarmos a essência, trata-se da implementação dos códigos de Reed-Solomon: todas as informações são armazenadas em blocos de dados, para os quais existem blocos de paridade. E parece que isso já foi feito muitas vezes, mas há uma importante "mas": podemos especificar explicitamente a proporção de blocos de paridade em relação aos blocos de dados para os objetos armazenados.
Quer 1:1? Por favor!
Quer 5:2? Sem problemas!
Uma função muito importante, se você estiver usando várias nodes e quiser encontrar seu próprio equilíbrio entre a máxima segurança dos dados e os recursos utilizados. O MinIO, por padrão, utiliza a fórmula N/2 (onde N é o número total de discos), ou seja, divide seus dados entre N/2 discos de dados e N/2 discos de paridade. Traduzindo para uma linguagem mais simples: é possível perder metade dos discos e recuperar os dados. Essa proporção é definida através de , permitindo que você escolha o que é mais importante: confiabilidade ou capacidade.
No guia, é apresentado o seguinte exemplo: suponha que você tenha uma instalação com 16 discos e precise armazenar um arquivo de 100 MB. Se as configurações padrão forem utilizadas (8 discos para dados, 8 para paridade), o arquivo acabará ocupando um volume quase duplicado, ou seja, 200 MB. Se a proporção dos discos for 10/6, será necessário 160 MB. Para 14/2, serão 114 MB.
Outra diferença importante em relação aos RAID: em caso de falha dos discos, o MinIO funcionará ao nível de objetos, recuperando um por um, sem interromper o funcionamento de todo o sistema. Enquanto isso, um RAID comum terá que recuperar todo o volume, o que levará um tempo imprevisível. Na memória do autor, uma prateleira de discos levou uma semana e meia para ser recalculada após a falha de dois discos. Foi bastante desagradável.
E, uma observação importante: o MinIO divide todos os discos para Erasure Coding em conjuntos de 4 a 16 discos, utilizando o tamanho máximo possível do conjunto. E, no futuro, um elemento de informação será armazenado apenas dentro de um único conjunto.
Tudo isso soa muito bem, mas quão complicada será a configuração? Vamos dar uma olhada. Pegamos o comando para iniciar e simplesmente listamos os discos onde precisamos criar o armazenamento. Se tudo for feito corretamente, veremos no relatório a quantidade de discos utilizados. E um conselho: não é apropriado adicionar metade dos discos em um único host, pois isso pode resultar na perda de dados.
c:minio>minio.exe server F: G: H: I: J: K:
Em seguida, para gerenciar e configurar o servidor MinIO, precisaremos de um agente, que pode ser baixado tudo do site oficial.
Para não ficar digitando o endereço e as chaves de acesso toda vez (e isso não é seguro), é conveniente criar um alias logo na primeira execução, usando a fórmula mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]
mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKEOu você pode adicionar seu host imediatamente:
mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEYEm seguida, criaremos um bucket imutável com um belo 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 não apenas a mensagem final, mas também informações mais detalhadas.
--selector significa --with-lock, que significa imutável
Se agora voltarmos para a interface web, nosso novo bucket aparecerá lá.

Por enquanto, isso é tudo. Criamos um armazenamento seguro e estamos prontos para integrar com Veeam.
Podemos ainda verificar se tudo está funcionando bem:
c:minio>mc admin info veeamS3
● 172.17.32.52:9000
Uptime: 32 minutos
Version: 2020-08-16T18-39-38Z
Network: 1/1 OK
Drives: 6/6 OK
0 B Usado, 1 Bucket, 0 Objetos
6 drives online, 0 drives offlineMinIO e Veeam
Atenção! Se por alguma razão incrível você quiser trabalhar via HTTP, crie a chave DWORD em HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication SOBRArchiveS3DisableTLS. Defina seu valor como 1 e lembre-se de que não aprovamos esse comportamento e não recomendamos a ninguém.
Atenção mais uma vez! Se por algum mal-entendido você ainda estiver usando Windows 2008 R2, ao tentar conectar o MinIO ao Veeam, você provavelmente receberá um erro como este: Falha ao estabelecer conexão com o endpoint Amazon S3. Isso pode ser resolvido com o patch oficial de .
Bem, as preparações acabaram, vamos abrir a interface VBR e ir para a aba Backup Infrastructure, onde acionaremos o assistente de adição de um novo repositório.

Claro, estamos interessados em Object storage, especificamente S3 Compatible. No assistente aberto, definimos o nome, passamos pelas etapas indicando o endereço e as credenciais. Se necessário, não esqueçamos de indicar o gateway através do qual as solicitações ao armazenamento serão proxy.

Depois, escolhemos o bucket, a pasta e marcamos a opção Make recent backups immutable. Ou não. Mas já que criamos um armazenamento com suporte a essa função, seria um erro não aproveitá-la.

Next > Finish e aproveite o resultado.
Agora é preciso adicioná-lo ao repositório SOBR como um Capacity Tier. Para isso, podemos criar um novo ou editar o existente. Estamos interessados na etapa do Capacity Tier.

Aqui precisamos escolher qual cenário iremos utilizar. Todas as opções estão bem descritas em outro , então não irei me repetir.
E, ao finalizar o assistente, serão iniciadas automaticamente as tarefas de cópia ou transferência de backups. Mas se você não planeja sobrecarregar todos os sistemas de imediato, defina intervalos aceitáveis para a execução clicando no botão Window.

E, claro, é possível criar tarefas de Backup Copy separadas. Alguns acreditam que isso é até mais conveniente, pois são um pouco mais transparentes e previsíveis para o usuário que não deseja entrar em detalhes sobre o funcionamento do capacity tier. E há muitos detalhes, então mais uma vez recomendo o artigo correspondente no link acima.
E por último — a resposta para a pergunta traiçoeira: o que acontece se você tentar excluir um backup do armazenamento Immutable?
Aqui está a resposta:

Por hoje é tudo. Seguindo a boa tradição, aqui está uma lista de tópicos úteis sobre o tema:
- Manual
- Exemplo de uso .
- Manual geral de configuração .
- Tópico em nosso sobre armazenamentos S3.
Fonte: habr.com
