<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>35150</bug_id>
          
          <creation_ts>2018-07-13 11:47:55 +0300</creation_ts>
          <short_desc>systemd-udev-settle зависает при LVM не на корне</short_desc>
          <delta_ts>2023-02-08 16:42:49 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>lvm2</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan A. Melnikov">iv</reporter>
          <assigned_to name="Alexey Shabalin">shaba</assigned_to>
          <cc>aen</cc>
    
    <cc>evg</cc>
    
    <cc>lav</cc>
    
    <cc>rider</cc>
    
    <cc>shaba</cc>
    
    <cc>sin</cc>
    
    <cc>stalker</cc>
    
    <cc>vitty</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>172620</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-07-13 11:47:55 +0300</bug_when>
    <thetext>Есть система: актуальный на вчера (2018-07-12) Сизиф, systemd 238. Корень и /boot на обычном разделе. На отдельном жестком диске создаётся LVMный PV, поверх котрого создаётся VG. После этого загрузка системы от нескольких секунд удлинняется до нескольких минут, и после загрузки LVM-ные разделы не всегда сразу видны.

Оказывается, systemd-udev-settle не может  и отваливается по таймауту. При этом единственное, что наблюдается в логах -- сообщение типа:

 systemd-udevd[855]: seq 3138 &apos;/devices/pci0000:00/0000:00:17.0/ata2/host1/target1:0:0/1:0:0:0/block/sda&apos; is taking a long time

sda -- это как раз тот самый отдельный жесткий диск, прямо на котором сделан PV.

Естественно, если убить PV, затерев пару первых секторов /dev/sda нулями, загрузка снова становится быстрой и безпроблемной.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172621</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-07-13 11:54:44 +0300</bug_when>
    <thetext>Отладка показала, что udev запускает следующую команду:

  lvm pvscan -v --background --cache --activate ay --major 8 --minor 0

Делает он это по правилу из файла /lib/udev/rules.d/69-dm-lvm-metad.rules, в самом конце.

При этом pvscan пытается общаться с lvmetad через /run/lvm/lvmetad.socket (да, я впихнул в правило strace). lvm2-lvmetad в нашем systemd поидее должен socket-актирвироваться, однако этого не происходит до тех пор, пока с systemd-udev-settle не случится timeout, и загрузка не пойдёт дальше.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172623</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-07-13 12:02:23 +0300</bug_when>
    <thetext>В том же файлике /lib/udev/rules.d/69-dm-lvm-metad.rules обнаружился следующий абзац:

# The method for invoking pvscan is selected at build time with the option
# --(enable|disable)-udev-systemd-background-jobs to &quot;configure&quot;.
# On modern distributions with recent systemd, it&apos;s &quot;systemd_background&quot;;
# on others, &quot;direct_pvscan&quot;.
GOTO=&quot;direct_pvscan&quot;

Я предположил, что Сизиф с systemd это вполне modern distribution, и закомментировал этот GOTO. И действительно, это решило проблему: загрузка системы теперь происходит быстро, все разделы на LVM видны и монтируются согласно тому, что я написал в /etc/fstab.

Видимо, с современным systemd --enable-udev-systemd-background-jobs не просто желателен, а необходим. С другой стороны, если нужно тот же udev использовать на системах с SysV init, наверное, часть этой логики надо перетаскивать из build time в runtime...

Если что, я готов что-нибудь потестировать =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172626</commentid>
    <comment_count>3</comment_count>
    <who name="Evgeny Sinelnikov">sin</who>
    <bug_when>2018-07-13 12:35:23 +0300</bug_when>
    <thetext>Я столкнулся с той же проблемой после обновления до сизифа и решил её довольно криво, но быстро - я отключил ожидание:
sudo systemctl mask systemd-udev-settle

Аналогично, готов потестировать, как только в сизифе появится новый udev-rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172633</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2018-07-13 17:49:54 +0300</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; В том же файлике /lib/udev/rules.d/69-dm-lvm-metad.rules обнаружился следующий
&gt; абзац:
&gt; 
&gt; # The method for invoking pvscan is selected at build time with the option
&gt; # --(enable|disable)-udev-systemd-background-jobs to &quot;configure&quot;.
&gt; # On modern distributions with recent systemd, it&apos;s &quot;systemd_background&quot;;
&gt; # on others, &quot;direct_pvscan&quot;.
&gt; GOTO=&quot;direct_pvscan&quot;
&gt; 
&gt; Я предположил, что Сизиф с systemd это вполне modern distribution, и
&gt; закомментировал этот GOTO. И действительно, это решило проблему: загрузка
&gt; системы теперь происходит быстро, все разделы на LVM видны и монтируются
&gt; согласно тому, что я написал в /etc/fstab.
&gt; 
&gt; Видимо, с современным systemd --enable-udev-systemd-background-jobs не просто
&gt; желателен, а необходим. С другой стороны, если нужно тот же udev использовать
&gt; на системах с SysV init, наверное, часть этой логики надо перетаскивать из
&gt; build time в runtime...
&gt; 
&gt; Если что, я готов что-нибудь потестировать =)

