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...
Main Authors: | , |
---|---|
Format: | Article |
Language: | English |
Published: |
IEEE
2022-01-01
|
Series: | IEEE Access |
Subjects: | |
Online Access: | https://ieeexplore.ieee.org/document/9919192/ |
_version_ | 1828218136861605888 |
---|---|
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 |