В потоке systemd -devel «Ошибочное обнаружение деградированного массива» говорится о состоянии гонки между udev и таймером/службой mdadm -последней -инстанции. Затем строка Conflicts=sys-devices-virtual-block-%i.device
запускает размонтирование ранее смонтированной файловой системы.
В теме также упоминается обходной путь , который также должен решить вашу проблему :заменить строку Conflicts=...
на строку ConditionPathExissts=...
:
# cp /usr/lib/systemd/system/mdadm-last-resort@.* /etc/systemd/system/
# sed -i 's@^Conflicts=sys-devices-virtual-block-%i.device@ConditionPathExists=/sys/devices/virtual/block/%i@' \
/etc/systemd/system/mdadm-last-resort@.*
# shutdown -r now
Обратите внимание, что замена -через/etc/systemd/system/.../override.conf
не работает для удаления строки Conflicts=
.
Вы можете подписаться на связанную вышестоящую проблему systemd. Нужна однонаправленная -версия «Конфликтов» , чтобы получать уведомления об изменениях, касающихся основной проблемы.
См. также мой отчет об ошибке Fedora 27 , где эта проблема проявляется в том, что /boot/efi
не монтируется при размещении на зеркале RAID -1.
«Холодное» резервное копирование намного безопаснее, чем «живое».
На работающем PI выполните следующую команду
dd if=/dev/zero of=/tmp/zero bs=8M; rm /tmp/zero
Он будет записывать нули во все свободное пространство, что даст высокую степень сжатия. затем поместите microSD raspberry pi в другую систему, например, на рабочий стол с Ubuntu, и запустите
fdisk -l
Я вижу microSD как /dev/sdb, тогда следующая команда сожмет всю SD с помощью:
gzip -c /dev/sdb > /backup/raspberry-pi.gz
Для восстановления выполните эту команду:
gzip -cd /backup/raspberry-pi.gz > /dev/sdb
Прежде чем приступать к описанной выше процедуре, рекомендуется сделать полную резервную копию.
Как указано в комментариях, у вас есть несколько вариантов уровня файловой системы -для резервного копирования Pi. Если вы сделаете это, вам нужно будет исключить виртуальные файловые системы /proc
и /sys
. Вы также должны знать, что он не будет включать загрузочный образ файловой системы, отличный от -, или вашу таблицу разделов; В конце этого ответа я дам предложение по резервному копированию отдельно.
Вы можете использовать rsync
. Это даст вам копию файловой системы на вашем резервном носителе, а не один файл изображения.
rsync -avzHP --exclude '/proc/' --exclude '/sys/' root@pi:/ /backup/pi.$(date +'%Y%m%d')
Если ваша локальная учетная запись не является root, вы, вероятно, захотите включить параметр --fake-super
для резервного копирования и восстановления. (Он сохраняет сведения об удаленном владении, хотя не может фактически применить их к локальной резервной копии.)
Если вы решите пойти по этому пути, я настоятельно рекомендую вам также просмотреть rsnapshot
, чтобы получить резервные копии GFS без использования большого количества дополнительного дискового пространства.
Вы можете использовать tar
, pax
или любой другой инструмент архивации. Это даст вам сжатое изображение
ssh root@pi 'cd / && tar --exclude '/proc/' --exclude '/sys/' -czvf -.' > /path/to/backup.pi.$(date +'%Y%m%d').tgz
Вы можете использовать другие параметры, такие как duplicity
. Я не использовал это серьезно, поэтому я не думаю, что лучше всего могу привести пример того, как это будет использоваться.
Получив резервную копию файловой системы, вы также, вероятно, захотите восстановить минимальный загрузочный образ.
На моем Pi у нас есть такая структура (Я проигнорировал третий раздел; он может быть у вас, но он, вероятно, был зарезервирован как часть вашей файловой системы):
fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 29.7 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x42913321
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 137215 129024 63M c W95 FAT32 (LBA)
/dev/mmcblk0p2 137216 8388607 8251392 4G 83 Linux
Вам нужно все от начала диска до начала раздела 1(/boot
). В этом конкретном отображении сектора находятся в блоках по 512 байт, но нам нужно прочитать блоки по 4 КБ (размер блока SSD ), поэтому мы делим все числа на восемь:
# Copy the boot segment from the beginning of the disk
dd bs=4k count=$((8192/8)) if=/dev/mmcblk0 | gzip >img0.gz
Вы можете восстановить этот сохраненный сегмент на карту SSD в /dev/mmbclk0
с помощью такой команды. Обратите внимание, что это безвозвратно перезапишет целевое устройство,поэтому проверьте его несколько раз, прежде чем использовать, и не копируйте слепо этот пример:
zcat img0.gz | dd bs=4k iflag=fullblock of=/dev/mmcblk0
partprobe /dev/mmcblk0