ArchLinux部署SSD缓存
·
hev
在 Linux 系统上使用带宽更高、延迟更小的 SSD 作为 HDD 的缓存来打造软件实现的“混合硬盘”是一种容量和性能折中的方案。在 Linux 系统中使用高速外存作低速外存的缓存有两个成熟的方案:
- lvmcache
- bcache。
本文记录的是基于 lvmcache 在 Arch Linux 系统上的部署方法。
硬件情况
- 一块120GB容量的固态硬盘 (/dev/sda)。
- 一块1TB容量的机械硬盘 (/dev/sdb)。
分区规划
/dev/sda1 20GB lvm
/dev/sda2 100GB lvm
/dev/sdb 1TB lvm
LVM 规划
VG (system) -> { PV (/dev/sda1) }
VG (data) -> { PV (/dev/sdb), PV (/dev/sda2) }
LV (system/arch) 19.9GB
LV (data/home) 917GB
LV (data/home_cache) 91GB
操作系统完全安装在 SSD 中, home 存放于 HDD 中,但使用 SSD 的剩余空间作为 cache。为什么不把所有数据存放于 HDD 中,仅用 SSD 作为 cache 呢?测试结果是当 cache 加入后就影响了系统的启动,所有只能应用于数据区。
详细步骤
- 使用 ArchLinux iso 启动盘启动系统。
- fdisk /dev/sda 先创建一个类型为 lvm 容量为 20GB 的标准主分区,再创建一个类型为 lvm 容量为 100GB 的标准主分区。
- pvcreate /dev/sda1
- pvcreate /dev/sda2
- pvcreate /dev/sdb
- vgcreate system /dev/sda1
- vgcreate data /dev/sdb
- lvcreate -L 19.9G system -n arch
- mkfs.ext4 -E discard /dev/mapper/system-arch
- mount /dev/mapper/system-arch /mnt
- pacstrap /mnt 按照需要安装系统
- arch-chroot /mnt
- lvcreate –type cache –cachemode wirteback -L 91G -n home_cache data/home /dev/sda2
- 另开一个 tty, mount -o bind /run /mnt/run
- 回到原 tty, vim /etc/mkinitcpio.conf,找到 HOOkS,在 block 和 filesystem 之间增加个 lvm2
- mkinitcpio -p linux
- vim /etc/default/grub,找到 GRUB_PRELOAD_MODULES,增加 lvm。
- grub-mkconfig -o /boot/grub/grub.cfg
- grub-install /dev/sda
- 退出,重启。
查看 cache 状态
sudo lvs -o cache_read_hits,cache_read_misses,cache_write_hits,cache_write_misses data/home