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)
Ответ на: комментарий от firkax
root@srvzhost02-rezerv:/tmp/initramfs# cpio -i < /boot/initrd.img-$(uname -r)
14064 blocks
root@srvzhost02-rezerv:/tmp/initramfs# ll kernel/ kernel/x86/ kernel/x86/microcode/ kernel/x86/microcode/
kernel/x86/microcode/:
total 6.9M
drwxr-xr-x 2 root root    6 Nov 10 15:36 .enuineIntel.align.0123456789abc
drwxr-xr-x 3 root root   23 Nov 10 15:36 ..
drwxr-xr-x 3 root root   70 Nov 10 15:36 .
-rw-r--r-- 1 root root 6.9M Nov 10 15:36 GenuineIntel.bin

kernel/x86/microcode/:
total 6.9M
drwxr-xr-x 2 root root    6 Nov 10 15:36 .enuineIntel.align.0123456789abc
drwxr-xr-x 3 root root   23 Nov 10 15:36 ..
drwxr-xr-x 3 root root   70 Nov 10 15:36 .
-rw-r--r-- 1 root root 6.9M Nov 10 15:36 GenuineIntel.bin

kernel/x86/:
total 0
drwxr-xr-x 3 root root 70 Nov 10 15:36 microcode
drwxr-xr-x 3 root root 17 Nov 10 15:36 ..
drwxr-xr-x 3 root root 23 Nov 10 15:36 .

kernel/:
total 0
drwxr-xr-x 3 root root 23 Nov 10 15:36 x86
drwxr-xr-x 3 root root 20 Nov 10 15:36 ..
drwxr-xr-x 3 root root 17 Nov 10 15:36 .
root@srvzhost02-rezerv:/tmp/initramfs# 

где ll это alias ll='ls -ltrah'

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

это же содержимое папки /tmp/initramfs после cpio -i < /boot/initrd.img-$(uname -r)

bunzip2 , unxz и gunzip ошибку дают. Сработало только cpio -i < /boot/initrd.img-$(uname -r)

вот и содержимое папки /tmp/initramfs показываю

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

Не хочет

Если что, в initrd умеет залезать mc с некоторых пор. Правда там ещё нюанс - сейчас в начало initrd дописывается обновление микрокода. Если дописывание микрокода убрать, можно удобно там лазить. Раз сервер тестовый, попробуй пакет с интеловским микрокодом удалить, чтобы пока не мешался.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 2)
Ответ на: комментарий от Sv00p
(cpio -id; cpio -id ; zcat | cpio -id) < /boot/initrd.img-$(uname -r)

А ещё вместо zcat можно попробовать bunzip2, unxz, zstdcat, unlz4 как с одним cpio -id перед так и с двумя

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

@Radjah Спасибо получилось!!

@firkax вот вывод

oot@srvzhost02-rezerv:/tmp/initramfs# ll
total 41M
drwxrwxrwt 11 root root 4.0K Nov 10 16:39 ..
-rw-r--r--  1 root root  41M Nov 10 16:53 initrd.img
drwxr-xr-x  3 root root   74 Nov 10 16:53 conf
lrwxrwxrwx  1 root root    7 Nov 10 16:53 bin -> usr/bin
drwxr-xr-x  7 root root  143 Nov 10 16:53 scripts
lrwxrwxrwx  1 root root    8 Nov 10 16:53 sbin -> usr/sbin
drwxr-xr-x  2 root root    6 Nov 10 16:53 run
lrwxrwxrwx  1 root root   10 Nov 10 16:53 libx32 -> usr/libx32
lrwxrwxrwx  1 root root    9 Nov 10 16:53 lib64 -> usr/lib64
lrwxrwxrwx  1 root root    9 Nov 10 16:53 lib32 -> usr/lib32
lrwxrwxrwx  1 root root    7 Nov 10 16:53 lib -> usr/lib
-rwxr-xr-x  1 root root 6.5K Nov 10 16:53 init
drwxr-xr-x  7 root root  142 Nov 10 16:53 etc
drwxr-xr-x  7 root root  170 Nov 10 16:53 .
drwxr-xr-x  8 root root   80 Nov 10 16:53 usr


