VirnetsockeTreadwire: 1801: конец файла При чтении данных: ошибка ввода / вывода

Я столкнулся с аналогичной ситуацией при безопасной очистке внешнего жесткого диска (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 полный блок.

6
26.08.2018, 16:51
2 ответа

Вероятно, вам не хватает драйвера:

yum -y install libvirt-daemon-driver-qemu && systemctl restart libvirtd

0
27.01.2020, 20:30

В моем случае я должен удалить модули, связанные с 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
0
31.12.2020, 21:49

Теги

Похожие вопросы