最近在台式机上装 Ubuntu Kylin 18.04,台式机有个机械硬盘,感觉用起来很慢,就找了块旧的 128G 的 SSD,想提升一下速度。但毕竟 128G 的盘比较小,于是就想能不能那它做高速缓存,给那个大的机械硬盘提速。
简单查了一下网上的资料,有几个不同的方案,其中 bcache 的方案相对比较成熟,操作上也比较简单,于是就开干。
刚开始,手工做了磁盘分区,然后把 /dev/bcache0 作为根目录来挂载,安装完毕后,系统无法正常启动,于是又查了资料,原来 grub2 并不支持以 bcache 的块类型作为根分区。几番尝试无果后,只好换用其它方案。最终用 LVM 的方案调试成功,下面简单记录方法。
基本环境
- 机械硬盘 /dev/sda,创建两个分区, sda1 500M,作为引导分区,sda2 作为其它部分。
- SSD /dev/sdb,创建三个分区,sdb1 作为 swap,sdb2 留空,sdb3 10G。
安装配置过程
以下命令均需使用 root 身份执行。
1. 创建 LVM
pvcreate /dev/sdb3
vgcreate kylin /dev/sdb3
lvcreate -L8G -nsystem kylin
2. 安装系统
选择手工的安装方式,指定 /dev/sda1 为 /boot,/dev/kylin/system 为 /,安装完毕后重启。
3. 配置 bcache
将 /dev/sda2 作为存储数据的盘,将 /dev/sdb2 作为缓存。
apt-get install bcache-tools
wipefs -a /dev/sda2
wipefs -a /dev/sdb2
make-bcache -B /dev/sda2 -C /dev/sdb2
4. 迁移数据
目的是把之前的 pv 移除,让整个 vg 基于 bcache 运行。
pvcreate /dev/bcache0
vgextend kylin /dev/bcache0 # 扩展 vg
pvmove /dev/sdb3 # 从此 pv 迁移数据到其它 pv
vgreduce kylin /dev/sdb3 # 从 vg 中移除此 pv
5. 扩展系统盘
把系统盘从 8G 扩为 100G
lvresize -L100G /dev/kylin/system
resize2fs /dev/kylin/system
以上步骤完成后,重启系统。