Всякий раз, когда я пытаюсь установить LUKS на мою установку CentOS на материнской плате Supermicro A2SDi-8C-HLN4F (Intel ATOM CPU C3758), все работает нормально, пока процесс полностью не зависает при создании файловой системы (ext4) или попытке смонтировать файловую систему ( xfs). Неважно, попробую ли я надеть его с помощью —encrypted
в моей конфигурации кикстарта, или попробуйте сделать это на физическом диске (/ dev / sde), устройстве RAID (/ dev / md127), физическом томе или логическом томе в LVM или даже в файле с обратной связью (/ dev / loop0). Та же проблема обнаруживается как в CentOS 7.7, так и в 8.1.
Я где-то читал, что память может быть проблемой, поэтому я поменял два модуля DIMM и запустил MemTest86 + с 0 ошибками.
Шаги, используемые при попытке создать файловую систему на указанных выше устройствах:
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
Я не знаю, насколько важна пропущенная закрывающая скобка в последней строке, но она всегда останавливается именно на этом месте.
Как мне более точно определить, что происходит и в чем может заключаться проблема?
Что для меня решило то, что ковырялось в сообщении об ошибке. В intel_qat
модуль оказывается виновником, с другим связанным модулем qat_c3xxx
. Итак, занесение модулей в черный список перестало зависать.
blacklist intel_qat /bin/false
blacklist qat_c3xxx /bin/false
Чуть позже мне посоветовали проверить BIOS, и там есть настройка для QAT, и при ее отключении в BIOS черный список больше не требуется.