首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >英特尔DH895XCC系列QAT和ZFS (2.0.0) -使用dracut定制initramfs

英特尔DH895XCC系列QAT和ZFS (2.0.0) -使用dracut定制initramfs
EN

Server Fault用户
提问于 2020-12-17 10:13:22
回答 1查看 189关注 0票数 1

我们希望运行ZFS与QAT卸载压缩和校验和。

发行版为CentOS8.2,包含股票内核:

代码语言:javascript
复制
[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(最新消息来自英特尔)

代码语言:javascript
复制
./configure --enable-icp-trace --enable-icp-debug --enable-icp-log-syslog --enable-kapi
make
make install

对于ZFS,我们有:

代码语言:javascript
复制
[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。

EN

回答 1

Server Fault用户

发布于 2020-12-18 09:07:41

我让它和dracut一起使用定制的initramfs .

您必须排除zfs的dracut模块:02zfsexpandknowledge90zfs

然后为qat添加一个自定义模块:

代码语言:javascript
复制
[root@dellqat ~]# cd /usr/lib/dracut/modules.d/
[root@dellqat modules.d]# mkdir 89qat

在89qat里面放了两个文件:

代码语言:javascript
复制
[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
}

代码语言:javascript
复制
[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模块:02zfsexpandknowledge90zfs,那么这些模块就不会按正确的顺序加载。

也许对dracut有更多经验的人能帮上忙?

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1046569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档