Make-initrd development discussion
 help / color / mirror / Atom feed
From: Alexey Gladkov <gladkov.alexey@gmail.com>
To: make-initrd@lists.altlinux.org
Subject: Re: [make-initrd] [degraded md-raid] make-initrd в p9 и в Сизифе
Date: Fri, 28 Feb 2020 00:27:37 +0100
Message-ID: <20200227232737.wqerot2yslzd3egz@comp-core-i7-2640m-0182e6> (raw)
In-Reply-To: <14676039-c12b-489f-2b8f-e9deaaeb5519@gmail.com>

On Fri, Feb 28, 2020 at 12:26:17AM +0300, Leonid Krivoshein wrote:
> > Суть фикса [2] это использовать не фиксированный таймаут для инициализации
> > рейдовых дисков, а сделать его скользящим. Таймаут отчитывается от
> > появления последнего raid-member. По умолчанию новый таймаут выставлен в
> > 10 секунд т.е. если через 10 секунд после появления последнего
> > raid-member есть рейды в состоянии inactive, то выполняется mdadm -IRs.
> 
> Хорошая идея. И задержка разумная. Но по реализации 100-timeout есть
> сомнения: использован RTC вместо твоего же MONOTONIC TIMESTAMP (а время в
> этой стадии точно не может скакануть?)

Время может прыгнуть лишь в виртуалке и с определёнными настройками
виртуалки. touch здесь используется для сериализации смещения таймаута.

> перезатирается $tsfile вторым экземпляром (по идее, надо сначала
> проверять наличие PID-файла)

Кажется ты не понял назначение $tsfile. Его содержимое не важно, кроме
того я его не перезаписываю. Важен его mtime, который меняет touch. Этот
touch не под проверкой на наличие PID-файла, потому что 100-timeout может
выполнятся конкурентно и каждый процесс будет сдвигать таймаут
относительно $now.

Проверка pidfile нужна для того, чтобы запустить проверку таймаута лишь
один раз.

Я понимаю, что в этом коде есть рейс между проверкой и созданием pidfile.
Я думаю это изменить в следующем патче.

> и вот этот код в самом конце -- вызов mdadm -IRs в цикле (если имелась
> ввиду повторная обработка после изменения структуры /sys/block/md*/, то
> её не будет, но будет вероятно избыточные вызовы mdadm -IRs для каждого
> массива, хотя достаточно одного на все).

Да, mdadm нужно выполнять только если что-то из /sys/block/md* изменилось.
Этот патч решал проблему таймаута. Этот код мигрировал из
/lib/uevent/extenders/100-mdstart.

> > Также бага [1] открыла ещё одну проблему, которую не очень понятно как
> > лечить автоматически: если в /etc/mdadm.conf описан не только корень, а
> > целый букет разных рейдов, то все они попадут в initrd, но при этом initrd
> > не будет ждать сборки их всех. Пока лучшей идеи, чем указание кастомного
> > mdadm.conf в такой ситуации у меня нет.
> 
> Виталий там написал, почему идея не очень: действительно имена md будут
> другими.

Я не понял этого аргумента в тогда, так не пониманию сейчас (может ты
объяснишь). Зачем вам стабильные имена этих девайсов ?

> В идеале иметь возможность указывать некий target (чего должен ждать
> init), и чтобы этим target'ом мог бы быть даже некий кастомный скрипт,
> который определяет условие завершения работы.

Это уже есть.

> Тогда можно будет обеспечить выход после обнаружения всех массивов,
> нескольких сетевых карт, итд.

В целом, можно, но это мягко говоря замедлит загрузку. В принципе initrd
уже умеет ждать несколько точек монтирования. Можно попробовать ждать и не
только рутовый девайс.

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

> На железе точно нет. А на PVE тот же qemu. Есть ещё VirtualBox.

Ну это не очень интересно.

-- 
Rgrds, legion



  reply	other threads:[~2020-02-27 23:27 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-17 11:27   ` Leonid Krivoshein
2020-02-17 15:23     ` Alexey Gladkov
2020-02-17 15:28       ` Michael Shigorin
2020-02-18  0:51         ` Leonid Krivoshein
2020-02-17 15:59       ` Leonid Krivoshein
2020-02-17 19:21       ` Leonid Krivoshein
2020-02-18 20:08           ` Michael Shigorin
2020-02-18 20:42             ` Leonid Krivoshein
2020-02-27 20:10       ` Alex Gladkov
2020-02-27 20:30         ` Michael A. Kangin
2020-02-27 21:35           ` Leonid Krivoshein
2020-02-27 22:05           ` Alexey Gladkov
2020-02-27 22:12             ` Michael A. Kangin
2020-02-27 23:34               ` Alexey Gladkov
2020-03-06 20:32           ` Michael Shigorin
2020-02-27 21:26         ` Leonid Krivoshein
2020-02-27 23:27           ` Alexey Gladkov [this message]
2020-02-28  0:17             ` Leonid Krivoshein
2020-02-28 13:33               ` Alexey Gladkov
2020-02-28 21:43                 ` Leonid Krivoshein
2020-02-28 23:39                   ` Alexey Gladkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200227232737.wqerot2yslzd3egz@comp-core-i7-2640m-0182e6 \
    --to=gladkov.alexey@gmail.com \
    --cc=make-initrd@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Make-initrd development discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/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 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \
		make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com
	public-inbox-index make-initrd

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


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