ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* Re: [sisyphus] make-initrd
  @ 2020-06-16  9:16 ` Alexey Gladkov
    0 siblings, 1 reply; 8+ messages in thread
From: Alexey Gladkov @ 2020-06-16  9:16 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

On Tue, Jun 16, 2020 at 11:49:40AM +0300, Игорь Андросов wrote:
> Всем добрый день.
> 
> Возник вопрос - у нас сейчас случайно не поломана генерация initrd если
> корень расположен на btrfs?
> 
> После какого-то обновления (с перегенерацией initrd) система перестала
> грузиться на ядрах у которых идет перегенерация initrd, виснет на запуске
> udev, через какое-то время вываливается в shell. Попробовал разобраться:
> Корень системы на btrfs на sata ssd диске. В initrd не попадают модули
> ahci, sd_mod (и прочая из этой "серии"). Если добавить вручную в initrd.mk
> DEVICES раздел с корнем то модули добавляются и после перегенерации initrd
> все нормально грузится.
> Причина похоже в определении device для / в make-initrd (если я ничего не
> пропустил):

Вы всё правильно поняли.

> # findmnt -n -o MAJ:MIN,FSTYPE,SOURCE --target /
>   0:24  btrfs  /dev/sda2

Вот тут очень интересно откуда такой major взялся. Попробую разобраться,
хотя у меня нигде такого не было.

> потом по MAJ:MIN идет дальнейшее определение через /dev/block/$majmin
> но устройств с MAJ = 0 в /dev/block нет и как результат модули
> необходимые для / не определяются.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] make-initrd
  @ 2020-06-16 12:30     ` Alexey Gladkov
    0 siblings, 1 reply; 8+ messages in thread
From: Alexey Gladkov @ 2020-06-16 12:30 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

On Tue, Jun 16, 2020 at 12:39:14PM +0300, Игорь Андросов wrote:
> > Вы всё правильно поняли.
> >
> > > # findmnt -n -o MAJ:MIN,FSTYPE,SOURCE --target /
> > >   0:24  btrfs  /dev/sda2
> >
> > Вот тут очень интересно откуда такой major взялся. Попробую разобраться,
> > хотя у меня нигде такого не было.
> >
> Ну, как предположение, btrfs может быть из нескольких дисков(кроме того еще
> субтома, снапшоты и тд которые могут выступать как точки монтирования) и
> это какое-то виртуальное устройство а не прямая связь с физ устройством?

Нет. Устройство чего бы под ним не было должно быть устройством.
Можете показать вывод следующей команды ?

