为ZFS zpool添加固态硬盘缓存 ZIL写缓存|ARC写缓存

调试系统环境:

        Ubuntu22.04

此处使用img文件加载为loop的方式添加至存储池,存在不稳定性,img加载到loop后本质上是一个块设备文件,建议使用单独的SSD或M.2或加速盘作为缓存设备。这里提供一个思路和选择,供学习参考。

数据安全提醒

其实这是一个性价比很高的方案,近百TB的大容量+最热文件内存机读取速度+较热文件nvme的读取速度+nvme的写入速度。
但是作为写入缓存的ZIL(log)坏了比较麻烦,不过也只影响坏之前没有来得及写回ZFS阵列的内容(在非连续高负载下问题不大),根据数据的重要程度选择要不要做成raid1的缓存:

而cache和内存的效果一样,只是作为L2ARC加速读取,内存还是一级ARC,作为最热的文件缓存,L2作为沉淀层。

开机自动挂载SSD

查看硬盘设备

fdisk -l

删除硬盘分区,格式化硬盘

fdisk /dev/sdf
d
w

fsck /dev/sdf

查看硬盘设备UUID

blkid /dev/sdf

编辑/etc/fstab文件,开机自动挂载

vim /etc/fstab

重启测试挂载情况,重启之前先使用mount测试能否正常挂载

reboot

新建loop虚拟盘

使用dd命令创建img文件,大小根据实际情况设置

zfs-log-cache.img 用于log(根据实际情况创建)

zfs-read-cache.img 用于读写缓存

/dev/sdf 为SSD硬盘设备

/swap 为挂载目录,如上图

dd if=/dev/sdf of=/swap/zfs-log-cache.img bs=20G count=1
dd if=/dev/sdf of=/swap/zfs-read-cache.img bs=200G count=1

挂载img为loop

使用losetup指令

losetup -fP zfs-log-cache.img
losetup -fP zfs-read-cache.img
或
losetup /dev/loop* zfs-log-cache.img # *号代表loop编号,如loop1,使用losetup -a可查看以挂载的回环设备
losetup /dev/loop* zfs-read-cache.img
losetup -a

使用ls -l 查看loop设备,loop实际为块设备文件

添加loop设备到zpool

 首先检查zpool的情况:

zpool status

我已经添加了读写缓存,忽略!没添加的情况下没有logs和cache

添加loop到zpool缓存

zpool add pool1 log /dev/loop6
zpool add pool1 cache /dev/loop7

再次查看会显示如上图的logs 和 cache。

查看缓存效果

zpool iostat -v

可以看到读缓存已经工作了。

开机自动挂载loop

此处使用的是systemctl配合脚本的形式实现开机自动挂载loop

注意:zpool池添加缓存设备以后重启系统如果loop设备未挂载,则储存池导入失败,需先挂载loop再导入zpool池。

1、创建一个脚本用于挂载loop设备

vim loop.sh

脚本内容如下,执行 losetup 挂载指令

2、创建一个loop.service文件,用于systemctl开机自启服务,执行loop.sh脚本

[Unit]
# 服务名称,可自定义
Description = loop mount
After = systemd-udev-settle.service
Wants = network.target

[Service]
Type = simple
ExecStart = /swap/loop.sh

[Install]
WantedBy = multi-user.target

注意:After = systemd-udev-settle.service ,loop在此服务后面挂载

3、将loop.service文件拷贝到 /etc/systemd/system/ 目录下

4、设置开机自启loop.serviece服务

systemctl enabled loop.service

5、修改zfs启动服务文件,我的文件路径:

/usr/lib/systemd/system/zfs-import-scan.service

可使用find指令查询文件所在路径

修改After字段,在loop.service服务之后启动,因为要先挂载loop设备才能启动zpool,如下图。

vim /usr/lib/systemd/system/zfs-import-scan.service

修改完以后查看一下 zfs-import-scan.service 服务是否开机自启

6、重启服务器,重启以后查看zpool及服务是否运行正常

reboot

  • 33
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值