Minha pesquisa inicial no container ISO foi aparentemente incompleta. O contêiner ISO parece ser o mais eficiente, com o objetivo de poder chegar rapidamente ao conteúdo. Isto é baseado no que minha pesquisa foi capaz de descobrir, e poderia, é claro, mudar.
Embalado em um ISO, eu posso:
- armazene os dados remotamente
- recupere-o rapidamente por meio de uma transferência multiparte
- armazene localmente, diretamente na memória
- monte rapidamente
Usando esse contêiner, consegui reduzir o processo inteiro a menos de um minuto, o que é um nível de tolerância aceitável para este projeto.
A criação deste contêiner é feita facilmente no Ubuntu com um comando semelhante ao seguinte:
mkisofs -o /tmp/data.iso /opt/data/
** Observe que isso exige genisoimage
, que é facilmente instalado por meio de apt-get
.
Para armazenar o arquivo diretamente na memória, criei um ramdisk no sistema de arquivos /tmp
:
mount -t tmpfs -o size=3G tmpfs /tmp/data
A recuperação do contêiner pode ser feita de maneira relativamente rápida com um utilitário de transferência de várias partes. Eu usei um chamado axel
dessa maneira:
axel -a -n 128 -o /tmp/data/data.iso https://s3.amazonaws.com/bucket/data.iso
Finalmente, montamos o arquivo em um sistema de arquivos local:
mount -o loop -r /tmp/data/data.iso /opt/data/
O processo de montagem é quase instantâneo, o que permite que o sistema comece a usar rapidamente os dados para processamento.