首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置bcache?

如何设置bcache?
EN

Ask Ubuntu用户
提问于 2014-09-14 09:05:25
回答 3查看 21.9K关注 0票数 13

我尝试在Ubuntu14.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会发生什么呢?我需要使用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/*,我只是绕过了数据。我的整个设置现在是相当混乱的,所以任何澄清都将不胜感激。

EN

回答 3

Ask Ubuntu用户

发布于 2016-02-18 03:59:59

在Ubuntu 15.10中,alex的答案已不再正确。initramfs映像被锁定在安装程序中,在安装系统时不会自动重新生成。因此,将有一个bcache安装,但它将无法启动。我编写了一个更多的其他地方对下列过程的详细说明;但是,下面是基本内容:

1.分区

引导到Ubuntu并使用fdiskgparted创建以下分区方案。假设/dev/sda是您的SSD,而/dev/sdb是您的硬盘:

代码语言:javascript
复制
/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设备

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

代码语言:javascript
复制
sudo wipefs -a /dev/sda2
sudo wifefs -a /dev/sdb3

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
/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解析

代码语言:javascript
复制
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

对于Ubuntu17.10或更高版本,还需要复制resolv.conf文件,以便DNS解析在chroot环境中工作。

代码语言:javascript
复制
sudo mv /mnt/etc/resolv.conf /mnt/etc/resolv.conf.backup
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

输入chroot并进行安装

代码语言:javascript
复制
sudo chroot /mnt
sudo apt-get update
sudo apt-get install bcache-tools

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

5.清理

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

代码语言:javascript
复制
exit
sudo mv /mnt/etc/resolv.conf.backup /mnt/etc/resolv.conf # for 17.10+ only
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt
sudo reboot
票数 9
EN

Ask Ubuntu用户

发布于 2014-11-03 09:12:30

经过一些尝试和错误之后,我得出了以下的干净安装解决方案:

  • 按照您喜欢的方式对硬盘进行分区(假设/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“下看到一个”分区/dev/bcache0“,并允许您在安装期间将其用作"/home”)。
  • 照常运行安装程序,一定要选择高级磁盘分区选项。
  • 安装程序创建initrd映像,其中包含并加载了bcache内核模块,因为我们之前已经安装了bcache-tools,所以在重新启动之后它就可以工作了。
  • 在引导已安装的系统之后,再次安装bcache-tools,以便进一步的更新不会通过从initrd映像中省略必要的bcache内核模块而削弱引导过程。
票数 2
EN

Ask Ubuntu用户

发布于 2014-10-05 07:31:11

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

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

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

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

代码语言:javascript
复制
echo <UUID> > /sys/block/bcache0/bcache/attach

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

代码语言:javascript
复制
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设置。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/523817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档