如何设置bcache?
我试图在Ubuntu 14.04中使用全新安装和空/home
分区( /dev/sdb2
)作为后备设备来设置bcache。 我的SSD上有一个正在运行的系统,我想使用它的/dev/sda2
分区来缓存我的/home
。 我总是设法从论坛中解决我的ubuntu问题,但我很难理解这里的基础知识并需要帮助:
- 我首先设置bcache时需要登录什么帐户? 显然,在
/dev/sdb2
上安装期间创建的用户必须注销/home
才能卸载,因此我在一个单独的分区上设置了一个临时用户帐户来执行此操作。 这似乎太笨拙了。 -
make-bcache -B
和-C
都告诉我设备上有非bcache超级块,所以我在两个设备上都做了sudo wipefs -a
。 然后,分区显示为未格式化,GParted中没有UUID。 这是正常的吗? -
如果是这样,fstab和
/home
在启动时会发生什么? 我是否需要在fstab中使用bcache的UUID? 我做了,但系统在下次启动时没有找到/home
分区。 -
echo /dev/sdb2 > /sys/fs/bcache/register
和echo /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并使用fdisk
或gparted
创建以下分区方案。 假设/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设置。