LINUX.ORG.RU
ФорумAdmin

raid1 md0 inactiv после извлечения одного диска

 ,


0

1

Доброго дня. Железо HP ProLiantGen10 DL160. Система Debian12. 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64 GNU/Linux Железный сервак с аппаратным рейдом (hdd).ОСь его видит как один. Всё нормально. Затем были установлены дополнительно 2 ssd и собран из них raid1 с mdadm. Собирал вот так его

mdadm --create --verbose /dev/md1 -l 1 -n 2 /dev/sdd1 /dev/sde1

Дополнительно ещё поправил mdadm.conf : ARRAY /dev/md/0 metadata=1.2 name=servername:0 UUID=7fa2de39:14807166:fd2afb7e:64808f46 и, как по инструкции запустил update-initramfs -u , чтобы при перезагрузке не получить md127. Всё работает неплохо.

Выключаю сервак, достаю один из дисков этого raid1. Включаю - и массив inactiv становится. Дебиан не загружается, мол потерял раздел (Dependency failed for....). Приходится его вот так шатать чтобы оживить:

mdadm: stopped /dev/md0
mdadm --readwrite /dev/md0
ну и на всякий случай тут же update-initramfs -u

после этого он оживает и загружается, и видно красивую надпись (_U), показывающую отсутствие диска. Снова выключаю, диск обратно вставляю - всё работает. Если снова его или соседа вытащить - не рабоатает (inactiv и не загружается).

Подскажите как что ему сделать, чтобы он не терял себя.

# lsmod | grep raid
raid10                 65536  0
raid456               180224  0
async_raid6_recov      24576  1 raid456
async_memcpy           20480  2 raid456,async_raid6_recov
async_pq               20480  2 raid456,async_raid6_recov
async_xor              20480  3 async_pq,raid456,async_raid6_recov
async_tx               20480  5 async_pq,async_memcpy,async_xor,raid456,async_raid6_recov
raid6_pq              122880  3 async_pq,raid456,async_raid6_recov
libcrc32c              16384  2 xfs,raid456
raid0                  24576  0
raid1                  53248  1
md_mod                192512  7 raid1,raid10,raid0,linear,raid456,multipath



Последнее исправление: Sv00p (всего исправлений: 5)

Сделай так:

1) убедись что массив работает

2) cat /proc/mdstat

3) dmesg -T -w

4) вытащи диск и подожди 20 сек

5) нажми ctrl+c чтобы прервать запущеный dmesg

6) cat /proc/mdstat

Вывод всех команд пришли сюда.

А, я не понял - ломается только если на выключенном вытащить?

Тогда пришли полный dmesg после включения с неработающим массивом и что в него добавилось в ходе ввода команд.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Sv00p

Не опасно, рейд для того и сделан чтобы один диск мог как угодно отвалиться а второй продолжал работать. После втыкания назад придётся его синхронизировать. Но если ломается на выключенном может и нет толку включёный проверять. Но сломанный dmesg и dmesg после починки, и cat /proc/mdstat в обоих состояниях нужны.

А вообще у тебя непонятное описание:

Включаю - и массив inactiv становится.

Откуда ты взял этот «inactiv»? У тебя же ничего не грузится.

Дебиан не загружается, мол потерял раздел (Dependency failed for....). Приходится его вот так шатать чтобы оживить:

Куда ты вводишь эти команды если оно не грузится? И «mdadm: stopped» это не команда. То есть команда всего одна? Откуда там stopped?

после этого он оживает и загружается, и видно красивую надпись (_U)

Где видно надпись?

Снова выключаю, диск обратно вставляю - всё работает.

Сразу работает без пересинхронизации? Ты же на оставшийся диск что-то дописывал, старый надо привести в то же состояние. Впрочем, cat /proc/mdstat покажет.

firkax ★★★★★
()

Выключаю сервак, достаю один из дисков этого raid1. Включаю - и массив inactiv становится. Дебиан не загружается, мол потерял раздел (Dependency failed for....).

