Понедельник, 14 января, 2019 года

Raspberry Pi USB RAID1 root partition

  Продолжаю собирать статьи по одноплатнику у себя ибо прикупил Raspberry Pi 3 Model B+. Неудобно метаться по интернету в поисках нужной инфы, проще собрать все необходимое у себя в блоге и настраивать неспешно. Все статьи доступны по тегу Raspberry Pi.
Ссылки и авторы ниже

 

(Перевод статьи) Запустил веб-сервер на своей Raspberry Pi и хотел воспользоваться преимуществами высокой надежности RAID1 в корневом (/) разделе. Я нашел, как запускать загрузчик на USB-устройство, а также как настроить RAID1 как некорневой раздел, но я хотел объединить их. Я нашел форум, на котором была предпринята попытка это сделать, но похоже, что они не завершили свою работу, поэтому я поделюсь с вами, как я это сделал. Этот метод также будет работать для других уровней raid, если вы измените шаги соответствующим образом.

Будем исходим из того, что у вас установлена стандартная Raspbian, уже работающая на SD-карте вашего PI, и у вас есть два идентичных USB-накопителя или SD-карты в адаптерах, подключенных (/dev/sda and /dev/sdb). Я использовал две этих флешки USB 3.0 SAMSUNG 64 ГБ, подключенных непосредственно к портам на Raspbian PI.

Ключевым будет переключение на ядро репозитория Raspbian, а не на ядро, основанное на образе Raspbian от RPi foundation. Это связано с тем, что базовое ядро Rpi не имеет скомпилированного модуля raid1 и не использует initramfs, поэтому нет никакой возможности получить RAID из коробки. Образ из репозитория Raspbian использует initramfs и делает этот процесс невероятно простым. Последний образ RPi поддерживает initramfs и raid1.

Настройка ядра

Обновите ядро

# rpi-update

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

Настраиваем initramfs

Добавьте следующие строки в /etc/initramfs-tools/modules

raid1
md_mod
ext4

Обновим initramfs

# update-initramfs -c -k `uname -r`

Вы можете увидеть предупреждения о symlinks. Спокойно игнорируем их, так как процесс пытается создать symlink в vfat файловой системе, которая не поддерживает их.

Отредактируем загрузочную конфигурацию

Сделайте резервную копию оригинала config.txt

# cp /boot/config.txt /boot/config.txt_orig

Используйте следующую команду, чтобы выяснить, какую версию ядра вы используете

# uname -r

Вы увидите что-то подобное 3.10.XX+. Замените на вашу версию в стоке ниже.

Добавьте следующие 2 строки в конеце /boot/config.txt:

kernel=kernel.img
initramfs initrd.img-3.10.XX+ followkernel

Перезагружаемся и проверяем

# reboot
# uname -r

Вы должны увидеть вышеуказанную версию ядра.

Настройка RAID1

Устанавливаем mdadm

# apt-get install mdadm
# modprobe md
# modprobe raid1

Разбейте диски с помощью fdisk и создайте основной раздел, который использует весь диск и имеет системный идентификатор раздела fd Linux raid auto

# fdisk /dev/sda

Повторите для /dev/sdb

Уничтожим все существующие superblocks на флешках

# mdadm --zero-superblock /dev/sda1 /dev/sdb1

Создаем RAID

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
# cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
# mdadm --examine --scan >> /etc/mdadm/mdadm.conf
# dpkg-reconfigure mdadm

Ответить с нижеследующим

Ok
all
Yes
Yes
root

Форматируем RAID

# mkfs.ext4 /dev/md0

Смонтируем RAID во временную локацию

# mount /dev/md0 /mnt/md0

Скопируем данные из действующей системы в md0

# cp -afxv / /mnt/md0

Приведите в соответствие /boot/cmdline.txt должен выглядит следующим образом

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/md0 rootfstype=ext4 elevator=deadline boot_delay=32 rootdelay=10 rootwait

Резервное копирование fstab

# cp /etc/fstab /etc/fstab_orig

Закомментируйте следующие строки в /etc/fstab

/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

Добавим следующую строку в /etc/fstab

/dev/md0 / ext4 defaults,noatime,errors=remount-ro 0 1

Перезагрузитесь

При необходимости удалите исходный раздел на SD-карте.

Теперь система будет загружаться с SD-карты в initramfs, загрузит модули raid и смонтирует raid-массив. Затем загрузится система, работающую с RAID.

Если вы решите использовать rpi-update для обновления ядра, нужно быть очень осторожным. После этого вы должны использовать initramfs-update -c -k xxxxxx+ чтобы создать новый initramfs для нового ядра. Затем вы должны зайти в /boot/config.txt и обновить последнюю строку, чтобы указать на новый initramfs.

Источник

Оставьте комментарий!

Записи в RSS и Комментарии в RSS.