Новый RAID-массив не собирается автоматически, что приводит к проблемам с загрузкой

РЕЗЮМЕ

   sg [-] [group [-c ] command]

ОПИСАНИЕ

    The sg command works similar to newgrp but accepts a command.
    The command will be executed with the /bin/sh shell.

Как Вы видите, sg принимает команду после переключателя-c (мы можем сказать, что путем рассмотрения резюме), который будет выполняться с помощью/bin/sh оболочку.

6
13.04.2017, 15:36
2 ответа

На основе (и несколько упрощая) ответа ludvik02 sed :

AA='"abcd efgh" "ijkl mnop" "qrst uvwxyz"'
AA1=$(echo "$AA" | sed -r 's/^([^"]*"){1}([^"]*).*/\2/')
AA2=$(echo "$AA" | sed -r 's/^([^"]*"){3}([^"]*).*/\2/')
AA3=$(echo "$AA" | sed -r 's/^([^"]*"){5}([^"]*).*/\2/')
(Note that                        this ↑                        is different on every line.)

Опция -r для sed включает расширенные регулярные выражения. Мы должны использовать { n } , что означает n вхождений предшествующего regex. ([^ «] *») - соединение (группа) regex, которое соответствует любое количество символов, отличное от «, заканчивается » . Пример входной последовательности может совпадать с этим regex до шести раз (потому что он содержит шесть символов "); с ... вставлены для различения промежутков между последовательностями, эти вхождения являются

"abcd efgh" ... "ijkl mnop" ... "qrst uvwxyz"
↑↑--------↑↑----↑↑--------↑↑----↑↑----------↑
1    2       3       4       5        6

Совпадение любого нечетного числа (например, трех) вхождений, которые потребляют все до и включая n (например, третий) символ «, т.е. символ » в начале ( n + 1 )/2) й (например, второй) процитированный ряд. Затем ([^ "] *) соответствует (и группирует) всему (но не включая) символ ( n + 1) й ", то есть символ " в конце второго процитированного ряда. Так что эта группа (вторая группа) соответствует второй процитированной последовательности. Наконец, . * потребляет остаток входного ряда. Тогда мы заменим всю входную строку на \2 , значение второй группы:

"abcd efgh" ... "ijkl mnop" ... "qrst uvwxyz"
↑↑--------↑↑----↑⇑=======⇑⇈≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡⇈
1    2       3
↑---------------↑⇑=======⇑⇈≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡⇈
        \1          \2          (unnamed)
-121--102671-

Вы сказали это в комментарии:

выше последовательности в переменной. Мне нужно извлечь каждый раздел (первый, второй, третий) и сохранить его разные переменные

Поэтому давайте просто разделим его.

IFS=\"                  #set the shell's field separator
set -f                  #don't try to glob 
set -- $var             #split on $IFS
var1=$2 var2=$4 var3=$6 #yay
unset IFS               #restore something like a sane default

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

-121--102670-

В

  1. Имеются повторяющиеся определения массивов в mdadm.conf . Замените (или прокомментируйте) блок из трех строк, следующих за # определениями существующих массивов MD , чтобы каждый массив был объявлен последней проверкой.

  2. Типичным сценарием для RAID-массивов, которые не могут быть построены на загрузке, является то, что они не были обновлены в initramfs или не набор запускаться во время загрузки. При очень быстром сканировании руководства, на которое вы ссылаетесь , эти шаги не упоминаются, но я могу ошибаться. В системах Debian команды:

     dpkg-reconfigure mdadm # Выберите «все» диски для запуска при загрузке
    update-initramfs -u # Обновление существующих initramfs
    
10
27.01.2020, 20:24

В mdadm.conf вам нужен только UUID, например, так

ARRAY /dev/md0 UUID=d8b8b4e5:e47b2e45:2093cd36:f654020d

Все остальные условия могут помешать сборке RAID .

Для (устаревшей) автоматической сборки вам потребуются:

  • тип раздела fd
  • метаданные 0,90
  • либо вообще без initramfs, либо убедитесь, что initramfs выполняет raidautorun / dev / disk

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

В общем, если возможно (и если initramfs все равно задействован), вам следует придерживаться нового формата метаданных по умолчанию 1.2 и иметь initramfs с mdadm , mdadm. conf настроен.

1
27.01.2020, 20:24

Теги

Похожие вопросы