Вы здесь

[выловил баг]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 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