Please use this identifier to cite or link to this item: https://hdl.handle.net/1822/88580

TitleRealistic fault assessment in SPDK-enabled storage stacks
Other titlesAvaliação realista de faltas em stacks de armazenamento SPDK
Author(s)Miranda, Alexandre Esteves
Advisor(s)Paulo, João Tiago Medeiros
Macedo, Ricardo Gonçalves
KeywordsArmazenamento
Espaço de utilizador
Tolerância a faltas
SPDK
Propagação de Contexto
Storage
User space
Fault tolerance
Context propagation
Issue date24-Jul-2023
Abstract(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.
TypeMaster thesis
DescriptionDissertação de mestrado integrado em Informatics Engineering
URIhttps://hdl.handle.net/1822/88580
AccessOpen access
Appears in Collections:BUM - Dissertações de Mestrado
DI - Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
Alexandre Esteves Miranda.pdfDissertação de mestrado1,04 MBAdobe PDFView/Open

This item is licensed under a Creative Commons License Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID