LUKS 在运行 Atom C3758 CPU 的 CentOS 上挂起

LUKS 在运行 Atom C3758 CPU 的 CentOS 上挂起

每当我尝试在 Supermicro A2SDi-8C-HLN4F 主板(Intel ATOM CPU C3758)上的 CentOS 安装上设置 LUKS 时,一切似乎都运行正常,直到创建文件系统(ext4)或尝试挂载文件系统(xfs)时,该过程完全冻结。无论我尝试使用—encryptedkickstart 配置中的指令将其安装,还是尝试在物理驱动器(/dev/sde)、RAID 设备(/dev/md127)、LVM 中的物理卷或逻辑卷,甚至是回送挂载文件(/dev/loop0)上执行此操作,都没有关系。CentOS 7.7 和 8.1 中都出现了同样的问题。

我从某处看到内存可能存在问题,因此我切换了两个 DIMM 并运行 MemTest86+,结果没有任何错误。

尝试在上述设备上创建文件系统时使用的步骤:

  • cryptsetup --force-password luksFormat <device>
  • cryptsetup luksOpen <device> <testname>
  • mkfs -t ext4 /dev/mapper/<testname>

在执行 mkfs 命令期间,进程总是会挂起,并且即使使用 ,也无法终止该进程(或者更确切地说是 mkfs.ext4 子进程)kill -9

过了一会儿,我的 dmesg 中出现了以下内容:

[  492.528687]       Not tainted 4.18.0-147.5.1.el8_1.x86_64 #1
[  492.528719] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  492.528764] kworker/u17:0   D    0  4238      2 0x80000080
[  492.528777] Workqueue: kcryptd/253:3 kcryptd_crypt [dm_crypt]
[  492.528778] Call Trace:
[  492.528787]  ? __schedule+0x253/0x830
[  492.528791]  ? mempool_alloc+0x67/0x190
[  492.528793]  schedule+0x28/0x70
[  492.528795]  schedule_timeout+0x26d/0x390
[  492.528803]  ? qat_alg_sgl_to_bufl.isra.11+0x456/0x770 [intel_qat]
[  492.528807]  ? dma_direct_unmap_page+0x7a/0x80
[  492.528809]  wait_for_completion+0x11f/0x190
[  492.528811]  ? wake_up_q+0x70/0x70
[  492.528814]  crypt_convert+0xa13/0xf00 [dm_crypt]
[  492.528818]  ? bio_alloc_bioset+0xdc/0x210
[  492.528820]  ? __switch_to_asm+0x41/0x70
[  492.528822]  ? __switch_to_asm+0x35/0x70
[  492.528825]  kcryptd_crypt+0x2f3/0x3b0 [dm_crypt]
[  492.528828]  process_one_work+0x1a7/0x3b0
[  492.528831]  worker_thread+0x30/0x390
[  492.528833]  ? create_worker+0x1a0/0x1a0
[  492.528835]  kthread+0x112/0x130
[  492.528837]  ? kthread_flush_work_fn+0x10/0x10
[  492.528839]  ret_from_fork+0x35/0x40

使用以下命令启动命令strace mkfs ...总是在输出中完全相同的字符处停止:

pwrite64(3, ”\3...”) = 4096
pwrite64(3, ”\3...”) = 4096
fsync(3

我不知道最后一行缺少的右括号有什么意义,但它总是停在这个确切的位置。

我该如何更准确地识别正在发生的事情以及问题可能出在哪里?

答案1

是什么帮我解决了这个问题?在错误消息中四处寻找。模块intel_qat原来是罪魁祸首,还有另一个相关模块qat_c3xxx。因此,通过将模块列入黑名单,它就不再挂起。

blacklist intel_qat /bin/false
blacklist qat_c3xxx /bin/false

过了一会儿,我收到建议检查 BIOS,其中深处有一个 QAT 设置,当在 BIOS 中禁用它时,黑名单不再需要。

相关内容