А система откуда стартует? С аппаратного? Если софтовый для загрузки не очень нужен, можно его в fstab с nofail каким-нибудь описать. А вообще запускать/не запускать деградированный массив должно решаться в скриптах в initrd по идее.

AS ★★★★★
()

Это происки initramfs скриптов. Пишут, что в debian при команде dpkg-reconfigure mdadm будет задан вопрос, нужна ли загрузка при деградированом raid. Попробуйте.

Советы из прошлого:

echo "BOOT_DEGRADED=true"  >>  /etc/initramfs-tools/conf.d/mdadm
или ″bootdegraded=true″ скорее всего не помогут, и вобще долгое время был баг в initramfs, и загрузка с неполным raid решалась только правкой этих скриптов.

Ну и в mdadm.conf не долно быть устройств, из которых состоит raid (типа /dev/sdd1), проверьте, вдруг случайно туда попали.

mky ★★★★★
()
Ответ на: комментарий от firkax

Откуда ты взял этот «inactiv»? У тебя же ничего не грузится.

Система загружается в рекавери моде (в дебианах новых вроде так). Тут стоит упомянуть что основная система на другом диске живет, а загрузиться не может из-за того что теряет точку монтирования, заданную в фстабе и живущую на этом md0.

Dependency failed for 

Your are in emergency mode. After logging in.....
Give root password for maitenance (or press Control-D to continue):

Соответственно ввожу пароль рута и даю команды (поправил команды)

cat /proc/mdstat     пишет inactiv
mdadm --stop /dev/md0
mdadm --assemble --scan
mdadm --readwrite /dev/md0

И в cat /proc/mdstat видно надпись (_U) и массив active становится. Затем делаю ребут - всё грузится спокойно и работает на одном диске. Потом выключаю сервак, вставляю второй диск - тоже всё грузится и работает, и в cat /proc/mdstat уже (UU) и идет пересинхронизация.

Затем выключаю снова сервак, достаю любой из двух дисков - не грузится, только перед тобой предстаёт вышеупомянутый рекавер моде от ОС debian. Естественно если убрать диск один и из фстба убрать точку монтирования, то при любом раскладе система загрузится полноценно, минуя рекавери моде, но рейд при этом будет также inactiv при извлеченом диске. А мне то нужна эта точка монтирования)

Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 2)
Ответ на: комментарий от AS

А система откуда стартует? С аппаратного? Если софтовый для загрузки не очень нужен, можно его в fstab с nofail каким-нибудь описать. А вообще запускать/не запускать деградированный массив должно решаться в скриптах в initrd по идее.

Да система из другого диска стартует, проблем нет с этим. А точка монтирования (которая на этом софтовом рейде) отваливается при inactiv рейде

Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 2)
Ответ на: комментарий от firkax

Прежде чем вытащить диск на рабочем сервере, пометил его как fail по подсказке @LongLiveUbuntu ★★★★★

mdadm /dev/md0 --fail /dev/sdd1

Поучил такой вывод

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdd1[0](F) sda1[1]
      124782400 blocks super 1.2 [2/1] [_U]
      bitmap: 1/1 pages [4KB], 65536KB chunk

Затем вытащил диск

  1. dmesg -T -w
Thu Nov  9 08:36:45 2023] perf: interrupt took too long (3159 > 3136), lowering kernel.perf_event_max_sample_rate to 63250
[Thu Nov  9 10:21:14 2023] md/raid1:md0: Disk failure on sdd1, disabling device.
                           md/raid1:md0: Operation continuing on 1 devices.
[Thu Nov  9 10:23:28 2023] smartpqi 0000:5d:00.0: removed 14:0:1:0 31402ec0169183850000000000000000 Direct-Access     ATA      SPCC Solid State AIO+ qd=32    
[Thu Nov  9 10:23:28 2023] sd 14:0:1:0: [sdd] Synchronizing SCSI cache
[Thu Nov  9 10:23:28 2023] sd 14:0:1:0: [sdd] Synchronize Cache(10) failed: Result: hostbyte=DID_OK driverbyte=DRIVER_OK
[Thu Nov  9 10:23:28 2023] sd 14:0:1:0: [sdd] Sense Key : Illegal Request [current] 
[Thu Nov  9 10:23:28 2023] sd 14:0:1:0: [sdd] Add. Sense: Logical unit not supported

