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

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

我想知道是否有人尝试安装和运行使用闪存缓存或者缓存用于 SSD 缓存?

你是怎么做到的?

答案1

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

将你的根文件系统转换为 bcache在里面blocksREADME 中有说明。

bcache 需要 Linux 3.10 或更新版本,位于 saucy 中,可以从以下位置手动安装 http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D(查找当前的最新标记版本v3.11.5-saucy,并安装与您的体系结构相匹配的 deb)。

bcache-tools可以blocks我的存储 ppa

答案2

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

这些步骤概述于自述文件-DKMS在 Github 上。

构建模块

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

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

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. 构建并安装模块:

    make -f Makefile.dkms
    

创建闪存缓存设备

(在这个例子中,我使用写回缓存 - 默认 - 但是 flashcache 也可以执行 writearound 和 writethrough)

缓存非 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. 重启!

使用根设备时的注意事项

当将闪存缓存用作根设备时,一个小麻烦是 grub-probe 无法检测到根设备,并且会弄乱您的启动菜单,从而导致您有两个 Ubuntu 目录。但是,实际上您使用哪个并不重要,因为上述步骤会make -f Makefile.dkms boot_conf在您的 initrd 中安装一些脚本,这些脚本将检测并使用闪存缓存设备。

答案3

事先警告:bcache 不能用于您现有的 Ubuntu 安装。如果您的操作系统需要 SSD 缓存,则应等待可以设置 SSD 缓存的 Ubuntu 安装程序的未来版本或特殊版本。请参阅 Oli 的回答:bcache 需要全新安装吗?

对于其他想要使用 bcache 驱动器来存储非操作系统数据的人:

如果您使用的是 13.04 或更早版本,则首先要使用内核主线 PPA 升级内核。使用说明可在此处找到:

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

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

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

git clone http://evilpiepirate.org/git/bcache-tools.git

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

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

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

本指南介绍如何格式化驱动器(SSD您可以将两个硬盘驱动器连接到同一个设备块,然后将它们连接到一起,使用 bcache 创建一个新设备块。如果您发现这些说明令人困惑,请发表评论,我会通过简化来更新此答案。

答案4

我想在这里评论一下我安装新内核时发生的情况。我仅将 flashcache 用于 /home/ 文件夹分区。我安装了一个新内核,启动后它在启动过程中停止并说找不到 /dev/mapper/home_cached,收到此消息时您有 3 个选择,我选择以 root 身份登录并尝试修复它。我首先尝试加载 flashcache 模块,它说找不到它。所以我想我必须为刚刚安装的这个新内核编译并安装它。我仍然有位于 /root/ 内的 /flashcache/ 文件夹,所以我进入它并运行

make -f Makefile.dkms boot_conf

然后我跑了

make install

然后我加载了 flashcache 模块

modprobe flashcache

然后我只需要加载我现有的 flashcache 设备

flashcache_load /dev/sdb1

然后只需挂载我的主分区即可

mount /home

然后使用命令行上的 exit 退出以 root 身份登录,它应该继续正常启动。全部完成!

相关内容