Xubuntu 13.04 上的 Flashcache

Xubuntu 13.04 上的 Flashcache

首先,我对使用 flashcache 还很陌生,我在这里发布的所有内容都只是关于它的研究。

我有一台华硕 K56CM,i5,配备 500GB 硬盘和 24GB SSD 作为缓存。在默认操作系统 Windows 8 中,使用 Expresscache 在 SSD 中缓存硬盘。

我想在 Xubuntu 中做同样的事情,并且我发现 Flashcache 是实现此目的的更好方法。

我已遵循几本手册,但我却失去了一些东西。

分区表为:

sda      8:0    0 465,8G  0 disk 

├─sda1   8:1    0   5,9G  0 part [SWAP]
├─sda2   8:2    0 117,2G  0 part /
└─sda3   8:3    0 342,7G  0 part /home

sdb      8:16   0  22,4G  0 disk 

├─sdb1   8:17   0   250M  0 part /boot/efi
├─sdb2   8:18   0   5,9G  0 part 
└─sdb3   8:19   0  16,3G  0 part 

SDA是硬盘,SDB是SSD

在 SDB2 中,我使用 gdisk 实现 Intel Rapid Boot,并且我想在 SDB3 中缓存 /home。

我遵循的演练是(http://nitocris.over-blog.net/article-flash-cache-as-home-or-root-on-ubuntu-109792445.html):

 - apt-get install git-core
 - mkdir -p ~/Build/ ; cd ~/Build/
 - git clone https://github.com/facebook/flashcache.git
 - sudo apt-get install git build-essential dkms linux-headers-`uname -r` uuid-dev
 - cd flashcache
 - sudo make -f Makefile.dkms all boot_conf
 - sudo make install
 - sudo modprobe flashcache
 - sudo echo "flashcache" >> /etc/modules
 - dmesg | tail

现在 Flashcache 已经安装好了。但我的问题是在创建 flashcache 链接时。

我采用 SDA3 的 UUID 并在 SDB3 上进行 flashcache_Create:

- umount /home
- flashcache_create -p back home_cached /dev/sdb3 /dev/disk/by-uuid/XXX-XXX (the ID)

然后,我编辑 FSTAB,注释 /home 挂载并添加:

- /dev/mapper/home_cached /home     reiserfs defaults        0       2

一切正常,但是现在,当我重新启动系统时,/home 没有被挂载...我不知道为什么......

有什么帮助吗?

谢谢!

PD:抱歉我的英语不好,我是西班牙人:S

编辑:好的,我有解决方案。每次重启时都必须创建 Flashcache,因此我创建了一个在启动时执行的脚本。我在这里描述了它:http://ubuntuforums.org/showthread.php?t=2179297

答案1

我遇到了同样的问题;我想出了这个 upstart conf 文件,它将查找所有 flashcache 驱动器并加载它们,然后为驱动器设置 sysctl 设置,然后挂载它们。如果您添加更多驱动器,您需要做的就是将它们添加到 /etc/fstab 并确保它们在第四个字段中有 nobootwait 选项,例如

/dev/mapper/export /export ext4 nobootwait 0 1

这是应该放入的文件/etc/init/flashcache.conf

# flashcache - Set up flashcache devices and mount them

description "Set up flashcache devices and mount them on boot"

start on mounted

task

console output

script
    # Load any flashcache devices and get them ready to mount, then set sysctl settings.

    PATH=/sbin:/bin:/usr/bin

    # Load up any flashcache devices
    for P in /dev/disk/by-id/*; do
        if flashcache_load $P 2>/dev/null; then
        echo "Loaded flashcache device from $P"
        fi
    done

    # Now look through all WRITE_BACK devices and set the sysctl settings
    for d in $(dmsetup table | grep 'cache mode(WRITE_BACK)' | perl -pe 's@.*ssd dev \(/dev/disk/by-id/(.*?)\), disk dev \(/dev/disk/.*?/(.*?)\).*@$1+$2@'); do
        # disable writing dirty cache data at shutdown
        sysctl -w dev.flashcache.$d.fast_remove=1
        # change reclaim policy from FIFO to LRU
        sysctl -w dev.flashcache.$d.reclaim_policy=1
        # do not write "stale" data to disk until evicted due to lack of space
        sysctl -w dev.flashcache.$d.fallow_delay=0
    done

end script

答案2

参考:
如何安装和使用 flashcache/bcache 将 HDD 缓存到 SSD?

有两种情况可以创建/配置闪存缓存:

  1. 缓存你的根设备,或者
  2. 缓存非 root(未安装在/)设备

相关内容