А можно протестировать эти же ваши действия под SysV?
У меня есть подозрение, что будет все нормально работать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172634</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2018-07-13 18:51:25 +0300</bug_when>
    <thetext>и для информации, в master ветке lvm2 выпиливают lvmetad как ненужную сущность.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172649</commentid>
    <comment_count>6</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-07-14 20:51:48 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; А можно протестировать эти же ваши действия под SysV?
&gt; У меня есть подозрение, что будет все нормально работать.

Попробую в понедельник.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174529</commentid>
    <comment_count>7</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2018-09-26 19:04:42 +0300</bug_when>
    <thetext>В багзилле RedHat есть длительные обсуждения очень похожей проблемы, которые закончились у них не пойми чем
https://bugzilla.redhat.com/show_bug.cgi?id=989607
https://bugzilla.redhat.com/show_bug.cgi?id=1023250

но там назван способ обхода:
global/use_lvmetad = 0 in /etc/lvm/lvm.conf 

мне отлично помогло на p8, а до того было длительное ожидание, которое приводило к emergency mode (с предложением нажать Ctrl-D).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176022</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2018-11-23 19:54:34 +0300</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; В том же файлике /lib/udev/rules.d/69-dm-lvm-metad.rules обнаружился следующий
&gt; абзац:
&gt; 
&gt; # The method for invoking pvscan is selected at build time with the option
&gt; # --(enable|disable)-udev-systemd-background-jobs to &quot;configure&quot;.
&gt; # On modern distributions with recent systemd, it&apos;s &quot;systemd_background&quot;;
&gt; # on others, &quot;direct_pvscan&quot;.
&gt; GOTO=&quot;direct_pvscan&quot;
&gt; 
&gt; Я предположил, что Сизиф с systemd это вполне modern distribution, и
&gt; закомментировал этот GOTO. И действительно, это решило проблему: загрузка
&gt; системы теперь происходит быстро, все разделы на LVM видны и монтируются
&gt; согласно тому, что я написал в /etc/fstab.
&gt; 
&gt; Видимо, с современным systemd --enable-udev-systemd-background-jobs не просто
&gt; желателен, а необходим. С другой стороны, если нужно тот же udev использовать
&gt; на системах с SysV init, наверное, часть этой логики надо перетаскивать из
&gt; build time в runtime...
&gt; 
&gt; Если что, я готов что-нибудь потестировать =)

lvm2 собирается с --disable-udev-systemd-background-jobs, поэтому в rules попадает GOTO=&quot;direct_pvscan&quot;.
А собирается он с этим параметром потому, что в rules запускается systemd-run.
Надо тогда systemd-run перенести в /bin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176026</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2018-11-23 22:30:33 +0300</bug_when>
    <thetext>А можно еще попросить, убедиться что lvm2-lvmetad.socket включен, и если нет  сделать:
