[выловил баг]libvirtd и обращения к диску[solved]

с 3.1 ядра стал замечать что каждую секунду на мой диск что-то записывается.
Выражается это в похрустывании винта и миганием соответствующих диодов на панели.

Стоит только выключить все виртуальные машины, как хрустеть головками винт перестает.

По iotop я вижу такой процесс

[jbd2/sda2-8]
который и занимается тем, что постоянно что-то пишет на диск (прозреваю что это жрунал ext4)

в dmesg падают вот такие записи каждую секунду

echo 1 > /proc/sys/vm/block_dump

Цитата:
[ 5194.725051] jbd2/sda2-8(914): WRITE block 289856096 on sda2 (8 sectors)
[ 5194.725055] jbd2/sda2-8(914): WRITE block 289856104 on sda2 (8 sectors)
[ 5194.725058] jbd2/sda2-8(914): WRITE block 289856112 on sda2 (8 sectors)
[ 5194.725744] jbd2/sda2-8(914): WRITE block 289856120 on sda2 (8 sectors)

Вопрос один ли я наблюдаю такую картину и как это дело пофиксить, а то похрустывание не только раздражает но еще и вредно.

uname -a

Цитата:
Linux gentoo 3.1.4-gentoo #1 SMP PREEMPT Thu Dec 1 15:31:48 MSK 2011 x86_64 Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz GenuineIntel GNU/Linux

gcc-4.6.2

Гуглить пробовал, но commit=60 не помогает.

И добавляю. Дело не в

И добавляю.
Дело не в конкретной виртуалку, стоит запустить любую виртуалку, как начинает хрустеть.

use block device , Luk. i.e

use block device , Luk. i.e raw disk, LVM, network block device ( iscsi, AoE, nbd)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Я ничего не понял из этой

Я ничего не понял из этой фразы.
Можно подробнее чтоли ответить?

Совет сводится к

Совет сводится к использованию реального диска с прямым доступом в виртуальной машине, ну или различных сетевых ФС вместо файла-контейнера.

Фишка в том что все раньше

Фишка в том что все раньше работало без всякого там хруста.

Не заметил, что это помогает.

Не заметил, что это помогает. Использую отдельный винт, для гостя, подключенный через USB:

    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source dev='/dev/sdg'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>

При работе виртуалки всё время шуршит системный винт.

Так что самому интересно.

А я разобрался в чем

А я разобрался в чем дело.

virt-manager

Правка - Параметры - Статистика
Видим что стоит "обновлять статус" = "1"
Проблема как раз здесь.
Стоит заметить, что хрустит только когда открыто окно вирт-менеджера, стоит его закрыть и хруст пропадает.

Я поставил 60 секунд интервал поллера и хруст пропал.

Если выставить 5 сек то хрустеть будеть ровно один раз в 5 сек ну и так далее.
Если окно вирт-менеджера закрыть, то ничего не хрустит вообще.

Понимаю, что это баг, при чем весьма серьезный, но на багрепорт нет времени.

Но это не совсем баг.В общем

Но это не совсем баг.

В общем не спалось мне, и я решил добиться ответа на вопрос, зачем хрустит, причём только на запись?

Подцепился strace и вижу такую картину:

stat("/var/run/libvirt/qemu", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/run/libvirt/qemu/test.xml.new", O_WRONLY|O_CREAT|O_TRUNC, 0600) = 16
write(16, "<!--\nWARNING: THIS IS AN AUTO-GE"..., 164) = 164
write(16, "edit", 4)                    = 4
write(16, " ", 1)                       = 1
write(16, "test", 4)                    = 4
write(16, "\nor other application using the "..., 50) = 50
write(16, "<domstatus state='running' reaso"..., 6484) = 6484
fsync(16)                               = 0
close(16)                               = 0
rename("/var/run/libvirt/qemu/test.xml.new", "/var/run/libvirt/qemu/test.xml") = 0
unlink("/var/run/libvirt/qemu/test.xml.new") = -1 ENOENT (No such file or directory)
futex(0x1f617b0, FUTEX_WAKE_PRIVATE, 1) = 1
write(8, "\0", 1)                       = 1
futex(0x1f4360c, FUTEX_WAIT_PRIVATE, 21341, NULL) = 0
write(8, "\0", 1)                       = 1
futex(0x7f36850cf620, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x1f435e0, FUTEX_WAKE_PRIVATE, 1) = 0
stat("/var/run/libvirt/qemu", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/run/libvirt/qemu/test.xml.new", O_WRONLY|O_CREAT|O_TRUNC, 0600) = 16
write(16, "<!--\nWARNING: THIS IS AN AUTO-GE"..., 164) = 164
write(16, "edit", 4)                    = 4
write(16, " ", 1)                       = 1
write(16, "test", 4)                    = 4
write(16, "\nor other application using the "..., 50) = 50
write(16, "<domstatus state='running' reaso"..., 6449) = 6449
fsync(16)                               = 0
close(16)                               = 0
rename("/var/run/libvirt/qemu/test.xml.new", "/var/run/libvirt/qemu/test.xml") = 0
unlink("/var/run/libvirt/qemu/test.xml.new") = -1 ENOENT (No such file or directory)
write(8, "\0", 1)

Т.е., libvirtd постоянно пересоздаёт файл в /var/run/libvirt/.. что и приводит к "хрусту винта".

Строчка в fstab решает проблему:

tmpfs                   /var/run/libvirt        tmpfs           gid=kvm,mode=0755       0 0

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".