如何设置bcache?

我试图在Ubuntu 14.04中使用全新安装和空/home分区( /dev/sdb2 )作为后备设备来设置bcache。 我的SSD上有一个正在运行的系统,我想使用它的/dev/sda2分区来缓存我的/home 。 我总是设法从论坛中解决我的ubuntu问题,但我很难理解这里的基础知识并需要帮助:

  1. 我首先设置bcache时需要登录什么帐户? 显然,在/dev/sdb2上安装期间创建的用户必须注销/home才能卸载,因此我在一个单独的分区上设置了一个临时用户帐户来执行此操作。 这似乎太笨拙了。
  2. make-bcache -B-C都告诉我设备上有非bcache超级块,所以我在两个设备上都做了sudo wipefs -a 。 然后,分区显示为未格式化,GParted中没有UUID。 这是正常的吗?
  3. 如果是这样,fstab和/home在启动时会发生什么? 我是否需要在fstab中使用bcache的UUID? 我做了,但系统在下次启动时没有找到/home分区。

  4. echo /dev/sdb2 > /sys/fs/bcache/registerecho /dev/sda2 > /sys/fs/bcache/register返回’Permission denied’消息; 据我所知/sys无法写入。

    所以echo /dev/sdb2 | sudo tee /sys/fs/bcache/register echo /dev/sdb2 | sudo tee /sys/fs/bcache/register似乎有效。

有人可以validation这是在Ubuntu中这样做的正确方法吗?

我似乎设法创建,注册和附加后备驱动器,但根据tail /sys/block/bcache0/bcache/stats_total/*我只有绕过的数据。 我的整个设置现在非常混乱,所以任何澄清都将非常感激。

使用Ubuntu 15.10,alex的答案不再正确。 initramfs映像在安装程序中被锁定,并且在安装系统时不会自动重新生成。 因此,将有一个bcache安装,但它将无法启动。 我在其他地方写了一个更详细的以下过程描述 ; 但是,这里是基础知识:

1.分区

启动到Ubuntu live-cd并使用fdiskgparted创建以下分区方案。 假设/dev/sda是你的SSD而/dev/sdb是你的硬盘:

 /dev/sda1 - 1024 MB, EXT4, used for /boot (grub/grub2 doesn't support bcache) /dev/sda2 - any format, for cache /dev/sdb1 - EFI partition (if your machine needs it) /dev/sdb2 - swap /dev/sdb3 - any format, backing partition 

2.创建bcache设备

打开终端,擦除后备和缓存设备上的文件系统:

 sudo wipefs -a /dev/sda2 sudo wifefs -a /dev/sdb3 

安装bcache-tools并创建bcache设备:

 sudo apt-get update sudo apt-get install bcache-tools sudo make-bcache -B /dev/sdb3 -C /dev/sda2 sudo mkfs.ext4 /dev/bcache0 

3.安装Ubuntu

使用自定义分区程序安装操作系统,如下所示:

 /dev/bcache0 - format EXT4, use as / /dev/sda1 - format EXT4, use as /boot /dev/sdb1 - EFI partition (if your machine needs it) /dev/sdb2 - swap 

安装程序完成后请勿重新启动!

4.在新安装上安装bcache

使用chroot我们在新安装上安装bcache-tools 。 设置环境并启用DNS解析

 sudo mount /dev/bcache0 /mnt sudo mount /dev/sda1 /mnt/boot sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo cp /etc/resolv.conf /mnt/etc/resolv.conf 

进入chroot并进行安装

 sudo chroot /mnt sudo apt-get update sudo apt-get install bcache-tools 

在安装过程中,您应该注意到initramfs已重新生成并安装到( chroot -ed) /boot分区。

5.清理

干净地卸载文件系统并重新启动。

 exit sudo umount /mnt/sys sudo umount /mnt/proc sudo umount /mnt/dev sudo umount /mnt/boot sudo umount /mnt sudo reboot 

经过一些反复试验后,我得到了以下解决方案进行全新安装:

  • 按照您喜欢的方式对HDD进行分区(假设/dev/sdb2是您/home所需的空间)。
  • # apt-get install bcache-tools
  • # make-bcache -B /dev/sdb2 -C /dev/sda2 (这会创建/dev/bcache0 ,但是UI安装程序还不能使用它。)
  • # mkfs.ext4 /dev/bcache0 (这使得安装程序在“device / dev / bcache0”下看到“partition / dev / bcache0”,并允许您在安装过程中将其用作“/ home”。)
  • 像往常一样运行安装程序,请务必选择高级磁盘分区选项。
  • 由于我们之前已经安装了bcache-tools ,安装程序会创建包含和加载bcache内核模块的initrd映像,因此重新启动后它才能正常工作。
  • 引导已安装的系统后,再次安装bcache-tools ,以便通过从initrd映像中省略必要的bcache内核模块,进一步更新不会削弱引导过程。

在我找到这些说明之前,我也尝试过多次失败: http : //www.wdong.org/wordpress/blog/2014/05/28/installing-ubuntu-14-04-to-bcache/

它们听起来有点毛茸茸,但这可能是让bcache继续运行的唯一可行方法,至少在bcache成为ubuntu安装程序的一部分之前。

指令中唯一的奇怪遗漏是最后阶段。

完成所有操作后,在/ sys / fs / bcache中查找缓存集的UUID并执行以下操作:

 echo  > /sys/block/bcache0/bcache/attach 

如果您想启用写回模式(我强烈建议):

 echo writeback > /sys/block/bcache0/bcache/cache_mode 

/sys/block/bcache0/bcache/捕获各种文件会告诉你有关缓存如何运行的信息。 我在今年7月26日使用这些说明设置了我的系统,一切都运行得很好。 cat /sys/block/bcache0/bcache/stats_total/cache_hit_ratio显示出非常令人满意的88%,主观上,该机器感觉就像一个全SSD设置。