[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