LINUX.ORG.RU

Вопрос по организации RAID-массива для десктопа на Debian

 , , , ,


1

3

День добрый! Есть вопрос. Хочу перейти на RAID. По поводу того “какой именно рэйд нужен” совет не требуется, тут я как раз определился – это будет RAID1 с параллельным чтением, на двух дисках nvme, для мощного десктопа на Debian (KDE). Сомнения вызвало другое – какой тип организации массива выбрать. Есть три – программный, аппаратный и смешанный (это когда есть RAID-чип на материнке, но он не всю работу берёт не себя). Сначала подумал в сторону аппаратного, стал искать, находил карты и за 1,5 тыс. ₽, и за 1,5 тыс. $. Спросил у ИИ, он говорит, что дешёвые просто добавляют ещё слот nvme, а рэйд просчитывается всё равно системой (хотя на этих картах есть слово RAID). Это верно? Так вот, дорогие варианты за несколько тыс. долларов – не подходит. Касательно смешанного типа – про него отзывы не очень, ненадёжно, много ошибок бывает. Получается, остаётся программный вариант, через mdadm. Про него ИИ говорит, что он медленный. Тогда вопрос – а насколько медленный, насколько это критично? Если я правильно понимаю, чтение всё равно будет быстрее (т. к. параллельное, с двух дисков сразу), но эта скорость будет обеспечиваться за счёт нагрузки на проц. А так ли велика эта нагрузка, или можно не париться? Итак: аппаратный – дорого, смешанный – ненадёжно, программный – грузит проц. Где прав, а где соврал ИИ? Что лучше в моём случае?

Ответ на: комментарий от Dimez

По спецификации ESP раздел доступен на запись, это не самоуправство. В т.ч. там могут храниться настройки на системах без nvram. Нельзя рассчитывать на то, что EFI никогда ничего не запишет на системный раздел. Моя материнская плата, например, умеет сохранять бэкап настроек на esp.

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

RAID1 нужен для дублирования диска

т.е. для всех ssd в массиве будет одинаковый TBW?
и при достижении soft-kill value в прошивке по лимиту TBW в потребительских ссд накроется весь массив синхронно?

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 1)

К вопросу о ESP на двух накопителях. Я на десктопе использую два независимых, чтобы не синхронизировать ошибки и иметь независимые ФС. Старое ядро UKI копируется на резервный перед установкой нового, и фирмварь видит их все:

→ cat /etc/fstab 
# /dev/nvme?n1p1
UUID=A...  /boot/efiback                   vfat  noauto   0 0
UUID=F...  /boot/efi                       vfat  defaults 0 0
→ cat /etc/kernel/install.d/05-sync-efiback.install 
#!/bin/sh
VERB="$1"
ESP=/boot/efi
BACK=/boot/efiback

if [ "$VERB" = "add" ] && mountpoint -q "$ESP" && mount "$BACK"; then
    rsync -a --delete "$ESP"/ "$BACK"/
    umount "$BACK"
    echo "Backup $ESP to $BACK ✔"
fi

Через хуки в grub можно так же на более традиционной системе.

emmawatsondtypants
()
Ответ на: комментарий от pfg

собери в raid1 nvme и hdd - получишь скорость nvme и надежность hdd :)

у меня такое с флагом writemostly на hdd - и на вызовах sync оно естественно жёстко тупит, хорошо видно по работе кеша браузера.

Чтение - да, отличное.

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

на esp.

На какой esp, если в системе их несколько? Если прошивка платы пишет и читает настройки со случайно выбранного раздела, ну удачи с такой платой. А если плата пишет только на один (первый, чтобы это не значило) esp-раздел, то собираем raid1 и второй раздел объявляем write-mostly. Да, настройки на второй ESP просто так не скопируются, изредка нужно будет делать синхронизацию, но косяков с ФС не возникнет.

что EFI никогда ничего не запишет на системный раздел.