и вот mdsstat, тут видно что диска нет

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda1[1]
      124782400 blocks super 1.2 [2/1] [_U]
      bitmap: 1/1 pages [4KB], 65536KB chunk
Sv00p
() автор топика
Ответ на: комментарий от Sv00p

Прежде чем вытащить диск на рабочем сервере, пометил его как fail

А если он сам отпадёт, а потом сервер перезагрузится? Вопрос, как я понимаю, не в том, чтобы носитель удалить, а в том, чтобы сервер грузился с деградированным RAID.

AS ★★★★★
()
Ответ на: комментарий от firkax

Вот такая картина когда выключаю сервер, вытаскиваю диск. Включаю. Не грузится точка монтирования которая в рейде и ОСь дебиан в режиме рекавери, где предлагает ввести пароль рута и что-то настроить. Так и сделал. Точка монтирования для дополнительного микросервиса с кластером пострегрес.

1.500659] i8042: Can't read CTR while initializing 18042
Timed out for wait ing the udev queue being empty.
Root: clean, 63242/855120 files, 998961/3417088 blocks
[ TIME ] Timed out waiting for device dev-mdo.device - /dev/md0
[DEPEND] Dependency failed for var-lib-postgresql.mount - /var/lib/postgresql
to You system [DEPEND] boot are in logs, into Dependency emergency default 'systemct I failed mode. mode. reboot' for After to logging reboot, local-fs.target in, type - "systemct1 Local "journalct1 File default" Systems. or -xb" to "exit" view
Give root password for maintenance
(or press Control-D to continue):
root@srvzhost01:~#
root@srvzhost01:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : inactive sda1[1] (S)
124782416 blocks super 1.2

unused devices: <none>

rootesrvzhost01:#

Далее вписываю команды:

mdadm --stop /dev/md0
mdadm --assemble --scan
mdadm --readwrite /dev/md0

После этого вывод dmesg -T -w вот такой (туда же добавил инфо cat /proc/mdstat):

[Thu Nov  9 11:08:56 2023] hid-generic 0003:03F0:7029.0011: input,hidraw0: USB HID v1.10 Keyboard [iLO Virtual Keyboard] on usb-0000:01:00.4-1/input0
[Thu Nov  9 11:08:56 2023] input: iLO Virtual Keyboard as /devices/pci0000:00/0000:00:1c.4/0000:01:00.4/usb1/1-1/1-1:1.1/0003:03F0:7029.0012/input/input19
[Thu Nov  9 11:08:56 2023] hid-generic 0003:03F0:7029.0012: input,hidraw1: USB HID v1.10 Mouse [iLO Virtual Keyboard] on usb-0000:01:00.4-1/input1
[Thu Nov  9 11:09:09 2023] md: md0 stopped.
[Thu Nov  9 11:09:09 2023] md/raid1:md0: active with 1 out of 2 mirrors
[Thu Nov  9 11:09:09 2023] md0: detected capacity change from 0 to 249564800

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[1]
      124782400 blocks super 1.2 [2/1] [_U]
      bitmap: 0/1 pages [0KB], 65536KB chunk


Т.е. в рекавери моде сделал манипуляции с рейдом, он его [md0] увидел и далее я нажимаю init 6 и всё прекрасно грузится, и в md0 один диск (_U). Потом выключаю снова сервер - вставляю второй диск и массив в порядке (ну там синхронизировать начинает)

П.С.В фстабе строка вот такая.

/dev/md0 /var/lib/postgresql    xfs     defaults,noatime,nodiratime        0       0

В /etc/mdadm/mdadm.conf вот такая запись (update-initramfs -u сделано)