root@srvzhost02-rezerv:/tmp/initramfs# cd scripts/
root@srvzhost02-rezerv:/tmp/initramfs/scripts# ll
total 24K
-rw-r--r-- 1 root root 3.1K Nov 10 16:53 nfs
drwxr-xr-x 2 root root   48 Nov 10 16:53 local-premount
drwxr-xr-x 2 root root   47 Nov 10 16:53 local-bottom
drwxr-xr-x 2 root root   32 Nov 10 16:53 local-block
-rw-r--r-- 1 root root 5.2K Nov 10 16:53 local
drwxr-xr-x 2 root root   85 Nov 10 16:53 init-top
drwxr-xr-x 2 root root   31 Nov 10 16:53 init-bottom
-rw-r--r-- 1 root root  12K Nov 10 16:53 functions
drwxr-xr-x 7 root root  170 Nov 10 16:53 ..
drwxr-xr-x 7 root root  143 Nov 10 16:53 .
root@srvzhost02-rezerv:/tmp/initramfs/scripts# ll local-block/
total 8.0K
-rw-r--r-- 1 root root   78 Nov 10 16:53 ORDER
-rwxrwxr-- 1 root root 1.5K Nov 10 16:53 mdadm
drwxr-xr-x 7 root root  143 Nov 10 16:53 ..
drwxr-xr-x 2 root root   32 Nov 10 16:53 .
root@srvzhost02-rezerv:/tmp/initramfs/scripts# ll local-block/mdadm 
-rwxrwxr-- 1 root root 1.5K Nov 10 16:53 local-block/mdadm
root@srvzhost02-rezerv:/tmp/initramfs/scripts# nano local-block/mdadm 

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

Тут размер не в байтах и непонятно старый это файл или новый ls -al показывает в байтах. Хотя скорее всего всё-таки новый.

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

Вобщем я посмотрел другие скрипты initramfs, походу этот скрипт вообще вызывается только если не получается смонтировать корневую файловую систему. Для остальных разделов он его вызывать даже не пытается.

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

Попробуй так: есть файл local-bottom/mdadm - его так же скопируй из usr/share в etc, он кажется вот такого вида:

#!/bin/sh
rm -f /run/count.mdadm.initrd
exit 0
Сделай такой:
#!/bin/sh
rm -f /run/count.mdadm.initrd
echo '===== mdadm test begin ====='
cat /proc/mdstat
COUNT=0
while grep -F inactive /proc/mdstat >> /dev/null && [ 10 -gt $COUNT ]; do
  ARRAYS=`grep -F inactive /proc/mdstat | awk '{print $1}' | tr '\n' ' '`
  echo "[$COUNT] inactive arrays found: $ARRAYS"
  sleep 1
  COUNT=$((COUNT + 1))
done
if grep -F inactive /proc/mdstat >> /dev/null; then
  ARRAYS=`grep -F inactive /proc/mdstat | awk '{print $1}' | tr '\n' ' '`
  echo "timed out waiting for inactive arrays: $ARRAYS"
  echo "forcing them to start"
  mdadm --run /dev/md?*
  sleep 3
  if grep -F inactive /proc/mdstat >> /dev/null; then
    ARRAYS=`grep -F inactive /proc/mdstat | awk '{print $1}' | tr '\n' ' '`
    echo "still inactive arrays, giving up: $ARRAYS"
  fi
fi
echo '===== mdadm test end ====='

exit 0

И запустись с ним.

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

Только если вставил диск обратно, он его не видит, и его нужно добавлять руками на уже загруженной полноценной системе. Ну я думаю это философия софт рейда.

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

Он писал 10 раз про массив md0 и в конце forcing to start?

Возможно стоит для надёжности ещё перед COUNT=0 добавить строку

mdadm -q --assemble --scan --no-degraded

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

у товарища просто руки не очень прямы и карма низка,бывает, у всех

и да. обычно смысл не в том, чтобы просто «данные достать», а RTO уменьшить.

про нагрузку на шину - смешно!

mumpster ★★★★★
()