如何安装和使用flashcache / bcache将HDD缓存到SSD?
我想知道是否有人试图安装和运行使用flashcache或bcache构建的内核进行SSD缓存?
你是怎么做到的?
好吧,我们得到了一个bcache答案,但没有flashcache的答案。 我之所以选择flashcache是因为我已经有了一个安装,所以bcache是不可能的。 对我而言,设置似乎也更容易。 我选择了DKMS方法,所以每次进行内核升级时都不会遇到重建模块/工具的问题。
这些步骤在Github上的README-DKMS中列出。
构建模块
-
您要做的第一件事是安装构建先决条件:
sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
-
然后抓住来源:
git clone git://github.com/facebook/flashcache; cd flashcache
-
构建和安装模块:
make -f Makefile.dkms
创建一个flashcache设备
(在这个例子中我使用了写回缓存 – 默认 – 但是flashcache也可以做writearound和writethrough)
缓存非根(未安装在/)设备
sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX
其中fcache是创建的设备(/ dev / mapper / fcache),/ dev / sdaX是SSD partion(或整个磁盘),/ dev / sdbX是HDD划分。
缓存您的根设备
如果您正在缓存根设备,还有一些步骤。 这部分你需要一个Ubuntu LiveCD / USB。
-
cd /path/to/flashcache/source
-
make -f Makefile.dkms boot_conf
-
编辑/boot/grub/grub.cnf和/ etc / fstab从/ dev / mapper / fcache启动(我不相信这一步确实是必要的,但它说的是)。 请务必记下原始根设备的UUID。
-
使用LiveCD / LiveUSB重新启动。
-
挂载根设备:
mount /dev/sda4 /mnt
(/ dev / sda4是我的Linux根分区) -
cd /mnt/path/to/flashcache/source
-
sudo apt-get install dkms build-essential linux-headers-$(uname -r)
-
make; sudo make install
make; sudo make install
无需在实时环境中进行整个DKMS设置 -
卸载根设备
sudo umount /mnt
-
sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID]
其中fcache是创建的设备(它应该与放在/ etc / fstab和/ boot / grub / grub中的相同。 cnf,在我的例子中是fcache),/ dev / sdbX是SSD分区(或整个磁盘),[UUID]是根分区的UUID。 -
重启!
使用根设备时需要注意
当flashcache用于根设备时,一个小麻烦是grub-probe无法检测到根设备并且可能搞乱你的启动菜单,因此你有两个Ubuntu entires。 但是,在所有现实中使用哪个并不重要,因为上面的make -f Makefile.dkms boot_conf
步骤会在initrd中安装一些将检测并使用flashcache设备的脚本。
有一个转换工具可以在现有设备上启用bcache(披露:我写了它)。 这也是进行全新安装的方法,因为当前的发行版安装程序不知道如何创建bcache设备(在这种情况下:首先安装到HDD)。
有关说明,请参阅blocks
README中的根文件系统转换为bcache 。
bcache需要Linux 3.10或更新版本,它很好,可以从http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D手动安装(查找最新的标记版本) ,目前是v3.11.5-saucy
,并安装与您的架构相匹配的v3.11.5-saucy
)。
bcache-tools
和blocks
可以从我的存储ppa安装。
事先警告:bcache不能用于现有的Ubuntu安装。 如果您的操作系统需要SSD缓存,则应等待可能设置SSD缓存的Ubuntu安装程序的未来版本或特殊版本。 Oli在这里看到这个答案: bcache是否需要全新安装?
对于其他想要为非操作系统数据执行bcache驱动的人:
首先要做的是使用内核主线PPA使用13.04或更早版本来升级内核。 使用此说明可在此处找到:
https://wiki.ubuntu.com/Kernel/MainlineBuilds
确保在启动时选择3.9或更高版本的内核,否则它将无法运行,您的驱动器将消失。
安装bcache-tools,此时必须从git存储库安装:
git clone http://evilpiepirate.org/git/bcache-tools.git
如果你设法为debian打包bcache-tools
,请告诉我们,这个问题会为你更新。 ( bcache-tools
的构建依赖项是uuid-dev
和libblkid-dev
。必须安装它们才能构建bcache-tools
。)
准备好所有工具后,您就可以尝试按照此处的指南操作:
http://atlas.evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt
本指南介绍如何格式化驱动器(SSD 和硬盘驱动器),然后将它们连接在一起以使用bcache创建新的设备块。 如果您发现说明令人困惑,请发表评论,我将简化更新此答案。
我以为我会来这里评论安装新内核时发生的事情。 我只在我的/ home /文件夹分区中使用flashcache。 我安装了一个新内核,启动它并在启动时停止并说它找不到/ dev / mapper / home_cached,当你收到这条消息时我有3个选择,我选择以root用户身份登录试图解决它。 我首先尝试加载flashcache模块,它说它找不到它。 所以我想我必须为我刚安装的这个新内核编译和安装它。 我仍然将/ flashcache /文件夹放在/ root /中,所以我进入它并运行
make -f Makefile.dkms boot_conf
然后我跑了
make install
然后我加载了flashcache模块
modprobe flashcache
然后我只需要加载我现有的flashcache设备
flashcache_load /dev/sdb1
然后用我的主分区挂载
mount /home
然后退出以root用户身份登录并退出命令行,它应该继续正常启动。 全部完成!