stat -L -c '%02t:%02T' /dev/sda2

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] make-initrd
  @ 2020-06-16 16:04         ` Alexey Gladkov
    0 siblings, 1 reply; 8+ messages in thread
From: Alexey Gladkov @ 2020-06-16 16:04 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

On Tue, Jun 16, 2020 at 06:03:52PM +0300, Игорь Андросов wrote:
> вт, 16 июн. 2020 г. в 15:30, Alexey Gladkov <legion@altlinux.ru>:
> 
> > On Tue, Jun 16, 2020 at 12:39:14PM +0300, Игорь Андросов wrote:
> > > > Вы всё правильно поняли.
> > > >
> > > > > # findmnt -n -o MAJ:MIN,FSTYPE,SOURCE --target /
> > > > >   0:24  btrfs  /dev/sda2
> > > >
> > > > Вот тут очень интересно откуда такой major взялся. Попробую
> > разобраться,
> > > > хотя у меня нигде такого не было.
> > > >
> > > Ну, как предположение, btrfs может быть из нескольких дисков(кроме того
> > еще
> > > субтома, снапшоты и тд которые могут выступать как точки монтирования) и
> > > это какое-то виртуальное устройство а не прямая связь с физ устройством?
> >
> > Нет. Устройство чего бы под ним не было должно быть устройством.
> > Можете показать вывод следующей команды ?
> >
> 
> Эм... Может я неверно выразился, но:
> kernel/Documentation/admin-guide/devices.txt
> --
>    0 Unnamed devices (e.g. non-device mounts)
>   0 = reserved as null device number
> See block major 144, 145, 146 for expansion areas.
> -- cut --
> 
> btrfs это файловая система, она вроде как не устройство, она может быть
> собрана из н-цати "устройств", разделов дисков и тд. и сказать кто в нее
> входит может только она.

Это не так. Обратите внимание, что показала утилита stat. Это те же major
и minor устройства.

Тут скорее findmnt запутался из-за того что запрос информации об
устройстве был по точке монтирования и выдал чушь. На моих тестах он вёл
себя корректно.

> Соответственно и возникает устройство с Major 0,
> так монтируем не конкретное устройство, а некую точку из того что есть в
> btrfs, имхо схоже с nfs,proc,sys и подобными.

В случае виртуальной файловой системы major и minor не имеет смысла.

Я переделаю способ получения этой информации о точке монтирования.
Спасибо.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] make-initrd
  @ 2020-06-17 16:15             ` Alexey Gladkov
    2020-06-20 19:06               ` Leonid Krivoshein
  0 siblings, 2 replies; 8+ messages in thread
From: Alexey Gladkov @ 2020-06-17 16:15 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

On Tue, Jun 16, 2020 at 08:53:45PM +0300, Игорь Андросов wrote:
> > > Эм... Может я неверно выразился, но:
> > > kernel/Documentation/admin-guide/devices.txt
> > > --
> > >    0 Unnamed devices (e.g. non-device mounts)
> > >   0 = reserved as null device number
> > > See block major 144, 145, 146 for expansion areas.
> > > -- cut --
> > >
> > > btrfs это файловая система, она вроде как не устройство, она может быть
> > > собрана из н-цати "устройств", разделов дисков и тд. и сказать кто в нее
> > > входит может только она.
> >
> > Это не так. Обратите внимание, что показала утилита stat. Это те же major
> > и minor устройства.
> >
> Эм, мы у него и попросили их, указав конкретный, существующий device.
> 
> >
> > Тут скорее findmnt запутался из-за того что запрос информации об
> > устройстве был по точке монтирования и выдал чушь. На моих тестах он вёл
> > себя корректно.
> >
> findmnt по умолчанию берет данные из /proc/self/mountinfo, там тот же major
> = 0, и эту информацию дает ядро:
> 
> Я еще раз поясню свою мысль на примере (пример извращенный но возможный):
> btrfs = (sda1, sdb, nvme1) то есть она собрана из нескольких физ устройств,
> режим single то есть размер файловой система - весь суммарный объем
> устройств
> для того что бы btrfs "собралась" должны быть доступны все устройства, если
> драйвера для того или иного устройства не будет/не будет устройства и fs
> "не соберется", если на этой fs расположен корень - мы не можем загрузиться.
> Не через btrfs я не знаю способ как можно посмотреть какие устройства для
> нее нужны, везде я вижу только одно устройство (подозреваю первое по
> алфавиту найденное по uuid? у остальных uuid тайкой же). через команду
> "btrfs filesystem show /" я вижу что в составе этой fs 3 устройства.
> 
> >
> > > Соответственно и возникает устройство с Major 0,
> > > так монтируем не конкретное устройство, а некую точку из того что есть в
> > > btrfs, имхо схоже с nfs,proc,sys и подобными.
> >
> > В случае виртуальной файловой системы major и minor не имеет смысла.
> >
> > Я переделаю способ получения этой информации о точке монтирования.
> >
> Мое мнение: для того чтобы обеспечить загрузку с корнем на btrfs нужно
> знать какие устройства в нее входят, и соответственно включать в initrd
> драйвера необходимые для каждого. В моем случае btrfs состоит из одного
> device, была у меня конфигурация где было 5 дисков, на 2 разных sata
> контроллерах, благо не корень ) Возможность на лету добавить устройство в
> btrfs и убрать позволяет создать корень на любой вариации аппаратных, и не
> только, носителей...
> 
> Прошу прощения за разведенную дискуссию.

После вашего письма я понял, что у меня существует пробел в знаниях о
btrfs. Я знал, что можно использовать несколько дисков, но мне казалось,
что при объединении дисков в одну файловую систему будет создано
устройство (device mapper или что-то своё).

Теперь я понимаю о чём вы говорите. Получается до перехода на findmnt
make-initrd работал чудом (если работал) с btrfs. Сейчас оно сломалось
окончательно.

Похоже для btrfs нужно делать `btrfs filesystem show /` и получать оттуда
полный список devid.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] make-initrd
  @ 2020-06-17 18:25                 ` Alexey Gladkov
  2020-06-17 18:53                   ` Михаил Новоселов
  0 siblings, 1 reply; 8+ messages in thread
From: Alexey Gladkov @ 2020-06-17 18:25 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

On Wed, Jun 17, 2020 at 08:54:16PM +0300, Игорь Андросов wrote:
> > Теперь я понимаю о чём вы говорите. Получается до перехода на findmnt
> > make-initrd работал чудом (если работал) с btrfs. Сейчас оно сломалось
> > окончательно.
> >
> Работал, так как похоже отталкивался не от MAJ:MIN, а от чего-то другого, и
> в
> подавляющем большинстве случаев device висят на одном контроллере,
> соответственно
> нужные драйвера попадали в initrd.

Раньше там была обычная утилита stat и blkid и поэтому брался MAJ:MIN
одного из дисков и, как вы правильно говорите, везло, что они все были на
одном контроллере. Учитывая, что я никогда не слышал жалоб про btrfs, то
это была единственная используемая конфигурация ))

> > Похоже для btrfs нужно делать `btrfs filesystem show /` и получать оттуда
> > полный список devid.
> >
> Вариант `btrfs filesystem show /` на мой взгляд самый правильный и в то же
> время
> опасный - так как вывод нужно парсить, изменят что-то в выводе, сломается
> парсинг.

Я этого тоже побаиваюсь. Да и утилита эта марсианская какая-то.

> > Посмотрел - еще в /sys/fs/btrfs/{uuid}/devices есть список устройств
> входящих в fs,
> uuid - файловой системы
> Кроме того для всех "устройств" входящих в btrfs, blkid показывает
> одинаковый uuid,
> так как сама btfs собирается скорее всего отталкиваясь от uuid может имеет
> смысл
> использовать его? То есть если / на btrfs то получить для него uuid, по
> uuid получить
> список "устройств", для них получить список модулей?

Согласно документации сюда можно смотреть. Кажется это место лучше.
Спасибо.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] make-initrd
  2020-06-17 18:25                 ` Alexey Gladkov
