我想知道是否有人尝试安装和运行使用flashcache或bcache构建的内核以进行SSD缓存?
您是如何做到的?
我想知道是否有人尝试安装和运行使用flashcache或bcache构建的内核以进行SSD缓存?
您是如何做到的?
Answers:
好吧,我们得到了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也可以执行写回和透写操作)
缓存非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。
重启!
使用根设备时的警告
当将flashcache用于根设备时,一个小麻烦是grub-probe无法检测到根设备,并且会弄乱您的启动菜单,从而使您拥有两个Ubuntu整体。但是,实际上使用哪个都没关系,因为make -f Makefile.dkms boot_conf
上面的步骤在initrd中安装了一些脚本,这些脚本将检测和使用flashcache设备。
linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodeset
至linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset
(即更改root =参数)
有一个转换工具可以在现有设备上启用bcache(公开:我写了它)。这也是进行全新安装的方法,因为当前的发行版安装程序不知道如何创建bcache设备(在这种情况下:从安装到HDD开始)。
请参阅自述文件中的将根文件系统转换为bcache的blocks
说明。
bcache需要使用Linux 3.10或更高版本,该版本已很安全,可以从http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D手动安装
(查找最新的带标记的版本) ,当前v3.11.5-saucy
,并安装与您的体系结构匹配的debs)。
bcache-tools
并且blocks
可以从安装我的存储PPA。
/
,/home
,/usr/
在系统运行时,...)(如maintboot被打破)。或者,您可以使用活动的USB记忆棒,然后blocks
在此处安装并用于转换磁盘。但是请注意,此工具仅适用于主MBR和GPT分区表,并且在每个分区之前需要1MiB的额外空间。
事先警告:bcache不能用于您现有的Ubuntu安装。如果您需要操作系统的SSD缓存,则应等待Ubuntu安装程序的将来版本或特殊版本,该版本可以设置SSD缓存。在这里查看Oli的答案:bcache是否需要全新安装?
对于希望为非OS数据提供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构成新的设备块。如果您发现说明令人困惑,请发表评论,我将通过简化来更新此答案。
我以为我会来这里并评论我安装新内核时发生的事情。我仅对/ home /文件夹分区使用了flashcache。我安装了一个新内核,启动后进入内核,并在启动过程中停止运行,并说找不到/ dev / mapper / home_cached,收到此消息时您有3种选择,我选择以root身份登录并尝试修复它。我首先尝试加载flashcache模块,但它说找不到它。所以我认为我必须为刚刚安装的这个新内核编译并安装它。我仍然在/ root /中有/ flashcache /文件夹,所以我将其CD并运行
make -f Makefile.dkms boot_conf
然后我跑了
make install
然后我加载了flashcache模块
modprobe flashcache
然后我只需要加载我现有的闪存缓存设备
flashcache_load /dev/sdb1
然后只需挂载我的家庭分区
mount /home
然后退出以root身份登录,并在命令行上退出,它应该继续正常启动。全部做完!