ARRAY /dev/md/0 metadata=1.2 name=srvzhost01:0 UUID=7fa2de39:14807166:fd2afb7e:64808f46

В /etc/modules вот такая:

md_mod
raid1

В /etc/initramfs-tools/conf.d/mdadm вот такую добавлял:

BOOT_DEGRADED=true

dpkg-reconfigure mdadm ответил везде yes (кроме отправки на почту сообщений)

Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 9)
Ответ на: комментарий от LongLiveUbuntu

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

Очень даже знает. Когда он, например, вообще из системы пропадает. Да и на плохие сектора реакция должна быть по идее.

AS ★★★★★
()
Ответ на: комментарий от Sv00p

Перед выключением-вытаскиванием синхронизация успевала доделаться, массив был в полностью нормальном стабильном состоянии?

Когда загрузилось и не хочешь собираться в массив посмотри что пишут команды

mdadm --detail --scan
mdadm -E /dev/sda1
(sda1 - диск который остался)

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Sv00p

а как именно ? update-initramfs -u будет достаточно?

А вот это уже вопрос специфики дистрибутива, я не Debian использую. Но тоже похоже на вид. Вероятно где-то можно как-то вариант ядра указать, если в Debian одновременно несколько может быть установлено. И если ядро обновить, если обновление уже есть, initrd тоже должен с новым конфигом создаться.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от firkax

Вот сейчас на резервной железке с той же самой ОСью проделал следующую манипуляцию:

  1. два диска в массив md0

mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/sd{c,d}1

  1. Сделано:
# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdd1[1] sdc1[0]
      114932416 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk
  1. Закидываю инфу о массиве в конфиг mdadm, поправляя имя потом там в стоке на /dev/md/0, потом update-initramfs -u

mdadm --detail --scan >> /etc/mdadm/mdadm.conf && nano /etc/mdadm/mdadm.conf

  1. Делаю ему фс mkfs.xfs /dev/md0. и монтрую папку ему туда через фстаб. systemctl daemon-reload && mount -a

  2. выключаю железку. вытаскиваю один из дисков. Система грузится в рекавери (ввожу рут пароль смотрю статус массива и чиню его):

0.052400] x86/cpu: SG¥ disabled by BI0S.
/sbin/fsck.xfs: XFS file system.
[ TIME ] Timed out waiting for device dev-mde.device - /dev/mde.
[DEPEND] Dependency failed for mnt-TEST_RAID_FOLDER.mount - /mnt/TEST_RAID_FOLDER.
[DEPEND] Dependency failed for local-fs.target - Local File Systems.
You are in emergency mode. After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" or "exit"
to boot into default mode.
Give root password for maintenance
(or press Control-D to continue):
rootesrvzhost02-rezerv:
root@srvzhost02-rezerv:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raidø] [raid1] [raid6] [raid5] [raid4] [raid10]
mde : inactive sdc1[1] (S)
114932416 blocks super 1.2
unused devices: <none>
rootesrvzhoste2-rezerv:# 
root@srvzhost02-rezerv:# 
root@srvzhost02-rezerv:^# mdadm -E /dev/md0 && mdadm --stop /dev/md0 && ndadm --assemble --scan && mdadm --readwrite /dev/md0
mdadm: stopped /dev/mde
mdadm: /dev/md/0 has been started with 1 drive (out of 2).
root@srvzhost02-rezerv:~# mdadm -E /dev/md0
mdadm: No md superblock detected on /dev/mde.
root@srvzhost02-rezerv:^# cat /proc/mdstat
Personalities : [linear] [multipath] [raide] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc1[1]
114932416 blocks super 1.2 [2/1] [_U]
bitmap: 0/1 pages [0KB], 65536KB chunk
unused devices: <none>
rootesrvzhosto2-rezerv:#
  1. Выключаю железку. Подкидываю второй диск - всё работает.

Вот что ему не так ? Почему он не хочет грузиться с одним диском без вмешательства?

Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 2)
Ответ на: комментарий от Sv00p