Но, какие бы данные она туда не записала, — это не критичная для работы системы информация, отвал накопителя не приводит к смерти материнки. И плата должна туда не просто что-то записать, а записать так, что потом, при записи из Линукса, при обновлении загрузчика, скрашится ФС и EFI не сможет с этого ESP старатнуть систему.

P.S. RAID не подразумевает, что сегодня один дейвайс отвалился, а завтра снова заработал и т.д. Умер — значит умер и нужно разбираться. Это на случай, если вы там какие-то сценарии начнёте описывать, когда эта схема с write-mostly не сработает.

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

Вот фрагмент man mdadm, переведённый ИИ:

"-W, --write-mostly

Последующие устройства, перечисленные в команде --build, --create или --add, будут отмечены как ‘write-mostly’. Это применимо только для RAID1 и означает, что драйвер ‘md’ будет избегать чтения с этих устройств, если это возможно. Это может быть полезно при зеркалировании через медленную связь.

--write-behind=

Укажите, что режим write-behind должен быть включен (применимо только для RAID1). Если указан аргумент, он установит максимальное количество ожидающих записей, допустимых. Значение по умолчанию равно 256. Для использования режима write-behind требуется битовая карта намерений записи, и write-behind выполняется только на устройствах, отмеченных как write-mostly."

Вот выдержка из старого документа
RHEL 6 LVM Administrator Guide от 2020-08-18, переведённая ИИ:

"Вы можете управлять операциями ввода-вывода на логическом томе RAID1 с помощью параметров --writemostly и --writebehind команды lvchange.

--[raid]writebehind IOCount

Задает максимальное количество ожидающих записей, которые разрешены для устройств в логическом томе RAID1, отмеченных как write-mostly.

После превышения этого значения записи становятся синхронными, что приводит к тому, что все записи на составляющие устройства завершаются перед тем, как массив сообщает о завершении записи.

Установка значения в ноль очищает предпочтение и позволяет системе выбирать значение произвольно."

В приципе, mdadm и lvm2 как более высокоуровневые командные интерфейсы, сейчас используют одни и те же возможности ядра.

Т.е. на raid1 (nvme + hdd) можно регулировать: если записи не слишком интенсивные, то коммит опрации идёт на nvme, и только потом в фоне идёт синхронизация на hdd.

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

Проблема не в записях как таковых. Если медленно пишется - может полежать в памяти, в том числе на очереди на запись и тут не важно это очередь на блочное устройство md целиком, или где-то внутри его реализации в очереди записи на более медленное устройство.

Проблема в sync, кототорый любят делать приложения когда работают с sqlite или подобным.

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

mdadm + LVM + ext4

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

ну, и бэкап на отдельном hdd (usb или nas) не помешает, на самом деле. у lvm до сих пор бывают неприятные косяки (в последний раз это было разпердоливание фс при попытке снапшота кэшированного диска).

alegz ★★★★★
()

думаю для raid1 что mdadm, что lvm одинаковы и да после геммороя с аппаратными я онли софтовые использую. (я бы lvm использовал он гламурнее удобнее)

Для raid0 mdadm был гораздо быстрее lvm (на 2011год) и лучше для ssd, ибо lvm заполнял по очереди один диск и только потом второй изнашивая ssd (не оставляя свободное место на диске) не получая профита от чтения по двум дискам.

s-warus ★★★★
()
Ответ на: комментарий от Don_Antonio

я бэкаплю (кривой самоделкой Rsync по хрону менее пары минут в сутки) онли /home здорово экономит время на моих ляпах, да музыка, вынесена из /home, а всякие конфиги из /etc символические ссылки в /home.

Версионности в гит хватает. А для личных даных и настроек софта такого пока костыля хватает.

s-warus ★★★★
()
Ответ на: комментарий от Don_Antonio

Не конструктивно. Бэкапить – это прошлвый век.

Бэкапить всё равно придётся. Как выше правильно сказали, от пожара, наводнения, скачка напряжения и вируса-шифровальщика рэйд вас не спасёт.

tiinn ★★★★★
()