πŸ“œ ⬆️ ⬇️

Caching data on SSD using EnhanceIO

Recently, so-called have gained enormous popularity. solid state drives (Solid State Drives, SSD). For a simple user, they are of particular interest in that they can significantly expand the bottleneck of system performance, which rests on the speed of hard drives. Consumer-grade SSDs in reading / writing speeds exceed hard drives by several times, and in some tasks even by an order of magnitude.

Yes, the current SSDs are already ready to replace hard drives on desktops and laptops in full, but this is not acceptable for all users, and there are several reasons for this. First of all, the very reliability raises questions. Backups are usually saved here, the main thing is to make them in time. The second reason is privacy related. If on the HDD the use of LUKS does not cause issues, then on the SSD the inclusion of TRIM reduces the security of information . Without TRIM, there are chances to squander the performance of disk operations.

Another area of ​​use for SSD is disk I / O caching. Without jeopardizing the safety of information, you can significantly increase the speed of access to it. Moreover, this is feasible without stopping the workstation or server, which prevents unwanted loss of time.
')
For the Linux operating system, several data caching technologies for SSD are presented - bcache , EnhanceIO , dm-cache , etc. Using them allows you to feel the performance gain of disk operations, while the reliability of the storage system will remain at the same level.

In any case, the choice of technology remains for the end user (it all depends on the goal pursued), my task is to show in this article how data caching on SSD is organized using EnhanceIO.


Why EnhanceIO? Firstly, this technology is based on the developments of the flashcache project tested on Facebook, which in itself already testifies to something. Secondly, EnhanceIO allows you to enable and disable caching without stopping the system, and also connect the SSD to individual partitions or to the disk as a whole as a cache on the fly. The disadvantages of EnhanceIO include the fact that the developments of this project are not yet included in the core, but it will not be difficult to assemble it yourself.

Moreover, you can use either the pf-kernel patch (starting from version 3.8.1-pf), if you don’t want to go through the kernel source code with your hands, or download the finished binary builds at all and test EnhanceIO without running the compiler.

However, the source code for the EnhanceIO project is available on github. From there we will pull it off:

git clone git://github.com/stec-inc/EnhanceIO.git 

There are several subdirectories and files in the EnhanceIO directory. The CLI directory is a console utility for managing EnhanceIO. In the Driver directory - the actual driver code (kernel module). Developers placed the rules template for udev in the Documents directory; we need it in order for the cache to be automatically turned on when the corresponding devices appear.

An experienced user can easily assemble the kernel on his own, while an ordinary user should either refer to the appropriate manual or skip this step using the ready-made pf-kernel builds for several distributions. For those who decide to build the kernel themselves, it is recommended to read the Install.txt file - all you need to do is copy the directory with the module to the source kernel code tree and apply a small patch modifying the build system so that it sees this new module. . If you have questions specifically on compiling the kernel, I am ready to answer them personally.

In addition, developers recently added the ability to build EnhanceIO modules using dkms. This makes it possible not to compile the kernel at all. The required dkms.conf file is also located in the Driver / enhanceio subdirectory.

All users will need to copy the eio_cli console utility to / usr / local / sbin from the CLI directory (and not to / sbin, so as not to clutter the system directories with out-of-batch files):

 cp CLI/eio_cli /usr/local/sbin 

fix the version of Python used (at least in Arch Linux), replacing the initial line in this file with

 #!/usr/bin/python2.7 

and then fix the permissions:

 chown root:root /usr/local/sbin/eio_cli chmod 755 /usr/local/sbin/eio_cli 

Further manipulations were tested in the Arch Linux distribution, in other distributions, something may differ in details, but in general the actions will be the same.

So, suppose that the hard disk appears to the system as a device / dev / sda, and SSD as a device / dev / sdb. Copy the Documents / 94-Enhanceio.template file to /etc/udev/rules.d/94-enhanceio-sda.rules:

 cp Documents/94-Enhanceio.template /etc/udev/rules.d/94-enhanceio-sda.rules 

and open it for editing:

 vim /etc/udev/rules.d/94-enhanceio-sda.rules 

In this file you need to replace a few template inserts. <cache_match_expr> replace with this:

 ENV{ID_SERIAL}=="<ID SERIAL OF YOUR CACHE DEVICE>", ENV{DEVTYPE}=="<DEVICE TYPE OF YOUR CACHE DEVICE>" 

Here, in turn, you need to replace the inserts
     SSD.    : 

