如何设置bcache?


11

我尝试在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返回“权限被拒绝”的消息; 据我了解/sys,无法写入。

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

有人可以验证这是在Ubuntu中执行此操作的正确方法吗?

我似乎设法创建,注册和附加了后备驱动器,但根据tail /sys/block/bcache0/bcache/stats_total/*我所说,我只是绕过了数据。我的整个设置现在很乱,因此任何澄清将不胜感激。


你测试过了吗?似乎您知道“操作方法”,您需要知道什么?
Braiam 2014年

我如上所述进行了测试,并且遇到了缓存命中,未命中和绕过的情况。问题是应该作为我的主分区的后备设备在启动时没有作为主目录挂载,而是作为单独的驱动器挂载。因此,我的/ home目前是/上的文件夹,我正在通过将文件复制到后备设备上并对其进行访问来测试bcache。我搞砸了fstab,这可能是一个错误,并且如果有任何意义的话,我现在没有用于/ home分区的有效UUID。.我需要的是专门针对ubuntu的防白痴的演练。
Laszlo Almasi 2014年

好吧,我搞砸了fstab和/ home的UUID错误。现在似乎可以正常工作了。我仍然对应该如何正确设置bcache感兴趣:从临时用户帐户,实时CD / USB或其他帐户?
Laszlo Almasi 2014年

Answers:


7

在Ubuntu 15.10中,alex的答案不再正确。该initramfs映像已锁定在安装程序中,并且在安装系统后不会自动重新生成。这样就可以bcache安装了,但无法启动。我在其他地方对下面的过程作了详细的描述 ; 但是,以下是基本知识:

1.分区

引导至Ubuntu live-cd,并使用fdisk或创建以下分区方案gparted。假设/dev/sda您的SSD /dev/sdb是您的HDD:

/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

2

经过一番尝试和错误之后,我得出了以下用于全新安装的解决方案

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

最后我没有使用bcache,因为我需要在双引导配置中同时为Ubuntu和Windows缓存,而且我还从另一个系统访问驱动器。因此,我认为缓存不适合此PC。还是要谢谢你的帮助。
Laszlo Almasi 2015年

0

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

它们听起来有些毛茸茸,但这可能是使bcache继续运行的唯一可行方法,至少直到bcache成为ubuntu安装程序的一部分为止。

说明中唯一奇怪的遗漏是最后一步。

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

echo <UUID> > /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设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.