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

kap*_*pad 54 ssd kernel cache hard-drive bcache

我想知道是否有人尝试安装和运行使用flashcachebcache构建的内核以进行 SSD 缓存?

你是怎么做到的?

Gab*_*iel 13

有一个用于在现有设备上启用 bcache 的转换工具(披露:我写的)。这也是全新安装的方式,因为当前的发行版安装程序不知道如何创建 bcache 设备(在这种情况下:从安装到 HDD 开始)。

你的根文件系统转换成BCACHEblocksREADME的说明。

bcache 需要 Linux 3.10 或更新版本,这很有趣,可以从http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D手动安装 (寻找最新的标记版本,当前v3.11.5-saucy,并安装与您的架构匹配的 deb)。

bcache-tools并且blocks可以从我的存储 ppa安装。


Chu*_*k R 11

好吧,我们得到了 bcache 答案,但没有 flashcache 答案。我选择 flashcache 是因为我已经有一个现有的安装,所以 bcache 是不可能的。对我来说,设置似乎也更容易。我选择了 DKMS 方法,这样我就不会在每次内核升级时都被困在重建模块/工具中。

Github 上的README-DKMS中概述了这些步骤。

构建模块

  1. 您要做的第一件事是安装构建先决条件:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后获取源代码:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
    Run Code Online (Sandbox Code Playgroud)
  3. 构建和安装模块:

    make -f Makefile.dkms
    
    Run Code Online (Sandbox Code Playgroud)

创建闪存缓存设备

(在这个例子中,我使用了写回缓存——默认的——但是 flashcache 也可以进行写回和直写)

缓存非 root(未安装在 /)设备

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX 其中 fcache 是创建的设备(/dev/mapper/fcache),/dev/sdaX 是 SSD 分区(或整个磁盘),/dev/sdbX 是 HDD 分区。

缓存根设备

如果您要缓存根设备,还有几个步骤。本部分需要 Ubuntu LiveCD/USB。

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. 编辑 /boot/grub/grub.cnf 和 /etc/fstab 以从 /dev/mapper/fcache 启动(我不认为这一步真的有必要,但它说到)。请务必记下原始根设备的 UUID。

  4. 使用 LiveCD/LiveUSB 重新启动。

  5. 挂载你的根设备:mount /dev/sda4 /mnt(/dev/sda4 是我的 Linux 根分区)

  6. cd /mnt/path/to/flashcache/source

  7. sudo apt-get install dkms build-essential linux-headers-$(uname -r)

  8. make; sudo make install 无需在实时环境中进行整个 DKMS 设置

  9. 卸载根设备 sudo umount /mnt

  10. 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。

  11. 重启!

使用根设备时的注意事项

将 flashcache 用于根设备时的一个小烦恼是 grub-probe 无法检测到根设备,并且可能会弄乱您的启动菜单,从而使您拥有两个 Ubuntu 整体。但是,在现实中使用哪个并不重要,因为make -f Makefile.dkms boot_conf上面的步骤会在您的 initrd 中安装一些脚本,这些脚本将检测和使用 flashcache 设备。

  • 我看到至少在 raring 中有 flashcache-dkms 和 flashcache-utils 的软件包。安装会如何变化? (2认同)

Mar*_*mo- 5

预先警告:bcache 不能用于您现有的 Ubuntu 安装。如果您的操作系统需要 SSD 缓存,您应该等待未来或特殊版本的 Ubuntu 安装程序,它可以设置您的 SSD 缓存。在此处查看 Oli 的回答:Does bcache requires a fresh installation?

对于需要用于非操作系统数据的 bcache 驱动器的其他所有人:

如果您使用内核主线 PPA 使用 13.04 或更早版本,那么首先要做的是升级内核。使用说明可以在这里找到:

https://wiki.ubuntu.com/Kernel/MainlineBuilds

确保在启动时选择 3.9 或更高版本的内核,否则它将无法工作并且您的驱动器将消失。

安装 bcache-tools,目前你必须从 git 存储库安装:

git clone http://evilpiepirate.org/git/bcache-tools.git
Run Code Online (Sandbox Code Playgroud)

如果您设法bcache-tools为 debian打包,请告诉我们,我们会为您更新此问题。(bcache-tools的构建依赖项是uuid-devlibblkid-dev。必须安装它们才能构建bcache-tools。)

准备好所有工具后,您就可以尝试按照此处的指南进行操作:

http://atlas.evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt

本指南展示了如何格式化驱动器(SSD硬盘驱动器),然后将它们连接在一起以使用 bcache 制作新的设备块。如果您发现说明令人困惑,请发表评论,我将通过简化更新此答案。