systemctl enable lvm2-lvmetad.socket
и перезагрузиться.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176071</commentid>
    <comment_count>10</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-11-26 11:30:15 +0300</bug_when>
    <thetext>(In reply to comment #9)
&gt; А можно еще попросить, убедиться что lvm2-lvmetad.socket включен, и если нет 
&gt; сделать:
&gt; systemctl enable lvm2-lvmetad.socket
&gt; и перезагрузиться.

lvm2-lvmetad.socket был включен когда я это поймал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176073</commentid>
    <comment_count>11</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-11-26 11:55:57 +0300</bug_when>
    <thetext>Сейчас перепроверил:
- обновился до сегодняшнего Сизифа
- apt-get install --reinstall lvm2
- перезагрузился

udev-settle не сумел завершиться и меня выбросило в recovery mode. В этом самом recovery mode я вернул назад комментарий в 88 строку /lib/udev/rules.d/69-dm-lvm-metad.rules:

# GOTO=&quot;direct_pvscan&quot;

и нормально загрузился, быстро и все разделы на месте.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176075</commentid>
    <comment_count>12</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2018-11-26 12:02:21 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; В багзилле RedHat есть длительные обсуждения очень похожей проблемы, которые
&gt; закончились у них не пойми чем
&gt; https://bugzilla.redhat.com/show_bug.cgi?id=989607
&gt; https://bugzilla.redhat.com/show_bug.cgi?id=1023250
&gt; 
&gt; но там назван способ обхода:
&gt; global/use_lvmetad = 0 in /etc/lvm/lvm.conf 
&gt; 
&gt; мне отлично помогло на p8, а до того было длительное ожидание, которое
&gt; приводило к emergency mode (с предложением нажать Ctrl-D).

Проверил и этот вариант, естественно вернув GOTO как было в пакете. Тоже помогло. Пока оставил так.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176099</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2018-11-26 16:53:32 +0300</bug_when>
    <thetext>Я сделал таск #216915, в котором по-умолчанию отключено использование lvmetad (global/use_lvmetad = 0).

Видимо пока мы пытаемся усидеть на двух стульях (systemd и sysv) придется делать выбор в пользу sysv.
В ветке master уже удалили lvmetad. Но я пока не решаюсь её собирать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176154</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2018-11-27 22:52:51 +0300</bug_when>
    <thetext>(В ответ на комментарий №13)
&gt; Я сделал таск #216915, в котором по-умолчанию отключено использование lvmetad
&gt; (global/use_lvmetad = 0).

посылать в таком виде в сизиф? одобряете?
 
&gt; Видимо пока мы пытаемся усидеть на двух стульях (systemd и sysv) придется
&gt; делать выбор в пользу sysv.
&gt; В ветке master уже удалили lvmetad. Но я пока не решаюсь её собирать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176256</commentid>
    <comment_count>15</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2018-12-01 12:57:17 +0300</bug_when>
    <thetext>У меня после обновления до lvm2-2.02.182-alt2 загрузка растянулась с 15 секунд до 4-х минут с таким результатом:

=8&lt;======================================================================
root@thinkpad ~ #systemctl --state=failed
  UNIT                          LOAD   ACTIVE SUB    DESCRIPTION                       
● lvm2-activation-early.service loaded failed failed Activation of LVM2 logical volumes
● lvm2-activation-net.service   loaded failed failed Activation of LVM2 logical volumes
● lvm2-activation.service       loaded failed failed Activation of LVM2 logical volumes

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

3 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use &apos;systemctl list-unit-files&apos;.
root@thinkpad ~ #systemctl --no-pager status lvm2-activation-early lvm2-activation-net lvm2-activation
● lvm2-activation-early.service - Activation of LVM2 logical volumes
   Loaded: loaded (/etc/lvm/lvm.conf; generated)
   Active: failed (Result: timeout) since Sat 2018-12-01 16:13:32 +07; 34min ago
     Docs: man:lvm2-activation-generator(8)
  Process: 1263 ExecStart=/sbin/lvm vgchange -aay --ignoreskippedcluster (code=exited, status=0/SUCCESS)
 Main PID: 1263 (code=exited, status=0/SUCCESS)

дек 01 16:12:01 thinkpad.evg-krsk.dyndns.org systemd[1]: Starting Activation of LVM2 logical volumes...
дек 01 16:12:01 thinkpad.evg-krsk.dyndns.org dmeventd[1299]: dmeventd ready for processing.
дек 01 16:12:01 thinkpad.evg-krsk.dyndns.org lvm[1299]: Monitoring thin pool nonredundant-thinpool.
дек 01 16:12:01 thinkpad.evg-krsk.dyndns.org lvm[1263]:   1 logical volume(s) in volume group &quot;nonredundant&quot; now active
дек 01 16:12:01 thinkpad.evg-krsk.dyndns.org lvm[1263]:   3 logical volume(s) in volume group &quot;thinkpad&quot; now active
дек 01 16:12:01 thinkpad.evg-krsk.dyndns.org lvm[1299]: dmeventd received break, scheduling exit.
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation-early.service: State &apos;stop-sigterm&apos; timed out. Killing.
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation-early.service: Killing process 1299 (dmeventd) with signal SIGKILL.
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation-early.service: Failed with result &apos;timeout&apos;.
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org systemd[1]: Failed to start Activation of LVM2 logical volumes.

● lvm2-activation-net.service - Activation of LVM2 logical volumes
   Loaded: loaded (/etc/lvm/lvm.conf; generated)
   Active: failed (Result: timeout) since Sat 2018-12-01 16:16:32 +07; 31min ago
     Docs: man:lvm2-activation-generator(8)
  Process: 1318 ExecStart=/sbin/lvm vgchange -aay --ignoreskippedcluster (code=exited, status=0/SUCCESS)
  Process: 1310 ExecStartPre=/sbin/udevadm settle (code=exited, status=0/SUCCESS)
 Main PID: 1318 (code=exited, status=0/SUCCESS)

дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org systemd[1]: Starting Activation of LVM2 logical volumes...
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org dmeventd[1330]: dmeventd ready for processing.
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org lvm[1330]: Monitoring thin pool nonredundant-thinpool.
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org lvm[1318]:   1 logical volume(s) in volume group &quot;nonredundant&quot; now active
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org lvm[1318]:   3 logical volume(s) in volume group &quot;thinkpad&quot; now active
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org lvm[1330]: dmeventd received break, scheduling exit.
дек 01 16:16:32 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation-net.service: State &apos;stop-sigterm&apos; timed out. Killing.
дек 01 16:16:32 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation-net.service: Killing process 1330 (dmeventd) with signal SIGKILL.
дек 01 16:16:32 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation-net.service: Failed with result &apos;timeout&apos;.
дек 01 16:16:32 thinkpad.evg-krsk.dyndns.org systemd[1]: Failed to start Activation of LVM2 logical volumes.

● lvm2-activation.service - Activation of LVM2 logical volumes
   Loaded: loaded (/etc/lvm/lvm.conf; generated)
   Active: failed (Result: timeout) since Sat 2018-12-01 16:15:02 +07; 33min ago
     Docs: man:lvm2-activation-generator(8)
  Process: 1305 ExecStart=/sbin/lvm vgchange -aay --ignoreskippedcluster (code=exited, status=0/SUCCESS)
 Main PID: 1305 (code=exited, status=0/SUCCESS)

дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org systemd[1]: Starting Activation of LVM2 logical volumes...
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org dmeventd[1307]: dmeventd ready for processing.
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org lvm[1307]: Monitoring thin pool nonredundant-thinpool.
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org lvm[1305]:   1 logical volume(s) in volume group &quot;nonredundant&quot; now active
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org lvm[1305]:   3 logical volume(s) in volume group &quot;thinkpad&quot; now active
дек 01 16:13:32 thinkpad.evg-krsk.dyndns.org lvm[1307]: dmeventd received break, scheduling exit.
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation.service: State &apos;stop-sigterm&apos; timed out. Killing.
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation.service: Killing process 1307 (dmeventd) with signal SIGKILL.
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org systemd[1]: lvm2-activation.service: Failed with result &apos;timeout&apos;.
дек 01 16:15:02 thinkpad.evg-krsk.dyndns.org systemd[1]: Failed to start Activation of LVM2 logical volumes.
[1]    4898 exit 3     systemctl --no-pager status lvm2-activation-early lvm2-activation-net 
=8&lt;======================================================================

восстановить скорость загрузки удалось лишь явно задав &quot;use_lvmetad = 1&quot; в /etc/lvm/lvm.conf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176312</commentid>
    <comment_count>16</comment_count>
    <who name="stalker">stalker</who>
    <bug_when>2018-12-03 21:46:27 +0300</bug_when>
    <thetext>У меня на 2 ~ одинаковых рабочих станциях с lvm и lvmetad  поведение с точностью до наоборот. При том что &quot;разбивка&quot; дисков примерно одинаковая.

на домашней,если включаю use_lvmetad = 1 - то загрузка минут 4-5. Без ~2 минуты.
на рабочей с точностью до наоборот.

Единственное что бросается в глаз - на домашней станции пустой /etc/lvm/cache
На рабочей  совсем не пустой и lvm и стартует почти моментально.

P8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176313</commentid>
    <comment_count>17</comment_count>
    <who name="stalker">stalker</who>
    <bug_when>2018-12-03 21:51:53 +0300</bug_when>
    <thetext>Собственно с рабочей:

2.893s systemd-udev-settle.service
2.198s dev-mapper-MAIN\x2dROOTFS.device

С домашней:
120.539s systemd-udev-settle.service
9.474s dev-mapper-SYSLVM\x2dROOTFS.device</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221358</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2023-02-08 16:42:49 +0300</bug_when>
    <thetext>Проявляются ли у вас проблемы с lvm сейчас?
Я в rules давным-давно добавил авто-детект как запускать. Все должно было исправится.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>