我们希望运行ZFS与QAT卸载压缩和校验和。
发行版为CentOS8.2,包含股票内核:
[root@dellqat ~]# uname -a
Linux dellqat 4.18.0-193.19.1.el8_2.x86_64 #1 SMP Mon Sep 14 14:37:00 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux对于QAT,我们有:
from 1.7.1.4.11.0-00001(最新消息来自英特尔)
./configure --enable-icp-trace --enable-icp-debug --enable-icp-log-syslog --enable-kapi
make
make install对于ZFS,我们有:
[root@dellqat zfs_latest]# git status
On branch zfs-2.0-release
Your branch is up to date with 'origin/zfs-2.0-release'.
nothing to commit, working tree clean
export ICP_ROOT=/opt/A3C/qat1.7.l.4.11.0-00001
./configure --with-qat=/opt/A3C/qat1.7.l.4.11.0-00001
make
make install
ldconfig问题是模块加载顺序: ZFS没有正确使用QAT,因为zfs模块是在QAT之前加载的。不仅如此,QAT模块被加载在init脚本qat_service中,其中使用程序adf_ctl来导入QAT服务。此qat_service计划作为运行的最后一个服务!
qat_service基本上启动了一个程序adf_ctl来启动qat引擎,因此它不仅仅是模块加载顺序的问题:在对zfs adf_ctl进行调制解调器探测之前必须运行。
正如我所看到的,zfs附带了一个dracut模块zfs,用于为zfs中的根分区加载initramfs中的模块。
有没有人与ZFS分享使用Intel QAT的经验?
理想情况下,我们希望在加载ZFS之前编写一个dracut模块,用于在initramfs中执行QAT的init。
发布于 2020-12-18 09:07:41
我让它和dracut一起使用定制的initramfs .
您必须排除zfs的dracut模块:02zfsexpandknowledge和90zfs。
然后为qat添加一个自定义模块:
[root@dellqat ~]# cd /usr/lib/dracut/modules.d/
[root@dellqat modules.d]# mkdir 89qat在89qat里面放了两个文件:
[root@dellqat modules.d]# cd 89qat/
[root@dellqat 89qat]# cat module-setup.sh
#!/usr/bin/env bash
check() {
return 0
}
depends() {
return 0
}
installkernel() {
instmods qat_dh895xcc
instmods qat_api
instmods usdm_drv
instmods intel_qat
instmods uio
}
install() {
inst_hook pre-mount 10 "${moddir}/qat_start.sh"
inst /etc/dh895xcc_dev0.conf /etc/dh895xcc_dev0.conf
inst /usr/local/bin/adf_ctl /sbin/adf_ctl
inst /usr/bin/sleep /sbin/sleep
}和
[root@dellqat 89qat]# cat qat_start.sh
#!/bin/sh
modprobe -r qat_api;
/sbin/sleep 1;
modprobe -r qat_dh895xcc;
/sbin/sleep 1;
modprobe qat_dh895xcc;
/sbin/sleep 1;
modprobe qat_api;
/sbin/sleep 1;
/sbin/adf_ctl restart 1>/dev/null 2>&1;
/sbin/sleep 1;这两个文件都应该是chmod 755。
然后使用dracut:dracut foobar.img $(uname -r) --force -v重建映像。
为当前内核创建"foobar.img“initramfs图像。
我不知道为什么,但是如果您还保留zfs模块:02zfsexpandknowledge和90zfs,那么这些模块就不会按正确的顺序加载。
也许对dracut有更多经验的人能帮上忙?
https://serverfault.com/questions/1046569
复制相似问题