Flashcache kasutamine operatsioonisüsteemiga Debian Wheezy
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
- http://bcache.evilpiepirate.org/
- https://github.com/facebook/flashcache/
- https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/device-mapper/cache.txt?id=c6b4fcbad044e6fffcc75bba160e720eb8d67d17
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
- bcache - http://blog-vpodzime.rhcloud.com/?p=45
- lvm dm-cache - http://blog-vpodzime.rhcloud.com/?p=45
- ext4 journal eraldi plokkseadmel - http://www.linux-mag.com/id/7642/
Kasulikud lisamaterjalid
- https://raid6.com.au/posts/SSD_caching/
- https://raid6.com.au/posts/SSD_caching_problems/
- https://insights.ubuntu.com/2015/12/10/using-bcache-for-performance-gains-on-the-launchpad-database-servers/
Kasulikud lisamaterjalid
- http://nitocris.over-blog.net/article-flash-cache-as-home-or-root-on-ubuntu-109792445.html
- http://randomcrystal.blogspot.com/2013/03/hybrid-ssdhdd-ssd-caching-using.html
- https://wiki.archlinux.org/index.php/Flashcache
- http://www.sebastien-han.fr/blog/2012/11/15/make-your-rbd-fly-with-flashcache/
- http://www.gerrit-tamboer.net/using-flashcache-to-speed-up-your-io-on-ubuntu-12-04/
- http://www.youtube.com/watch?v=l910kiEuHOM&feature=plcp&context=C33c49bfUPOEgsToPDskIEWB0QeZSw3VycVxsIgOm4