答案1
有一个转换工具可用于在现有设备上启用 bcache(披露:这是我写的)。这也是全新安装的方法,因为当前的发行版安装程序不知道如何创建 bcache 设备(在这种情况下:从安装到 HDD 开始)。
看将你的根文件系统转换为 bcache在里面blocks
README 中有说明。
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 上。
构建模块
您要做的第一件事是安装建筑先决条件:
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 也可以执行 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。
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
无需在实时环境中进行整个 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。重启!
使用根设备时的注意事项
当将闪存缓存用作根设备时,一个小麻烦是 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-dev
和libblkid-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 身份登录,它应该继续正常启动。全部完成!