Please use this identifier to cite or link to this item:
https://hdl.handle.net/1822/84475
Title: | LazyFS: a file system for assessing applications data durability |
Other titles: | LazyFS: um sistema de ficheiros para avaliar a durabilidade de dados de aplicações |
Author(s): | Azevedo, João Pedro Rodrigues |
Advisor(s): | Paulo, João Tiago Medeiros Macedo, Ricardo Gonçalves |
Keywords: | Injeção de faltas Perda de dados Reprodutibilidade Sistema de ficheiros Data loss Fault injection File system Reproducibility |
Issue date: | 15-Dec-2022 |
Abstract(s): | 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. The digital era we are living in depends on data in a massive scale perspective and organizations require reliable storage systems to perform correctly under failures. For instance, power outages may lead to data loss for applications whose File system (FS) data is still cached and has not yet been flushed to a persistent storage medium. Avoiding these data loss scenarios is challenging since it requires application developers to employ synchronization primitives (fsync) to ensure data durability, which, as a consequence, may significantly impact the performance of applications. Through fault injection tools one could potentially help developers, by providing automatic testing and validation of their data durability policies, while pinpointing potential issues. However, current testing approaches for assessing the durability of data stored at FSs are: (1) done manually through hardware manipulation; or (2) focus on internal errors found at the FS implementation and not on the interaction between the application and the FS. Further, these tools provide limited output to help users find the root causes of observed data loss. To solve these challenges, this dissertation presents LazyFS, a FS that simulates data loss using a reproducible and automatic software-based fault injection approach. It has an internal dedicated cache which manages applications data and its flushing to persistent storage. Upon request, it can discard all data that was not previously persisted, while helping developers by providing valuable outputs of the data in risk of being lost with a power failure. The performance and correctness validation of LazyFS’s prototype shows that our solution can evaluate applications data durability without imposing significant overhead to their normal execution. Also, four different database anomalies were reproduced with LazyFS. The prototype was also integrated with the widely-used Jepsen fault injection framework, and is being used for assessing the correctness of production databases such as Percona MySQL Server, MongoDB and etcd. A possible consistency violation was detected in the etcd database and is currently being studied by their development team. |
Type: | Master thesis |
Description: | Dissertação de mestrado integrado em Informatics Engineering |
URI: | https://hdl.handle.net/1822/84475 |
Access: | Open access |
Appears in Collections: | BUM - Dissertações de Mestrado DI - Dissertações de Mestrado |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
Joao Pedro Rodrigues Azevedo.pdf | 3,01 MB | Adobe PDF | View/Open |
This item is licensed under a Creative Commons License