$ udevadm info --query=env --name=/dev/sdb
, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
SSD. :

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
     SSD.    : 

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
SSD. :

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
     SSD.    : 

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru
FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
    SSD. :

    $ udevadm info --query=env --name=/dev/sdb

    , . , ( ) . ID_SERIAL DM_UUID.

    <source_match_expr> , , .., , /dev/sda:

    $ udevadm info --query=env --name=/dev/sda
    udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

    udev Documents/Persistence.txt.

    . . :

    ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
    , , ( ), Write-Through.

    udev . Arch Linux /etc/modules-load.d/boot.conf. :

    enhanceio enhanceio_fifo enhanceio_lru
    FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

    eio_cli -p lru, fifo rand. .

    :

    /usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
    . , , udev , . , :

    cat /proc/enhanceio/sda/stats
    ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

    , . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
  • SSD. :

    $ udevadm info --query=env --name=/dev/sdb

    , . , ( ) . ID_SERIAL DM_UUID.

    <source_match_expr> , , .., , /dev/sda:

    $ udevadm info --query=env --name=/dev/sda
    udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

    udev Documents/Persistence.txt.

    . . :

    ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
    , , ( ), Write-Through.

    udev . Arch Linux /etc/modules-load.d/boot.conf. :

    enhanceio enhanceio_fifo enhanceio_lru
    FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

    eio_cli -p lru, fifo rand. .

    :

    /usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
    . , , udev , . , :

    cat /proc/enhanceio/sda/stats
    ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

    , . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
    SSD. :

    $ udevadm info --query=env --name=/dev/sdb

    , . , ( ) . ID_SERIAL DM_UUID.

    <source_match_expr> , , .., , /dev/sda:

    $ udevadm info --query=env --name=/dev/sda
    udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

    udev Documents/Persistence.txt.

    . . :

    ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
    , , ( ), Write-Through.

    udev . Arch Linux /etc/modules-load.d/boot.conf. :

    enhanceio enhanceio_fifo enhanceio_lru
    FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

    eio_cli -p lru, fifo rand. .

    :

    /usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
    . , , udev , . , :

    cat /proc/enhanceio/sda/stats
    ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

    , . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
  • SSD. :

    $ udevadm info --query=env --name=/dev/sdb

    , . , ( ) . ID_SERIAL DM_UUID.

    <source_match_expr> , , .., , /dev/sda:

    $ udevadm info --query=env --name=/dev/sda
    udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

    udev Documents/Persistence.txt.

    . . :

    ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
    , , ( ), Write-Through.

    udev . Arch Linux /etc/modules-load.d/boot.conf. :

    enhanceio enhanceio_fifo enhanceio_lru
    FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

    eio_cli -p lru, fifo rand. .

    :

    /usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
    . , , udev , . , :

    cat /proc/enhanceio/sda/stats
    ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

    , . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
    SSD. :

    $ udevadm info --query=env --name=/dev/sdb

    , . , ( ) . ID_SERIAL DM_UUID.

    <source_match_expr> , , .., , /dev/sda:

    $ udevadm info --query=env --name=/dev/sda
    udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

    udev Documents/Persistence.txt.

    . . :

    ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
    , , ( ), Write-Through.

    udev . Arch Linux /etc/modules-load.d/boot.conf. :

    enhanceio enhanceio_fifo enhanceio_lru
    FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

    eio_cli -p lru, fifo rand. .

    :

    /usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
    . , , udev , . , :

    cat /proc/enhanceio/sda/stats
    ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

    , . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
  • SSD. :

    $ udevadm info --query=env --name=/dev/sdb

    , . , ( ) . ID_SERIAL DM_UUID.

    <source_match_expr> , , .., , /dev/sda:

    $ udevadm info --query=env --name=/dev/sda
    udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

    udev Documents/Persistence.txt.

    . . :

    ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
    , , ( ), Write-Through.

    udev . Arch Linux /etc/modules-load.d/boot.conf. :

    enhanceio enhanceio_fifo enhanceio_lru
    FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

    eio_cli -p lru, fifo rand. .

    :

    /usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
    . , , udev , . , :

    cat /proc/enhanceio/sda/stats
    ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

    , . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
    SSD. :

    $ udevadm info --query=env --name=/dev/sdb

    , . , ( ) . ID_SERIAL DM_UUID.

    <source_match_expr> , , .., , /dev/sda:

    $ udevadm info --query=env --name=/dev/sda
    udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

    udev Documents/Persistence.txt.

    . . :

    ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
    , , ( ), Write-Through.

    udev . Arch Linux /etc/modules-load.d/boot.conf. :

    enhanceio enhanceio_fifo enhanceio_lru
    FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

    eio_cli -p lru, fifo rand. .

    :

    /usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
    . , , udev , . , :

    cat /proc/enhanceio/sda/stats
    ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

    , . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
SSD. :

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
SSD. :

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
     SSD.    : 

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
SSD. :

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
     SSD.    : 

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .
SSD. :

$ udevadm info --query=env --name=/dev/sdb

, . , ( ) . ID_SERIAL DM_UUID.

<source_match_expr> , , .., , /dev/sda:

$ udevadm info --query=env --name=/dev/sda
udev <cache_name> sda, <block_size> β€” 4096, /sbin/eio_cli /usr/local/sbin/eio_cli.

udev Documents/Persistence.txt.

. . :

ro ( Read Only) β€” , HDD, SSD, SSD. , . wt ( Write-Through) β€” , HDD, SSD. , SSD . , . wb ( Write-Back) β€” , SSD, HDD. SSD. , .. , HDD, .
, , ( ), Write-Through.

udev . Arch Linux /etc/modules-load.d/boot.conf. :

enhanceio enhanceio_fifo enhanceio_lru

FIFO LRU β€” . FIFO Β« Β», LRU β€” Β« , Β». LRU Β« / Β», , FIFO. FIFO LRU , README.txt EnhanceIO.

eio_cli -p lru, fifo rand. .

:

/usr/local/sbin/eio_cli create -d /dev/sda -s /dev/sdb -m wt -b 4096 -c sda
. , , udev , . , :

cat /proc/enhanceio/sda/stats
ssd_reads ssd_writes. , SSD . , . ssd_reads ssd_writes β€” . , , .

, . . , . , , Device Mapper . , , . , fsck . , EnhanceIO , , SSD. , , , .

Source: https://habr.com/ru/post/169845/


All Articles