@ 2020-06-17 18:53                   ` Михаил Новоселов
  0 siblings, 0 replies; 8+ messages in thread
From: Михаил Новоселов @ 2020-06-17 18:53 UTC (permalink / raw)
  To: sisyphus

17.06.2020 21:25, Alexey Gladkov пишет:
> Учитывая, что я никогда не слышал жалоб про btrfs, то
> это была единственная используемая конфигурация ))
Давно не пробовал, но раньше, если система стояла не в корне раздела btrfs, а в подтоме, например, @, Альт был одним из немногих дистрибутивов, для которых требовалось создать /boot отдельным разделом, т.к. initrd иначе не работал.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] make-initrd
  2020-06-17 16:15             ` Alexey Gladkov
  @ 2020-06-20 19:06               ` Leonid Krivoshein
  2020-06-20 19:44                 ` Alexey Gladkov
  1 sibling, 1 reply; 8+ messages in thread
From: Leonid Krivoshein @ 2020-06-20 19:06 UTC (permalink / raw)
  To: sisyphus


17.06.2020 19:15, Alexey Gladkov пишет:
> [...]
> Похоже для btrfs нужно делать `btrfs filesystem show /` и получать оттуда
> полный список devid.

Вообще-то с zfs, lvm и md может быть схожая ситуация, с той лишь 
разницей, что для lvm и md для партиции некое блочное устройство всегда 
создаётся.

ls /sys/block/<devname>/slaves/* (рекурсивно) не поможет?


-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] make-initrd
  2020-06-20 19:06               ` Leonid Krivoshein
@ 2020-06-20 19:44                 ` Alexey Gladkov
  0 siblings, 0 replies; 8+ messages in thread
From: Alexey Gladkov @ 2020-06-20 19:44 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

On Sat, Jun 20, 2020 at 10:06:01PM +0300, Leonid Krivoshein wrote:
> 
> 17.06.2020 19:15, Alexey Gladkov пишет:
> > [...]
> > Похоже для btrfs нужно делать `btrfs filesystem show /` и получать оттуда
> > полный список devid.
> 
> Вообще-то с zfs, lvm и md может быть схожая ситуация, с той лишь разницей,
> что для lvm и md для партиции некое блочное устройство всегда создаётся.
> 
> ls /sys/block/<devname>/slaves/* (рекурсивно) не поможет?

Там такого нет.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-06-20 19:44 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-16  9:16 ` [sisyphus] make-initrd Alexey Gladkov
2020-06-16 12:30     ` Alexey Gladkov
2020-06-16 16:04         ` Alexey Gladkov
2020-06-17 16:15             ` Alexey Gladkov
2020-06-17 18:25                 ` Alexey Gladkov
2020-06-17 18:53                   ` Михаил Новоселов
2020-06-20 19:06               ` Leonid Krivoshein
2020-06-20 19:44                 ` Alexey Gladkov

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git