Publicação
LazyFS: a file system for assessing applications data durability
| Resumo: | A atual era digital depende de dados numa perspetiva de grande escala e as organizações requerem sistemas de armazenamento que funcionem corretamente sob falhas. Por exemplo, falhas de energia podem levar à perda de dados em aplicações cujos ficheiros ainda estão armazenados em memória, isto é, num meio volátil. Evitar estes cenários de perda de dados constitui um grande desafio, uma vez que exige que os programadores apliquem primitivas de sincronização (fsync()) que garantem a durabilidade dos dados, a custo de uma potencial diminuição do desempenho das aplicações. As ferramentas de injeção de faltas permitem ajudar os programadores com testes automáticos e consequente validação das suas políticas de durabilidade de dados. No entanto, as abordagens atuais para sistemas de ficheiros focam-se: (1) na manipulação direta de hardware; ou (2) em erros internos de implementação do sistema de ficheiros, e não na interação da aplicação com o mesmo. Além disso, estas ferramentas são limitadas quanto à informação disponibilizada ao programador, de forma a este compreender a causa efetiva que levou à perda de dados reportada. Para resolver estes desafios, esta dissertação propõe o LazyFS, um sistema de ficheiros que simula a perda de dados utilizando uma abordagem de injeção de faltas em software reprodutível e automática. Este sistema tem uma cache dedicada que gere os dados das aplicações e a sua sincronização para uma camada persistente. A pedido, o LazyFS pode limpar todos os dados que não foram previamente sincronizados, fornecendo também aos programadores informações relevantes sobre os dados em risco de serem perdidos com potenciais falhas de energia. O desempenho e validação da correção do protótipo demonstra que a nossa solução consegue avaliar a durabilidade dos dados de aplicações, sem adicionar uma sobrecarga significativa à sua execução normal. Foram também reproduzidas quatro anomalias em diferentes bases de dados e o protótipo já se encontra integrado na ferramenta de injeção de faltas Jepsen. Atualmente, o LazyFS está a ser usado, juntamente com o Jepsen, para avaliar sistemas de bases de dados em produção, como o Percona MySQL Server, MongoDB e o etcd. Adicionalmente, foi descoberta uma possível violação de coerência no etcd, que está a ser estudada pela sua equipa de desenvolvimento. |
|---|---|
| Autores principais: | Azevedo, João Pedro Rodrigues |
| Assunto: | Injeção de faltas Perda de dados Reprodutibilidade Sistema de ficheiros Data loss Fault injection File system Reproducibility |
| Ano: | 2022 |
| País: | Portugal |
| Tipo de documento: | dissertação de mestrado |
| Tipo de acesso: | acesso aberto |
| Instituição associada: | Universidade do Minho |
| Idioma: | inglês |
| Origem: | RepositóriUM - Universidade do Minho |
| Resumo: | A atual era digital depende de dados numa perspetiva de grande escala e as organizações requerem sistemas de armazenamento que funcionem corretamente sob falhas. Por exemplo, falhas de energia podem levar à perda de dados em aplicações cujos ficheiros ainda estão armazenados em memória, isto é, num meio volátil. Evitar estes cenários de perda de dados constitui um grande desafio, uma vez que exige que os programadores apliquem primitivas de sincronização (fsync()) que garantem a durabilidade dos dados, a custo de uma potencial diminuição do desempenho das aplicações. As ferramentas de injeção de faltas permitem ajudar os programadores com testes automáticos e consequente validação das suas políticas de durabilidade de dados. No entanto, as abordagens atuais para sistemas de ficheiros focam-se: (1) na manipulação direta de hardware; ou (2) em erros internos de implementação do sistema de ficheiros, e não na interação da aplicação com o mesmo. Além disso, estas ferramentas são limitadas quanto à informação disponibilizada ao programador, de forma a este compreender a causa efetiva que levou à perda de dados reportada. Para resolver estes desafios, esta dissertação propõe o LazyFS, um sistema de ficheiros que simula a perda de dados utilizando uma abordagem de injeção de faltas em software reprodutível e automática. Este sistema tem uma cache dedicada que gere os dados das aplicações e a sua sincronização para uma camada persistente. A pedido, o LazyFS pode limpar todos os dados que não foram previamente sincronizados, fornecendo também aos programadores informações relevantes sobre os dados em risco de serem perdidos com potenciais falhas de energia. O desempenho e validação da correção do protótipo demonstra que a nossa solução consegue avaliar a durabilidade dos dados de aplicações, sem adicionar uma sobrecarga significativa à sua execução normal. Foram também reproduzidas quatro anomalias em diferentes bases de dados e o protótipo já se encontra integrado na ferramenta de injeção de faltas Jepsen. Atualmente, o LazyFS está a ser usado, juntamente com o Jepsen, para avaliar sistemas de bases de dados em produção, como o Percona MySQL Server, MongoDB e o etcd. Adicionalmente, foi descoberta uma possível violação de coerência no etcd, que está a ser estudada pela sua equipa de desenvolvimento. |
|---|