我尝试在 Ubuntu 14.04 中设置 bcache,使用全新安装和一个空/home
分区 ( /dev/sdb2
) 作为备份设备。我的 SSD 上有一个正在运行的系统,我想使用它的/dev/sda2
分区来缓存我的/home
。我总是设法从论坛中解决我的 ubuntu 问题,但我很难理解这里的基本知识,需要帮助:
首先,当我设置 bcache 时,我需要登录哪个帐户?显然,安装时创建的用户
/dev/sdb2
必须注销才能卸载/home
,因此我在单独的分区上设置了一个临时用户帐户来执行此操作。这似乎已经太笨拙了。make-bcache -B
并且-C
都告诉我设备上有非 bcache 超级块,所以我sudo wipefs -a
在两个设备上都这样做了。然后分区在 GParted 中显示为未格式化且没有 UUID。这是正常的吗?如果是这样,那么 fstab 和启动时会发生什么?我需要在 fstab 中使用 bcache 的 UUID 吗?我这样做了,但系统在下次启动时
/home
找不到该分区。/home
echo /dev/sdb2 > /sys/fs/bcache/register
和都echo /dev/sda2 > /sys/fs/bcache/register
返回“权限被拒绝”消息;据我所知/sys
无法写入。看来
echo /dev/sdb2 | sudo tee /sys/fs/bcache/register
已经起到了作用。
有人能验证这是在 Ubuntu 中执行此操作的正确方法吗?
我似乎已经成功创建、注册并附加了备份驱动器,但根据我的描述,tail /sys/block/bcache0/bcache/stats_total/*
我只有绕过的数据。我的整个设置现在很乱,因此任何澄清都将不胜感激。
答案1
对于 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
对于 Ubuntu 17.10 或更新版本,您还需要复制 resolv.conf 文件,以便 DNS 解析在环境中正常工作chroot
。
sudo mv /mnt/etc/resolv.conf /mnt/etc/resolv.conf.backup
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 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
答案2
经过反复尝试,我找到了以下解决方案全新安装:
- 按您喜欢的方式对硬盘进行分区(假设
/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”。)- 像往常一样运行安装程序,确保选择高级磁盘分区选项。
- 安装程序会创建包含并加载内核模块
initrd
的映像,bcache
因为我们bcache-tools
之前已经安装了该模块,所以重启后它就可以正常工作。 - 启动已安装的系统后,
bcache-tools
再次安装,以便进一步的更新不会通过从 initrd 映像中省略必要的 bcache 内核模块来破坏启动过程。
答案3
我也尝试过很多次,但都失败了,直到我找到了这些说明: 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 设置。