Ты какие-то странные команды вводишь, я просил совсем другое.

В данном случае после cat /proc/mdstat надо было ввести

mdadm -E /dev/sdc1
mdadm -v -v --detail --scan

Не надо никаких stop assemble итд и не надо объединять их через && - пусть видно будет где чей вывод.

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

Добавление: после тех двух команд введи

mdadm  -v -v --assemble --scan --run

и покажи её вывод тоже и /proc/mdstat после неё.

Другие команды вводить не надо.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 5)
Ответ на: комментарий от firkax

Вот снова из режима рекавери, один диск вытащил. Система не грузится, sdc1 - это диск из массива, другой диск извлечен. ввожу пароль рута и:

0.052458] x86/cpu: SGX disabled by BIOS.
/sbin/fsck.xfs: XFS file system.
[ TIME ] Timed out waiting for device dev-md0.device - /dev/mdo.
[DEPEND] Dependency failed for mnt-TEST_RAID_FOLDER.mount - /mnt/TEST_RAID_FOLDER.
[DEPEND] Dependency failed for local-fs.target - Local File Systems
You are, in emergency mode. After logging in, type "Journalctl -xb" to view
system logs, "sustemctl reboot" to reboot, "systemctl default" Or "exit"
to boot into default mode.
Give root password for maintenance
(or press Control-D to continue):
root@srvzhost02-rezerv:^# mdadm -E /dev/sdc1
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
irray UUID : 84569efø:eb964a88:f42c6b5b:8dff098z
lame : srvzhost02-rezerv:0 (local to host srvzhost02-rezerv)
Creation Time : Thu Nov s 14:52:29 2023
Raid Level : raidl
Raid Devices : 2
ivail Dev Size : 229864833 sectors (109.61 GiB 117.69 GB)
Array Size : 114932416 KiB (109.61 GiB 117.69 GB)
Used Dev Size : 229864832 sectors (109.61 GiB 117.69 GB)
Data Offset : 133120 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 13913f9b:f320d6c8:cf90dfe4:b187ef45
Internal Bitmap
8
sectors from superblock
Update Time : Thu Nov
Bad Block, Lo : 512 entries avallable at offset 16 sectors
17:09:16 2023
Checksum : 482668e1 - correct
Events: 273
Device Role : Active device 7
Array State : AA ('A == active, '.' == missing, 'R' == replacing)
root@srvzhost02-rezerv:#

root@srvzhost02-rezerv:# mdadm --detail --scan
INACTIVE-ARRAY /dev/md0 metadata=1.2 name=srvzhost02-rezerv:0 UUID=84569ef0:eb964a88:f42c6b5b:8dff0982
rootdsrvzhostø2-rezerv: #

При этом в etc/mdadm/mdadm.conf вот такая картина:

ARRAY /dev/md/0 metadata=1.2 name=srvzhost02-rezerv:0 UUID=84569ef0:eb964a88:f42c6b5b:8dff0982
Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 1)
Ответ на: комментарий от firkax

Вот такой вывод:

