Reduzir a capacidade de armazenamento excluindo o cache do Mastodon e uma conversa sobre MinIO e LocalStack

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

Olá, sou o Muno.
Um problema que inevitavelmente surge ao construir uma instância do Mastodon é o problema de armazenamento.
Como ele adquire todas as informações de outros servidores, não há como evitar seu inchaço.
Então, encontrei um script promissor.

Scripting com Bash

Aparentemente, é possível excluir tudo de uma vez usando o tootctl, que se tornou disponível a partir do Mastodon v4.1.
Improving Mastodon’s disk usage
Então, mudei para 1 dia e copiei o seguinte na íntegra.

#!/bin/bash

# Prune remote accounts that never interacted with a local user
RAILS_ENV=production /home/sns/mastodon/bin/tootctl accounts prune;

# Remove remote statuses that local users never interacted with older than 1 days
RAILS_ENV=production /home/sns/mastodon/bin/tootctl statuses remove --days 1;

# Remove media attachments older than 1 days
RAILS_ENV=production /home/sns/mastodon/bin/tootctl media remove --days 1;

# Remove all headers (including people I follow)
RAILS_ENV=production /home/sns/mastodon/bin/tootctl media remove --remove-headers --include-follows --days 0;

# Remove link previews older than 1 days
RAILS_ENV=production /home/sns/mastodon/bin/tootctl preview_cards remove --days 1;

# Remove files not linked to any post
RAILS_ENV=production /home/sns/mastodon/bin/tootctl media remove-orphans;

Leva muito tempo, então ainda não consigo determinar quanto espaço de armazenamento será liberado ^^;

Armazenamento de Objetos Doméstico Ideal

Recentemente, tenho pensado em ter um servidor de armazenamento separado do servidor de produção.
Os motivos são os seguintes:

  • Quando arquivos grandes são colocados em um disco separado, o kernel Linux trava com erros de I/O de disco quando o disco morre.
  • Desvinculação da dependência do sistema de arquivos
  • É mais claro separar dos binários executáveis

Existem outras razões, mas, em resumo, são as mencionadas acima.
Em particular, aprendi que o erro de I/O no primeiro item pode travar o sistema mesmo na reinicialização, exigindo a remoção direta do disco (embora seja possível evitar isso alterando os parâmetros do kernel e recompilando), então parece necessário fazer isso.

Quanto à desvinculação da dependência do sistema de arquivos, embora eu queira usar o robusto ZFS, o ZFS disponível em ambientes Linux é uma cópia pseudo, portanto não é um ZFS completo.
Se você quiser usar ZFS, precisará configurar e usar um ambiente FreeBSD.
Quanto ao RAID, é ainda mais complexo, e não o farei porque há a possibilidade de não conseguir recuperar se a placa RAID falhar.
Por isso, quero usar FreeBSD como servidor de armazenamento de objetos.

Quanto a ser mais claro separar dos binários executáveis, é simplesmente que, ao considerar um sistema distribuído, quero construir um ambiente separado como uma área de armazenamento de uso geral, como o antigo Plan9.
Afinal, para apenas executar programas, não são necessários centenas de GB ou vários TB.

MinIO e LocalStack

LocalStack parece ser capaz de emular o S3 da AWS, mas a versão gratuita não é persistente e tem suas limitações.
Como um armazenamento de objetos mais OSS, MinIO parece ser uma boa opção se for realmente implementado em um servidor.
LocalStack: Para uso temporário de um ambiente simulado do AWS S3, como em ambientes de desenvolvimento, etc.
MinIO: Para quando se deseja construir um servidor como armazenamento de objetos.
Parece que devem ser usados de forma diferente.
Portanto, vou construir um servidor MinIO.


Até a próxima. Obrigado.

Related Posts