Flashcache kasutamine operatsioonisüsteemiga Debian Wheezy

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Flashcache võimaldab kasutada ühte plokkseadet teise plokkseadme puhvrina. Tavaliselt kasutatakse kiiremat-väiksemat-kallimat aeglasema-suurema-odavama puhvrina, nt SSD HDD ees. Mõned võimalikud kasutusjuhud

  • töökohaarvutis on / failisüsteem SSD kettal; /home ise on HDD kettal, kuid seda kasutatakse flashcache abil
  • töökohaarvutis kasutatakse kõiki failisüsteeme flashcache abil

Kuna ühelt poolt on arvuti algakäivitamist flashcache plokkseadmelt keerulisem korraldada ja samas juurikal asuv operatsioonisüsteemi osa reeglina ei võta kuigi palju ruumi, siis võiks korraldada ka nii, et kogu juurikas on SSD peal ning muude st /home jaoks kasutatakse flashcache'i; arvestades, et /home on palju mahukam kui tänapäeval mõistlikud SSD kettaste hinnad võimaldavad.

Tööpõhimõte

SSD kasutamine HDD puhvrina

  • writeback - annab kõige suurema efekti jõudluse mõttes, samal ajal teistest riskantsem kuna kirjutamine loetakse õnnestunuks peale SSD kettale kirjutamist
  • writethru - lugemise osas efektiivne, kirjutamisel efekti pole kuna oodatakse kuni HDD kettale on kirjutamine õnnestunud
  • writearound - lugemise osas efektiivne, kirjutamine toimub nö tavalisel viisil otse HDD kettale

Tundub, et SSD kasutamiseks HDD puhvrina on 2013 aasta kevadel mitmeid tehnoloogiaid, nt

Flashcache tarkvara tuleb 2013 aastal kompileerida lähtetekstist. Ettevalmistamiseks sobib öelda

# apt-get install git-core dkms build-essential linux-headers-`uname -r`

Kopeerida Flashcache tarvkara

# git clone https://github.com/facebook/flashcache.git

ja öelda

# make -f Makefile.dkms
...

flashcache:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/3.2.0-4-amd64/updates/dkms/

depmod.........

Backing up initrd.img-3.2.0-4-amd64 to /boot/initrd.img-3.2.0-4-amd64.old-dkms
Making new initrd.img-3.2.0-4-amd64
(If next boot fails, revert to initrd.img-3.2.0-4-amd64.old-dkms image)
update-initramfs...........

DKMS: install completed.

Tulemusena tekib fail

/lib/modules/3.2.0-4-amd64/updates/dkms/flashcache.ko

Kasutamiseks moodul laadida

# modprobe flashcache
# dmesg
...
[3081498.005174] flashcache: flashcache-2.0 initialized

Lisaks kompileeriti flashcache kasutamiseks vajalikud utiliidid, nende paigaldamiseks tuleb öelda

# make install

Tulemusena tekivad failid

/sbin/flashcache_create
/sbin/flashcache_destroy
/sbin/flashcache_load
/sbin/flashcache_setioctl
/sbin/get_agsize

Lisaks kopeerida

# cp /usr/src/flashcache/utils/flashstat /sbin

Flashcache writeback seadme haldamine

FC seadme tekitamine

Writeback seadme tekitamiseks tuleb valida välja, millist plokkseadet kasutatakse puhverdamiseks ja millise juures puhvrit kasutatakse, nt

# flashcache_create -v -p back system_home_fs /dev/sdb /dev/system/home
  • /dev/sdb - puhver, ssd ketas
  • /dev/system/home - mida puhverdatakse
  • -v - verbose mode
  • -p back - moodustatakse writeback režiimis töötav seade
  • system_home_fc - tulemusena moodustatakse /dev/mapper/system_home_fc seade, mis tuleb kasutamiseks külge monteerida

FC seadme kasutamine

# mount /dev/mapper/fcdev /home

FC seadme kasutamise lõpetamine

Eemaldamiseks tuleb esmalt puhvrid kirjutada puhverdatavale seadmele ära

# dmsetup remove fcdev

Kui tekitatud setup'i soovitakse edasi kasutada, siis sobib öelda

# flashcache_load /dev/sdb

Kui tekitatud setup'i enam ei soovita kasutada, siis kustutada FC seade

# flashcache_destroy /dev/sdb

Töö jälgimine

# flashstat -d /dev/mapper/fcdev
======================================================================================================
Flashstat: a tool for flashcache status per second
Author   : NinGoo(seaman.ning@gmail.com)
Version  : 0.3
======================================================================================================
          SSD Device:   /dev/sdb         Disk Device: /dev/system/fcdev   Cache Mode: WRITE_BACK
            Capacity:     40798M          Block Size:         4K     Meta Block Size:      4096b
        Total Blocks:   10444288       Cached Blocks:    5443412      Cached Percent:         52
         Set Numbers:        512        Dirty Blocks:       3217       Dirty Percent:          0
           cache_all:          1      reclaim_policy:       FIFO    dirty_thresh_pct:         20
   max_clean_ios_set:          2 max_clean_ios_total:          4     skip_seq_thresh:         0K
======================================================================================================
          time  read/s write/s diskr/s diskw/s  ssdr/s  ssdw/s uread/s uwrit/s metaw/s clean/s  repl/s wrepl/s   hit%  whit%  dwhit%
06-11 11:57:36       0       0       0       0       0       0       0       0       0       0       0       0   0|99   0|90    0|24 
06-11 11:57:37       0       0       0       0       0       0       0       0       0       0       0       0   0|99   0|90   0|24 

kus

  • TODO
# dmsetup table system_home_fc
0 209715200 flashcache conf:
       ssd dev (/dev/sda3), disk dev (/dev/system/home) cache mode(WRITE_BACK)
       capacity(40798M), associativity(512), data block size(4K) metadata block size(4096b)
       skip sequential thresh(0K)
       total blocks(10444288), cached blocks(5443413), cache percent(52)
       dirty blocks(3083), dirty percent(0)
       nr_queued(0)
Size Hist: 1024:1 4096:114733
# dmsetup status system_home_fc
0 209715200 flashcache stats: 
       reads(54812), writes(59876)
       read hits(54489), read hit percent(99)
       write hits(55045) write hit percent(91)
       dirty write hits(17229) dirty write hit percent(28)
       replacement(256), write replacement(1837)
       write invalidates(0), read invalidates(0)
       pending enqueues(284), pending inval(284)
       metadata dirties(42363), metadata cleans(39311)
       metadata batch(72830) metadata ssd writes(8844)
       cleanings(39311) fallow cleanings(1518)
       no room(0) front merge(35057) back merge(1124)
       disk reads(325), disk writes(39595) ssd reads(93798) ssd writes(68760)
       uncached reads(1), uncached writes(284), uncached IO requeue(0)
       disk read errors(0), disk write errors(0) ssd read errors(0) ssd write errors(0)
       uncached sequential reads(0), uncached sequential writes(0)
       pid_adds(0), pid_dels(0), pid_drops(0) pid_expiry(0)

Crash recovery

TODO

Käivitusskript

TODO, näidis asub lähteteksti kataloogis

src/utils/flashcache

Alternatiivsed lahendused

Kasulikud lisamaterjalid

Kasulikud lisamaterjalid