root@srvzhost02-rezerv:"w mdadm -v -v --assemble --scan --run
mdadm: looking for devices for /dev/md/0
mdadm: No super block found on /dev/dm-6 (Expected magic a92b4efc, got 46474158)
mdadm: no RAID superblock on /dev/dm-6
mdadm: No super block found on /dev/dm-5 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/dm-5
mdadm: No super block_found on /dev/dm-4 (Expected magic a92b4efc, got 00000405)
mdadm: no RAID superblock on /0ev/om-4
mdadm: No super block found on rdev/dim-S (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/dm-S
mdadm: No super block found on /dev/dm-2 (Expected magic a92b4efc, got 00000403)
mdadm: no RAID superblock on /dev/dm-2
mdadm: No super block found on /dew/dm-1 (Expected magic aS2b4efc, got 00000403)
mdadm: nD RAID superblock on /dew/dm-1
mdadm: No super block found on /dev/dm-0 (Expected magic a92b4efc, got 00000414)
mdadm: no RAID superblock on /dev/dm-0
mdadm: /dev/sdci is busy - skipping
mdadm: No super block found on /dev/sdc (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on #dev/sdc
mdadm: No super block found on /dey/sdb4 (Expected magic a92b4efc, got 2fead077)
mdadm: no RAID superblock on /dev/sdb4
mdadm: No super block found on /dev/sdb3 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sdb3
mdadm: No super block_found on /dev/sdb2 (Expected magic a92b4efc, got 00040001)
mdadm: no RAID superblock on /dev/sdb2
mdadm: No super block found on /dev/sdb1 (Expected magic a92b4efc, got 07020701)
mdadm: no RAID superblock on /dev/sdb1
mdadm, No super block foundl on /dey/sdb (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sdb
mdadm: No super block found on /dev/sda5 (Expected magic a92b4efc, got 42334241)
mdadm: no RAID superblock on /dey/sda5
mdadm: No super block found on /dev/sda (Expected magic a92b4efc, got 42334241)
mdedm: no RAID superblock on /dey/sda4
mdadm: No super block found on /dev/sda3 (Expected magic as2b4efc, got 00392ae0)
moadm: no RAID superblock on /dey/sda3
mdadm: No super block found on /dev/sda2 (Expected magic a92b4efc, got 42334241)
mdadm: no RAID superblock on /dey/sda2
mdaom No super block found on /dey/sda1 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dey/sda1
mdadm: No super block tound on dey/sda (Expected magic a92b4efc, got 0000000e)
mdadm: no RAID superblock on /dev/sda
root@srvzhost02-rezerv:#
Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 1)
Ответ на: комментарий от firkax
root@srvzhost02-rezerv:#
root@srvzhost02-rezerv:# mdadm --run /dev/md0
mdadm: started array /dev/md/0
roct@srvzhost02-rezerv:#
rootesrvzhost02-rezerv:# cat /proc/mdstat
Personalities : [linear] [multipath] [raido] [raid1] [raid6) [raid5] [raid4] [raid10]
mdo : active (auto-read-only) raid1 sdb1[1]
114932416 blocks super 1.2 [2/1] (_U]
bitmep: 0/1 pages [0KB), 65536KB chunk
unused devices: <none>
root@srvzhost02-rezerv:#

Вот так тоже самое выдаёт (запускает удачно неактивный массив):

root@srvzhost02-rezerv:# mdadm -v -v --run /dev/md0
mdadm: started array /dev/md/0
Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 3)
Ответ на: комментарий от Sv00p

Так, ну эта команда работает значит (и можешь проверить - массив теперь можно монтировать и делать с ним что угодно, больше mdadm запускать не требуется, надпись про read-only исчезнет сама), а её initramfs должен запускать перед тем как сказать про таймаут. Давай узнаем почему он её не делает.

Хотя для начала ещё одна проверка. Ребутнись ещё раз в emergency чтобы массив опять был inactive (думаю достаточно просто reboot сделать) и введи там команду

echo mdadm --run /dev/md?*
(посмотри что напишет)

а потом

mdadm --run /dev/md?*
после неё тоже всё починится? Если да - то см. ниже

-----------------------------------------------------

Запусти нормально систему (с двумя дисками).

Файлы есть такие?

/etc/initramfs-tools/scripts/local-block/mdadm
/usr/share/initramfs-tools/scripts/local-block/mdadm

скорее всего первого нет, а второй есть (если не так - то что дальше написано не делай а найди отличия)

Если первого нет, а второй есть - скопируй второй в первый, пролистай в конец, там будут нужные строки:

mdadm -q --assemble --scan --no-degraded || true

и чуть ниже

mdadm -q --run /dev/md?*

Первая отвечает за первоначальный старт полных массивов (когда все диски на месте), вторая - спустя сколько-то там секунд (вроде не меньше 30, кстати у тебя в начале работы системы, ещё до основного запуска, при вытащеном диске появляется эта задержка?) - стартует оставшиеся с теми дисками что удалось найти.

Допиши туда перед и после каждого отладочные echo и убери -q, как-то так:

echo begin: mdadm --assemble --scan --no-degraded
mdadm --assemble --scan --no-degraded || true
echo end: mdadm --assemble --scan --no-degraded

и чуть ниже

echo begin: mdadm --run /dev/md?*
mdadm --run /dev/md?*
echo end: mdadm --run /dev/md?*

А ещё чуть выше там есть такая строка:

echo $COUNT > /run/count.mdadm.initrd

добавь рядом ещё одну:

echo mdadm count = $COUNT

Напомню - все правки - в копии файла в /etc, а не в оригинале в /usr/share

После чего пересобери initramfs, ребутнись без второго диска и посмотри что он напишет. Надеюсь эти надписи там нормально повисеть успеют перед тем как их затрёт дальнейший процесс.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Sv00p

вот такую добавлял:

Зачем? Вы бы сначала что погуглили, что поиском по этому форуму прошлись, касательно BOOT_DEGRADED. Не работает это. Да и с ″dpkg-configure″, оказывается, нежданчики бывают Летопись «Как я потерял сервер»

В общем, с автоматической активацией деградированого RAID в дебиан/убунту всё плохо (было и есть), а многие админы вобще не в курсе, что ещё хуже.

Как вам уже написали, хотите разобраться, начинайте ковырять initramfs скрипты. Вставляте в них отладочную печать, вставляйте ″sleep 10″, чтобы успеть прочитать сообщения. Или снимайте монитор на видео, для чего ещё нужны смартфоны :)

