Realistic fault assessment in SPDK-enabled storage stacks

Avaliação realista de faltas em stacks de armazenamento SPDK
dc.contributor.advisorPaulo, João Tiago Medeirospor
dc.contributor.advisorMacedo, Ricardo Gonçalvespor
dc.contributor.authorMiranda, Alexandre Estevespor
dc.date.accessioned2024-02-06T14:10:21Z
dc.date.available2024-02-06T14:10:21Z
dc.date.issued2023-07-24
dc.date.submitted2023-02
dc.description.abstractA 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.por
dc.description.abstractThe 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.por
dc.identifier.tid203501780por
dc.identifier.urihttps://hdl.handle.net/1822/88580
dc.language.isoengpor
dc.rightsopenAccesspor
dc.rights.urihttp://creativecommons.org/licenses/by-nc-sa/4.0/por
dc.subjectArmazenamentopor
dc.subjectEspaço de utilizadorpor
dc.subjectTolerância a faltaspor
dc.subjectSPDKpor
dc.subjectPropagação de Contextopor
dc.subjectStoragepor
dc.subjectUser spacepor
dc.subjectFault tolerancepor
dc.subjectContext propagationpor
dc.subject.fosEngenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informáticapor
dc.titleRealistic fault assessment in SPDK-enabled storage stackspor
dc.title.alternativeAvaliação realista de faltas em stacks de armazenamento SPDKpor
dc.typemasterThesiseng
dspace.entity.typePublicationen
sdum.degree.grade18 valorespor
sdum.uoeiEscola de Engenhariapor
thesis.degree.grantorUniversidade do Minhopor
thesis.degree.nameDissertação de mestrado integrado em Informatics Engineeringpor

Ficheiros

Pacote original

A mostrar 1 - 1 de 1
A carregar...
Nome:
Alexandre Esteves Miranda.pdf
Tamanho:
1.02 MB
Formato:
Adobe Portable Document Format
Descrição:
Dissertação de mestrado