Stackable Transactional File System Using Kernel-Level WAL

User applications that require transactional file access generally use user-level transactional protocols such as logging, atomic rename, since the POSIX interface does not support transactional file operations. The user-level protocols are complex and require specific persistence properties of file...

Full description

Bibliographic Details
Main Authors: Daejun Park, Dongkun Shin
Format: Article
Language:English
Published: IEEE 2022-01-01
Series:IEEE Access
Subjects:
Online Access:https://ieeexplore.ieee.org/document/9919192/
_version_ 1811250112637173760
author Daejun Park
Dongkun Shin
author_facet Daejun Park
Dongkun Shin
author_sort Daejun Park
collection DOAJ
description User applications that require transactional file access generally use user-level transactional protocols such as logging, atomic rename, since the POSIX interface does not support transactional file operations. The user-level protocols are complex and require specific persistence properties of file systems for correctness. If the kernel provides transactional access to file data, application developers can avoid the complex and error-prone application-level protocols. Many previous studies on kernel-level transactional support have several critical limitations such as complex APIs, file system-dependence, and low transaction concurrency. In this paper, we propose a kernel-level write-ahead logging (WAL) technique, called KWAL. KWAL maintains user-transparent WAL files and redirects transactional IOs to them. Since KWAL is implemented as a stackable file system, it can be mounted over any native file systems, without modifying them. To provide a higher transaction concurrency while guaranteeing isolation, KWAL supports byte-level write conflict detection and repeatable read isolation. We also utilize a block remap technique to resolve the duplicate write problem of WAL-based transaction scheme. To demonstrate the usefulness of KWAL, we implemented a simple key-value store using KWAL APIs, fixed the wrong transaction implementation of the Git application, and simplified the implementation of the storage engines of MySQL and SQLite.
first_indexed 2024-04-12T15:58:16Z
format Article
id doaj.art-65e89ad8fd93464ca93281ce78004b8a
institution Directory Open Access Journal
issn 2169-3536
language English
last_indexed 2024-04-12T15:58:16Z
publishDate 2022-01-01
publisher IEEE
record_format Article
series IEEE Access
spelling doaj.art-65e89ad8fd93464ca93281ce78004b8a2022-12-22T03:26:16ZengIEEEIEEE Access2169-35362022-01-011011008811009910.1109/ACCESS.2022.32145219919192Stackable Transactional File System Using Kernel-Level WALDaejun Park0https://orcid.org/0000-0002-8992-8467Dongkun Shin1https://orcid.org/0000-0001-7235-7787Samsung Electronics, Suwon, South KoreaDepartment of Electrical and Computer Engineering, Sungkyunkwan University, Suwon, South KoreaUser applications that require transactional file access generally use user-level transactional protocols such as logging, atomic rename, since the POSIX interface does not support transactional file operations. The user-level protocols are complex and require specific persistence properties of file systems for correctness. If the kernel provides transactional access to file data, application developers can avoid the complex and error-prone application-level protocols. Many previous studies on kernel-level transactional support have several critical limitations such as complex APIs, file system-dependence, and low transaction concurrency. In this paper, we propose a kernel-level write-ahead logging (WAL) technique, called KWAL. KWAL maintains user-transparent WAL files and redirects transactional IOs to them. Since KWAL is implemented as a stackable file system, it can be mounted over any native file systems, without modifying them. To provide a higher transaction concurrency while guaranteeing isolation, KWAL supports byte-level write conflict detection and repeatable read isolation. We also utilize a block remap technique to resolve the duplicate write problem of WAL-based transaction scheme. To demonstrate the usefulness of KWAL, we implemented a simple key-value store using KWAL APIs, fixed the wrong transaction implementation of the Git application, and simplified the implementation of the storage engines of MySQL and SQLite.https://ieeexplore.ieee.org/document/9919192/Transactional file systemwrite-ahead logstackable file systemconcurrency
spellingShingle Daejun Park
Dongkun Shin
Stackable Transactional File System Using Kernel-Level WAL
IEEE Access
Transactional file system
write-ahead log
stackable file system
concurrency
title Stackable Transactional File System Using Kernel-Level WAL
title_full Stackable Transactional File System Using Kernel-Level WAL
title_fullStr Stackable Transactional File System Using Kernel-Level WAL
title_full_unstemmed Stackable Transactional File System Using Kernel-Level WAL
title_short Stackable Transactional File System Using Kernel-Level WAL
title_sort stackable transactional file system using kernel level wal
topic Transactional file system
write-ahead log
stackable file system
concurrency
url https://ieeexplore.ieee.org/document/9919192/
work_keys_str_mv AT daejunpark stackabletransactionalfilesystemusingkernellevelwal
AT dongkunshin stackabletransactionalfilesystemusingkernellevelwal