Utilize este identificador para referenciar este registo:
https://hdl.handle.net/1822/88580
Título: | Realistic fault assessment in SPDK-enabled storage stacks |
Outro(s) título(s): | Avaliação realista de faltas em stacks de armazenamento SPDK |
Autor(es): | Miranda, Alexandre Esteves |
Orientador(es): | Paulo, João Tiago Medeiros Macedo, Ricardo Gonçalves |
Palavras-chave: | Armazenamento Espaço de utilizador Tolerância a faltas SPDK Propagação de Contexto Storage User space Fault tolerance Context propagation |
Data: | 24-Jul-2023 |
Resumo(s): | A eficiência e desempenho das operações de Entrada/Saída(E/S) são aspetos fundamentais na implementação de sistemas de armazenamento. A maioria das soluções atuais são implementadas em
kernel, obrigando a trocas de contexto entre espaço de utilizador e kernel por parte das aplicações. Estas trocas de contexto são custosas e, por isso, limitam o desempenho do sistema de armazenamento.
A plataforma Storage Performance Development Kit (SPDK) disponibiliza uma forma de construir estes
sistemas evitando o acesso a kernel, realizando todas as operações de E/S necessárias diretamente do
espaço de utilizador para o disco físico.
Contudo, os dados continuam a ter que ser guardados com garantias de persistência. Assim sendo,
os sistemas construídos com SPDK devem se tolerantes a faltas para garantir resiliência em cenários de
falta. A inexistência de uma ferramenta capaz de testar essa resiliência em sistemas de armazenamento
construídos com SPDK é um problema para os programadores que querem testar a resiliência dos seus
sistemas.
De forma a resolver este problema, esta dissertação propõe o Fault Injector in SPDK (FISPDK), uma
ferramenta que estende o SPDK e fornece injeção de faltas determinística ao nível do block device. Para
injetar faltas deterministicamente, FISPDK utiliza diferenciação de pedidos E/S de forma a identificar quais
pedidos devem (ou não) ser injetados com uma falta. Para isso, o FISPDK implementa mecanismos de
propagação de contexto, que permitem passar informação da aplicação para os níveis mais baixos das
pilhas de E/S, e é baseado numa extensão da block device Application Programming Interface (API)
original do SPDK. Para providenciar injeção de faltas, o FISPDK apresenta um block device virtual que
interceta pedidos E/S e injeta corrupção de dados ou atraso neles. O block device virtual pode ser
configurado pelos utilizadores para apontar os tipos de faltas e quais os pedidos que devem ser injetados
com essas faltas.
Uma avaliação compreensiva do FISPDK demonstra que a nossa solução consegue injetar faltas de
forma determinística e avaliar a tolerância a faltas de sistemas de armazenamento que usam SPDK, sem
adicionar uma sobrecarga significativa à pilha de armazenamento. The efficiency and performance of Input/Output (I/O) operations are two of the most important aspects in the implementation of a storage system. Most of the current solutions are implemented in kernel, forcing context switches between user-space and kernel by applications. These context switches are costly and, therefore, limit the performance of the storage system. The SPDK framework provides a way to build these systems by bypassing all kernel components, performing all necessary I/O operations from user level applications directly to the physical device. However, data still needs to be stored persistently. Therefore, systems built with SPDK must guarantee fault tolerance, to ensure resilience under fault scenarios. The nonexistence of a tool that is able to test the fault tolerance of SPDK-compliant systems is a problem to developers that want to test the resilience their systems. To solve this problem, this dissertation presents FISPDK, a tool that extends SPDK and provides deter ministic fault injection at the block device level. To inject faults in a deterministic way, FISPDK resorts to I/O differentiation to be able to identify which requests must be (or not) injected with a fault. For that, FIS PDK implements a context propagation mechanisms,which enables passing application-level information to the lower-levels of the I/O stacks, and is based on an extension of the original block device API of SPDK. To provide fault injection, FISPDK presents a virtual block device that intecepts I/O requests and injects data corruption and delay into these. The virtual block device can be configured by users to pinpoint the type of faults and the I/O requests targeted by these. A comprehensive experimental evaluation of FISPDK shows that our solution is able to deterministi cally inject faults and evaluate the fault tolerance of the SPDK-compliant storage systems, without adding significant performance overhead into the storage stack. |
Tipo: | Dissertação de mestrado |
Descrição: | Dissertação de mestrado integrado em Informatics Engineering |
URI: | https://hdl.handle.net/1822/88580 |
Acesso: | Acesso aberto |
Aparece nas coleções: | BUM - Dissertações de Mestrado DI - Dissertações de Mestrado |
Ficheiros deste registo:
Ficheiro | Descrição | Tamanho | Formato | |
---|---|---|---|---|
Alexandre Esteves Miranda.pdf | Dissertação de mestrado | 1,04 MB | Adobe PDF | Ver/Abrir |
Este trabalho está licenciado sob uma Licença Creative Commons