Я столкнулся с аналогичной ситуацией при безопасной очистке внешнего жесткого диска (USB 2.0): длительные периоды чтения, за которыми следуют несколько секунд записи с высокой пропускной способностью, когда я ожидал 100% записи. Я использовал pv, чтобы показать мне общую скорость записи (см. Команду ниже), и я получал в среднем 10 МБ / с, пакетами по 14 МБ / с в течение ~ 10 секунд, а затем несколько кБ / с. Мой вывод iostat очень похож на ваш.
Оказалось, что проблема заключалась в моем слишком маленьком размере блока dd (512 байт). Я подозреваю, что происходит то, что ядро считывает блоки в свои буферы размером 1 КБ на блок, так что dd может перезаписывать 512 байт за раз, которые затем сбрасываются. Я не эксперт по ядру, так что это просто предположение.
Я могу сказать, что увеличение размера моего dd-блока до 72 КБ имело огромное значение . Сейчас я вижу> 40 МБ / с. Это довольно близко к теоретическому максимуму, который может обеспечить USB 2.0 (480 Кб / с, не считая накладных расходов USB), а также довольно близко к максимальной устойчивой скорости записи, которую может достичь этот 10-летний диск (что-то вроде 55 МБ / с), поэтому Доволен, что это более-менее голая скорость.
Вот команда, которую я использую для очистки диска:
openssl enc -aes-256-ctr -pass \
pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" \
-nosalt </dev/zero \
| pv -bartpes 160041885696 -B 128K \
| dd bs=72K count=2170707 of=/dev/sdf iflag=fullblock
Строки 1-3 передают / dev / zero через шифрование AES-256-CTR с использованием пароля, сгенерированного из / dev / urandom. Итак, это поток криптографически случайного мусора.
Строка 4 показывает прогресс, учитывая количество байтов на диске 160 ГБ и размер буфера передачи в pv 128 КБ.
Строка 5 использует размер блока, который я выбрал с помощью калькулятора, пытаясь найти наибольшее кратное 512, которое было множителем общего # байтов диска. iflag = fullblock заставляет dd многократно читать в свой буфер, пока перед записью не будет 1 полный блок.
Вероятно, вам не хватает драйвера:
yum -y install libvirt-daemon-driver-qemu && systemctl restart libvirtd
В моем случае я должен удалить модули, связанные с nat, из /etc/modprobe.d/nf -blacklist.conf. В противном случае эти модули не будут загружены, и сеть virsh зависнет.
Вы можете проверить наличие модулей nat с помощью lsmod | grep nat, хороший вывод:
lsmod | grep nat
nf_nat_masquerade_ipv4 16384 1 ipt_MASQUERADE
iptable_nat 16384 1
nf_nat_ipv4 16384 1 iptable_nat
nf_nat 36864 2 nf_nat_masquerade_ipv4,nf_nat_ipv4
nf_conntrack 155648 6 xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4,nf_nat,ipt_MASQUERADE,nf_nat_ipv4
ip_tables 28672 3 iptable_filter,iptable_nat,iptable_mangle
libcrc32c 16384 3 nf_conntrack,nf_nat,raid456