This repository has been archived by the owner on Jun 11, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
/
README
128 lines (93 loc) · 4.44 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
======================================
iostash - Flash cache driver for Linux
======================================
iostash version 0.1 by
Nikolas Ioannou, [email protected], http://researcher.ibm.com/researcher/view.php?person=zurich-nio
Ioannis Koltsidas, [email protected], http://researcher.ibm.com/researcher/view.php?person=zurich-iko
Introduction
======================================
A generic read-only block-level disk cache solution optimized for
Flash storage. It can transparently cache from any block device target
(typically HDD) to another block device that is used as a cache
(typically SSD). It dynamically hooks/unhooks into the target block
device, even if it is already mounted, and thus enables seamless
application acceleration. Also, it supports caching from one or more
targets to one or more cache devices (e.g., 3 HDDs caching to 1SSD). It
supports asynchronous write-through.
Details on the architecture of iostash can be found in the research
papers listed in the References section.
Requirements
======================================
iostash is a Linux kernel module that depends on the device-mapper
Linux kernel framework (most mainstream Linux distros use a kernel
build that include this feature).
It should build for kernel version 2.6.28 and onwards, and has been
tested on RHEL6.4 (2.6.32-504.23.4.el6.x86_64) and Ubuntu 14.04.3 LTS
(3.16.0-46-generic).
Building requires having the kernel targets and the necessary
compilation tools:
CentOS/RHEL: https://wiki.centos.org/HowTos/BuildingKernelModules
Ubuntu: https://help.ubuntu.com/community/Kernel/Compile
Installation
======================================
1. Download:
The latest version of iostash can be found at github:
https://github.com/ibm-research/iostash
git://github.com/ibm-research/iostash.git
2. Build:
Make sure you have the kernel target and compilation tools. For Ubuntu
14.04.3, for example, these can be installed using:
sudo apt-get build-dep linux-image-`uname -r`
Enter the iostash directory and run:
$ ./build.sh
This will generate a bundle in the package/ directory. To install,
extract the content of the package in a directory and run the
'install.sh' script:
$ tar xvfz iostash-<kernel-version>.tar.gz
$ cd iostash-<kernel-version>
$ sudo ./install.sh
In case iostash is already running, the new binary will only be used
by the system the next time the module is loaded. To install and load
the new binary, invoke the installation script with '--force':
$ sudo ./install.sh --force
NOTE: This will purge the content of the caches, but it should not be
disruptive to on-going I/O. After the installation completes, the
existing cache devices and target will be added anew.
All the above instructions will build and install a kernel module for the
currently loaded kernel on the build system. One can build for a
specific kernel version by setting the KERNEL_DIR to the path for the
desired kernel.
A user-interface script will also be installed under /usr/bin/iostash.
Usage
======================================
1. Add a target device to start caching from (say /dev/sda):
$ sudo iostash target add /dev/sda
2. Add a new device to the cache (say /dev/nvme0n1):
$ sudo iostash cache add /dev/nvme0n1
3. List all target devices that we are caching from:
$ sudo iostash target list
4. List all devices that we are caching on:
$ sudo iostash cache list
5. Stop caching from a target device (say /dev/sda):
$ sudo iostash target remove /dev/sda
6. Remove a device from the pool of cache devices (say /dev/nvme0n1):
$ sudo iostash cache remove /dev/nvme0n1
7. View statistics per target device
$ sudo iostash target stat /dev/sda
8. View global statistics:
$ sudo iostash global stats
References
======================================
Flash-Conscious Cache Population for Enterprise Database Workloads
Hyojun Kim, Ioannis Koltsidas, Nikolas Ioannou, Sangeetha Seshadri,
Paul Muech, Clement Dickey, and Lawrence Chiu
International Workshop on Accelerating Data Management Systems Using
Modern Processor and Storage Architectures (ADMS), 2014
http://www.adms-conf.org/2014/adms14_kim.pdf
How Could a Flash Cache Degrade Database Performance Rather Than
Improve It? Lessons to be Learnt from Multi-Tiered Storage
Hyojun Kim, Ioannis Koltsidas and Nikolas Ioannou, Sangeetha Seshadri,
Paul Muench, Clement L. Dickey, and Lawrence Chiu
Workshop on Interactions of NVM/Flash with Operating Systems and
Workloads (INFLOW), 2014
https://www.usenix.org/system/files/conference/inflow14/inflow14-kim.pdf