存储改造与 bcache 的配置和使用

May 4, 2019 默认分类

博主的老电脑有一块机械硬盘(320G),还有一块不甚靠谱的固态硬盘(120G)。去掉留给 Windows 的空间,机械硬盘上有 200G ,用于放置 /home 和虚拟机,但没有使用 LVM。而固态硬盘上有 44G 给 Linux 系统使用,使用了 LVM。由于处理器不支持 AES-NI ,博主只加密了机械硬盘上的分区。

后来,由于不使用 LVM 带来的不灵活性,以及要使用 bcache 加速,博主决定重新处理机械硬盘上的 /home 分区。

改造

准备工作:安装 bcache-tools,进入单用户模式

首先,要备份 /home 。dump 系命令在备份和恢复速度上与 tar 相比有一定优势。又因为博主的 /home 使用了 XFS ,于是, xfsdump -f <dump path> /home备份。成功备份后,用wipefs -a摧毁文件系统签名,以创建 bcache 设备。

为了防止加密数据泄漏,这里使用的 bcache 缓存设备只能缓存加密过的数据(缓存位于固态硬盘,而固态硬盘上的 LVM 卷组没有加密),需要先建立 bcache 设备。make-bcache -B <低速设备> -C <高速设备>,尽量在一个命令中完成,避免需要手动操作以添加缓冲。操作后,/dev/bcache0就出现了。接着,加密这个设备。执行cryptsetup luksFormat --key-size 512 --pbkdf argon2id --type luks2 --integrity hmac-sha256 /dev/bcache0,这里,使用了 LUKS2 并使用了数据完整性验证特性,防止恶意破坏。由于使用了 integrity ,cryptsetup 必须(虽然可以跳过)清零加密后的设备以避免出现完整性验证失败的情况。一般而言,即使是略老的处理器,也通常不会成为完整性验证的瓶颈,瓶颈一般是硬盘。在约两个小时后,加密设备建立成功。

接着,建立卷组。此处就不赘述了。再恢复 /home 的文件,这次是用 xfsrestore ,恢复到没有挂载的 XFS 设备。最后,还有相当关键的一步——对应修改配置文件。由于动了分区结构和加密卷,/etc/fstab/etc/crypttab都需要修改。crypttab 改为 <path> /dev/bcache0 none luks,而fstab根据实际情况相应修改。

最重要的一步来了——按下 ctrl-alt-del ,电脑重启,很快,提示输入加密密码。输入密码后,桌面管理器很快出现,登录,依然是熟悉的桌面,改造成功。

bcache 的使用

bcache 自动区分冷热数据(使用 LRU 算法),智能安排缓存。
bcache 的观测和控制全部通过/sys目录,对于/dev/bcache<n>而言,对应的目录是/sys/block/bcache<n>,目录中有几项相当重要的文件。

/sys/block/bcache0/bcache/state : bcache 设备状态
可能值:

  • no cache :从没有附加过缓存设备。通过attach文件把缓存加上去
  • clean :正常,没有数据要从缓存设备写回后备设备。
  • dirty :正常,有脏数据没有写回后备设备。
  • inconsistent :有麻烦了。缓存设备不存在,且其中含有脏数据。

/sys/block/bcache0/bcache/stats_*/cache_hit_ratio :(不同时间内)缓存命中率,如果长期过低,可能是缓存过小或工作负载不适合。

为了提高写入性能,建议将cache_mode设置为 writeback 。此选项不会带来显著的数据安全风险。


相关文章

添加新评论

 我们使用cookie在本地保存您评论时填写的信息,参见隐私条款