[sisyphus] ОСТОРОЖНО! Противоестественный интеллект (systemd?) и эпичнейший баг

Nikolay A. Fetisov naf на naf.net.ru
Пт Июл 10 09:24:23 MSK 2015


Здравствуйте!

В Чт, 09/07/2015 в 22:59 +0600, Gleb Kulikov пишет:
> Столкнулся сегодня при настройке новой (наконец-то! :) ) рабочей 
> машины.
> 
> ....
> Первый звоночек раздался при попытке организовать рэйд-1 (средствами 
> mdraid) 
> на дисках WD: мол, дивайсы заняты, идите лесом.

А ядро какое?

У меня похожее есть на нескольких разных машинах с Sisyphus,
udev 219-alt2 и 221-alt3, ядра ovz-el. И sysvinit - _не_ systemd.

В частности, есть сервер, текущий t7. Был обновлён до Sisyphus,
в начале июня, оставлен  sysinit. После перезагрузки - ошибка на этапе
монтирования разделов /dev/sdbN.

На сервере два диска, в fstab  / и swap прописаны установщиком через
UUID, остальное - через /dev/sd{a,b}N. Ни MD-RAID, ни LVM нет.

При этом:
- устройства в /dev/ есть, и они внешне правильные (т.е. тип, 
  major/minor, права и прочее корректны),
# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4

- /dev/sdb читается, fdisk раздёлы на нём видит,

- чтение с /dev/sdbN выдаёт ошибку:
# dd if=/dev/sdb1 of=/dev/null bs=1M 
dd: failed to open ‘/dev/sdb1’: No such device or address

- соответственно, blkid на разделе не выдаёт ничего:
# blkid /dev/sdb1
# 

- а такие же разделы на sda прекрасно доступны.


Перечитываем руками таблицу разделов:
# partprobe /dev/sdb

После этого:
# blkid /dev/sdb1
/dev/sdb1: UUID="35c3758c-2118-4aeb-b8a9-ece18f4324f7" TYPE="ext4"

Тип файловой системы и UUID правильные.

Но, тем не менее:
# mount /dev/sdb1 /mnt/foo
mount: /dev/sdb1 is already mounted or /mnt/foo busy

При этом непосредственно через UUID диск монтируется:
# mount /dev/disk/by-uuid/35c3758c-2118-4aeb-b8a9-ece18f4324f7
/mnt/foo/
# 

До udev-1:217-alt3 включительно проблемы не было.

Вопрос с загрузкой был решён через переход в fstab с имён устройств на
UUID.

Но, тем не менее, при смонтированных через UUID разделах и вполне
работающей системе, те же разделы через /dev/sdbN остаются 
недоступными:

# blkid /dev/sdb1
# dd if=/dev/sdb1 of=/dev/null bs=1M count=1
dd: failed to open ‘/dev/sdb1’: No such device or address

Могут, через какое-то время, сами перечитаться с записью об этом в 
dmesg, и появиться. А могут не перечитываться, уже неделями.



Поскольку по факту у нас ядра ovz-el (полноценно) работать сейчас не
могут, поднимать этот вопрос после удара ручкой грабелек даже не стал.

-- 
С уважением,
Николай Фетисов



Подробная информация о списке рассылки Sisyphus