mky ★★★★★
()
Ответ на: комментарий от mky

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

mky ★★★★★
()
Ответ на: комментарий от bugfixer

HW RAID

Т.е. к рискам вылета дисков ты добавил риск вылета самого контроллера. Молодец. А если в магазине за углом не будет такого же контроллера на замену, то время восстановления непрогнозируемо возрастает. Софтовый raid можно на любом железе завести. Там нет проприетарного формата.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

если в магазине за углом не будет такого же контроллера на замену, то время восстановления непрогнозируемо возрастает.

Начнём с того что товарищ уже завязан на этот контроллер, а закончим простым фактом что если у вас нет spares на всё но downtime уже непрогнозируем.

ПыСы. Прелесть RAID1 в том что даже с HW контроллером там просто будет control block или в начале или в конце. Я вам с такого диска и без контроллера данные достану, если приспичит, причём штатными линуксовыми средствами. А с совтовым рейдом у вас как минимум нагрузка на шину при записи в 2 раза больше, есть и другие накладные расходы. Это не говоря о том что он у товарища вообще не завелся из коробки, с чего этот тред и начался.

bugfixer ★★★★
()
Последнее исправление: bugfixer (всего исправлений: 1)
Ответ на: комментарий от firkax

пересобери initramfs

Как именно ? делал update-initramfs -u резульатата нет. при загрузке с одним диском он висит около 2-3 минут, и затем то же самое - т.е. echo не срабатывали, так как скорее всего я неправильно дал команду на пересборку.

п.с.

скорее всего первого нет

Все верно, пришлось создать еще и директорию local-block
mkdir /etc/initramfs-tools/scripts/local-block/ и потом там файлик mdadm править

не нужно зря перезагружать рабочий сервер.

Я уже на тестовом воспроизвожу, боевой пока ждёт лечения)

Sv00p
() автор топика
Ответ на: комментарий от Sv00p

Не пробовал собирать initramfs с помощью dracut? В centos 9 dracut по умолчанию этим занимается, и raid1 тома стартуют при отстутствии одного из дисков. Правда, после 130 сек ожидания этого отсутствующего диска.

iliyap ★★★★★
()
Ответ на: комментарий от bugfixer

Немножко офтопик, но я решительно не понимаю что Вас заставило при наличии полноценного HW RAID связываться с софтовым? Геморрой Вы уже отгребли…

