Здесь следует отметить пару вещей:
==
вместо =~
, так как мы не ищем здесь равенства. regex
, а не wildcard
, так что... Порядок операндов в [[ должен быть обратным, а именно, как:
if [[ ${SEARCHNAME[@]} =~.*$NAME.* ]]
Я использую Arch Linux и столкнулся с такой же проблемой. Я создал массив RAID5 на том же домашнем хосте, что и мой хост-компьютер. mdadm --detail /dev/md/data
показывает следующую строку
Name : MY-NAS:data (local to host MY-NAS)
UUID : 3f3b2cba:5c184b08:183f0bc1:4bb971a1
Events : 14720
Мое имя хоста MY-NAS
. Командой mdadm --detail --scan >> /etc/mdadm.conf
я получил дополнительную строку для сборки RAID
ARRAY /dev/md/data metadata=1.2 spares=1 name=MY-NAS:data UUID=3f3b2cba:5c184b08:183f0bc1:4bb971a1
Однако, когда я перезагружаю машину, массив появляется в /dev/md/MY-NAS:data
вместо /dev/md/data
. Если я mdadm --stop /dev/md/MY-NAS:data
, а затем mdadm --assemble --scan
, он появится в /dev/md/data
.
Изучив, как работают правила udev https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/tree/udev-md-raid-arrays.rules, я считаю, что вам необходимо
mdadm_udev
передlvm
mkinitcpio -P
каждый раз, когда вы вносите изменения в /etc/mdadm.conf
, так как файл напрямую добавляется вinitramfs
После этого имя устройства будет исправлено.
Кстати :Я пользователь Arch Linux. Для Ubuntu/Debian эквивалентом mkinitcpio
является update-initramfs
в соответствии сhttps://askubuntu.com/questions/1210480/ubuntu-equivalent-of-mkinitcpio-conf. Но я не знаю, как изменить порядок крючков.