如何使用SSD缓存安装在HDD上的完整Linux发行版?
如何使用SSD缓存安装在HDD上的完整Linux发行版?
嘿,我完全理解你想反常规操作的想法——虽然通常大家都会优先把SSD当启动盘,但既然你有自己的需求,咱们一步步来搞定把Ubuntu Server装在HDD、用SSD做全系统缓存的事儿。
第一步:先把Ubuntu Server装到HDD上
首先按常规流程完成系统安装,重点注意磁盘分区环节:
- 启动Ubuntu Server安装镜像,走完语言、键盘、网络这些基础步骤后,到磁盘分区时选择「手动分区」。
- 只操作你的HDD:给它分好根分区(
/)、swap分区(如果需要的话),别碰SSD,留着它后面做缓存用。 - 完成分区后继续安装,直到系统部署完毕,重启进入新系统。
第二步:用BCache配置SSD全系统缓存
BCache是Linux内核自带的块设备缓存工具,配置起来比较直接:
- 先安装BCache工具包:
sudo apt update && sudo apt install bcache-tools - 识别设备:用
lsblk命令确认你的SSD和HDD根分区的设备名,比如SSD是/dev/sdb,HDD根分区是/dev/sda1。 - 初始化SSD为缓存设备:
执行完后会输出一个sudo make-bcache -C /dev/sdbCset UUID,记下来,后面要用到。 - 把HDD根分区转换成BCache后端设备:
sudo make-bcache -B /dev/sda1 - 关联缓存和后端设备:
sudo echo <你刚才记下的Cset UUID> > /sys/block/bcache0/bcache/attach - 验证是否生效:执行
cat /sys/block/bcache0/bcache/state,如果输出是clean或dirty,说明缓存已经正常工作了。 - 设置开机自动挂载:编辑
/etc/fstab文件,把原来根分区的挂载项替换成/dev/bcache0(或者对应的UUID),然后更新initramfs确保启动时能识别BCache:sudo update-initramfs -u
备选方案:用LVM缓存(适合熟悉LVM的用户)
如果你的系统是用LVM分区安装的,用LVM缓存会更灵活:
- 把SSD加入LVM卷组:
- 先创建物理卷:
sudo pvcreate /dev/sdb - 把物理卷加入系统的卷组(默认卷组名一般是
ubuntu-vg):sudo vgextend ubuntu-vg /dev/sdb
- 先创建物理卷:
- 创建缓存池和元数据分区:
# 创建缓存池,大小根据你的SSD调整,比如10G sudo lvcreate -L 10G -n cache_pool ubuntu-vg /dev/sdb # 创建元数据分区,一般设为缓存池大小的10%左右,比如1G sudo lvcreate -L 1G -n cache_meta ubuntu-vg /dev/sdb - 配置缓存池并关联根逻辑卷:
sudo lvconvert --type cache-pool --poolmetadata ubuntu-vg/cache_meta ubuntu-vg/cache_pool sudo lvconvert --type cache --cachepool ubuntu-vg/cache_pool ubuntu-vg/root - 验证缓存状态:
sudo lvs -o+cache_mode,可以看到当前的缓存模式(默认是writeback,也可以改成更安全的writethrough)。
一些重要的注意事项
- 数据安全:如果SSD故障,HDD上的原始数据不会丢失,但缓存里未同步的脏数据可能会损失,所以定期备份还是必不可少的。
- 缓存模式选择:writeback模式性能更好,但突然断电有数据风险;writethrough模式数据会同时写入缓存和HDD,更安全但性能稍弱。
- 缓存大小:一般来说,SSD缓存大小设为HDD已用数据的10%-20%就足够了,太大不会有明显的性能提升。
备注:内容来源于stack exchange,提问作者Ego
相关产品推荐
相关产品推荐