Геморрой, как таковой, не из-за софтраида самого по себе, а то ли из-за баги, то ли из-за фичи в скриптах. Это решаемо при некотором упорстве. Даже, вероятно, не своими руками, а через багтрекер дистрибутива, Дебиана в данном случае.

А почему не в HW RAID - ну так SSD. Там и 4K сектор, и TRIM. Знает ли про это контроллер? Если новый, то, вероятно, да, а если старый, то нет.

AS ★★★★★
()
Ответ на: комментарий от firkax

добавлю инфы по iniramfs

root@srvzhost02-rezerv:# lsinitramfs /boot/initrd.img-$(uname -r) | grep mdad
etc/mdadm
etc/mdadm/mdadm.conf
etc/modprobe.d/mdadm.conf
scripts/local-block/mdadm
scripts/local-bottom/mdadm
usr/sbin/mdadm

Вот как пересобрать этот initram?

Есть новоиспеченный скопированный файлик mdadm (с правами на исполнение, один в один с тем, который оригинальный скрипт в /usr/share/initramfs-tools/scripts/local-block/mdadm ). Этот новый mdadm лежит теперь также и тут -> /etc/initramfs-tools/scripts/local-block/ (внутри там добавлены echo beginЫ)

Как его «скормить» скрипту update-initramfs -u ?

Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 2)
Ответ на: комментарий от Sv00p

После update-initramfs -u у этого файла дата не изменилась и внутри старое содержимое?

По идее именно она должна пересобирать.

Как его «скормить» скрипту update-initramfs -u ?

Он сам должен его оттуда брать если он есть.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

не, файл /etc/initramfs-tools/scripts/local-block/mdadm остался с той же датой и с тем же содержимым как и при создании (копировании если быть точнее)

Он сам должен его оттуда брать если он есть.

Получается он не хочет этот файл кушать /etc/initramfs-tools/scripts/local-block/mdadm

update-initramfs -uv -k all тоже самое, не кушает его не одно ядро. там прям вербос видно

Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 4)
Ответ на: комментарий от Sv00p

Всмысле остался с той же датой? О каком файле речь - о том который в файловой системе или о содержимом initramfs?

В самом initramfs никаких дат нет, а в /etc в системе после того как ты его редактировал у него дата должна была обновиться.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax
root@srvzhost02-rezerv:# ls -al /etc/initramfs-tools/scripts/local-block/mdadm /usr/share/initramfs-tools/scripts/local-block/mdadm
-rwxrwxr-- 1 root root 1458 Nov 10 08:19 /etc/initramfs-tools/scripts/local-block/mdadm
-rwxr-xr-x 1 root root 1377 Nov 10 08:12 /usr/share/initramfs-tools/scripts/local-block/mdadm
Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 2)
Ответ на: комментарий от Sv00p

Непонятно тогда что скрывается за фразой " остался с той же датой и с тем же содержимым как и при создании (копировании если быть точнее)" - видно что дата другая и правки на месте.

Сделай так:

mkdir /tmp/initramfs
cd /tmp/initramfs
gunzip  < /boot/initrd.img-$(uname -r) | cpio -i
ls -al /tmp/initramfs/scripts/local-block
firkax ★★★★★
()
Ответ на: комментарий от firkax
root@srvzhost02-rezerv:/tmp/initramfs# file /boot/initrd.img-$(uname -r)
/boot/initrd.img-6.1.0-12-amd64: ASCII cpio archive (SVR4 with no CRC)
root@srvzhost02-rezerv:/tmp/initramfs# bunzip2  < /boot/initrd.img-$(uname -r)
bunzip2: (stdin) is not a bzip2 file.

root@srvzhost02-rezerv:/tmp/initramfs# unxz  < /boot/initrd.img-$(uname -r)
unxz: (stdin): File format not recognized

Sv00p
() автор топика
Последнее исправление: Sv00p (всего исправлений: 1)