LINUX.ORG.RU

Расширение raid массива

 , ,


0

2

Здравствуйте уважаемые. Имею домашний NAS сервер из старого железа и в нем программный raid 10 массив из четырех hdd дисков по 500Gb. Но буквально пару дней назад место закончилось и надо думать о расширении. Массив нужен с избыточностью и единственное что я смог придумать raid 1 из hdd 2Tb и связки из из четырех hdd по 500Gb объединенных в raid 0. Но что то я сомневаюсь насчет правильности данного решения. Будет ли это нормально работать или оставить эту идею и думать где же взять денег на два hdd и котроллер pci-e - sata, т.к. свободный разъем на мамке только один.


Но что то я сомневаюсь насчет правильности данного решения

Работать будет, во всяком случае.

Но нужна ли тебе отказоустойчивость в домашнем сервере? Лучше дополнительный бэкап сделать.

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

Но нужна ли тебе отказоустойчивость в домашнем сервере? Лучше дополнительный бэкап сделать.

Одно с другим никак не связано. Даже если ты будешь делать бэкапы раз в пять минут, отказоустойчивость это про другое.

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

Лучше дополнительный бэкап сделать.

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

zzplex
() автор топика
Ответ на: комментарий от mord0d

Для организации это колхоз. А если это решение использовать дома чем это чревато? Не помню где то читал, что программный raid сам по себе не очень для больших нагрузок. Нагрузки у меня конечно не большие, но и массив получается не симметричный. Обращение к массиву эпизодическое, но не исключено что я могу решить когда нибудь записать за раз весь объем. Успеют ли синхронизироваться данные.

zzplex
() автор топика

Я думаю, что raid0 это плохое решение. Вообще, любой raid, кроме простого зеркала для дома это ужасная головная боль. Говорю как человек, который держит raid6 по приколу.
К сожалению, насколько я знаю, mdadm не поддерживает миграцию из raid10 в raid1. Хотя почему так нельзя, при наличии накопителя соответствующего объёма, я не понимаю.

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

Мож избыточность имел ввиду.

Скорее всего. Но моё утверждение это не меняет. (=

У меня колхоз дома, дома можно :)

Ну не знаааю… Лучше делать сразу нормально.

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

переводить в raid5…

Как вариант. Надо только найти где купить hdd на 500Gb. Думаю, что цена за единицу объема меня не очень обрадует. Но в любом случае надо почитать про четность (честно сказать не вникал) поискать диск и подумать над этим вариантом, спасибо.

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

перестроить имеющийся в рэйд5 - +500гб добавится.

диски можно добавлять большего объема (500гб и 1тб разница в цене на уровне погрешности), потом меняя просто вылетающие диски на новые.

NiTr0 ★★★★★
()

связки из из четырех hdd по 500Gb объединенных в raid 0

Фреймворк для потери данных.

У меня у самого raid0 на btrfs из двух ssd. Бекапов для данных с этих дисков нет.

ox55ff ★★★★★
()

Вариантов много:

  • [RAID5 5x500 Гб] Добавить один 500 Гб диск, смигрировать массив с RAID10 на RAID5. Полезный объём 2 Тб.
  • [RAID1 2x2 Тб] Добавить один диск на 2 Тб, создать на нём деградированный RAID1 массив, скопировать данные со старого RAID10 массива, удалить старые диски, добавить второй 2 Тб диск в RAID1 массив. Полезный объём 2 Тб.
  • [RAID10 4x1 Тб] Деградировать старый RAID10 массив, удалить два 500 Гб диска, добавить два 1 Тб диска, собрать из них деградированный RAID10 массив, скопировать данные со старого массива, удалить оставшиеся два 500 Гб диска, добавить два 1 Тб диска, добавить их в новый RAID10 массив. Полезный объём 2 Тб.
  • [RAID10 8x500 Тб] Добавить SATA контроллер на 4 порта, добавить 4 диска по 500 Гб в существующий RAID10 массив. Полезный объём 2 Тб.

Тут вопрос в цене, типе дисков (3.5/2.5), количестве свободных корзин, количестве свободных слотов PCIe и количество полос в них, и т.п.

На дисках можно сэкономить, купив их на авито (https://www.avito.ru/brands/i93703306/).

SATA контроллер (если брать) лучше брать на Marvell или JMicron (ASMedia или Silicon Image я бы себе не взял, был отрицательный опыт). Например, ExeGate EXE-503 или Orient J585S5 – но он от требует PCIe x4 слот.

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

Из ваших вариантов на данный момент для меня пока походит только первый, ибо два диска я на данный момент себе позволить не могу, жена не поймет. А еще и контроллер надо же. Кстати насчет контроллера не подскажете ли, можно подключить к нему загрузочный диск? BIOS простой не UEFI. Просто не представляю появится ли возможность выбрать такой диск для загрузки. А слот у меня 16х свободный, так что не проблема что воткнуть.

zzplex
() автор топика

Всем спасибо. Склоняюсь к тому, что не стоит делать как решил изначально. Буду думать стоит ли делать raid5, почитав про него и смотря сколько будет стоить диск или же пока убрать из своего NAS наименее важную информацию (фильмы и мультики) на полудохлые винты и позже уже раскошелиться посерьезнее.

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

Так то чипсетный SATA контроллер обычно AHCI, поэтому в прошивке материнской платы драйвер AHCI должен быть. PCIe SATA контроллер тоже AHCI, и драйвер AHCI мог бы им управлять. Но это зависит от фантазии разработчика материнки, цепляют ли они AHCI драйвер ко всем AHCI устройствам на шине, или только к чипсетному SATA контроллеру. Это только экспериментальным путём можно понять.

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

mdadm не умеет мигрировать напрямую с RAID10 на RAID5. Сначала надо мигрировать с RAID10 на RAID0, а потом с RAID0 на RAID5.

Мигрировать RAID10 на RAID0 (это на самом деле просто удаление одной из половинок зеркала, set-A или set-B):

mdadm /dev/md0 --verbose --fail set-B
mdadm /dev/md0 --verbose --remove failed
mdadm --grow --verbose --raid-devices 2 --level 0 --bitmap internal /dev/md0

Мигрировать с RAID0 на RAID5 (здесь sdx1 и sdy1 это устройства, удалённые из массива на предыдущем шаге, sdz1 это добавляемое пятое устройство):

mdadm --zero-superblock /dev/sdx1
mdadm --zero-superblock /dev/sdy1
mdadm --zero-superblock /dev/sdz1
mdadm --grow --verbose --raid-devices 5 --level 5 --bitmap internal /dev/md0 --add /dev/sdx1 --add /dev/sdy1 --add /dev/sdz1

Можно собрать RAID5 и из 4 имеющихся в наличии дисков. Просто полезный объём увеличится всего в полтора раза. С пятью дисками полезный объём увеличится в два раза. И миграция с RAID0 на RAID5, и добавление дисков в RAID5 массив требуют рестрайпинга, это тяжёлая и длительная операция.

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

Сначала надо мигрировать с RAID10 на RAID0, а потом с RAID0 на RAID5.

RAID0 в 2 длинных операциях выглядит довольно ненадёжно. Не очень большой объём дисков (500Gb), наверное, позволит это провернуть, но их б/у-шность может подвести.

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

resync в начале операции, запасной 5-й диск для миграции RAID0->RAID5 (чтобы иметь копию на оставшихся половинках RAID10), и добавление оставшихся половинок в новый массив после завершения его ребилда снизит вероятность потери данных до нуля.

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

т.к. свободный разъем на мамке только один

Покупаешь ДВА новых БОЛЬШИХ новый диска.

Втыкаешь один в свободный разъем, заводишь его в LVM.

На него копируешь rsync’ом данные с рейда.

Диски рейда вытаскиваешь, добавляешь второй диск в LVM

Делаешь lvchange и превращаешь свой LV в mirror.

Дальше живешь в LVM и имеешь еще три слота под новые диски.

В один слот добавляешь третий диск и на него регулярно делаешь бэкап с мирроренного LV.

no-dashi-v2 ★★
()
Ответ на: комментарий от no-dashi-v2

Покупаешь ДВА новых БОЛЬШИХ новый диска. Диски рейда вытаскиваешь

Нее, не вытаскиваешь, новые диски, всего три месяца работают. А то что два новых, это я уже и так решил, надо только куда то воткнуть Sata SSD с системой, что бы еще один слот освободить. На первое время можно и в USB бокс. А LVM не хочу, мне кажется это тут лишнее.

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

Я провел эксперимент. Создал массив RAID10 на 4х дисках 500 Гб (полезный объём 1 Гб). Потом смигрировал его в RAID5 на 5ти дисках 500 Гб (в два шага, как писал выше). Рестрайпинг выполнялся 16 часов:

# dmesg -T |grep md:
[Tue Feb 20 17:44:48 2024] md: reshape of RAID array md0
[Wed Feb 21 09:04:50 2024] md: md0: reshape done.

В результате добавление одного диска увеличило полезный объём до 2 Гб:

# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Feb 20 11:06:45 2024
        Raid Level : raid5
        Array Size : 1953017952 (1862.54 GiB 1999.89 GB)
     Used Dev Size : 488254488 (465.64 GiB 499.97 GB)
      Raid Devices : 5
     Total Devices : 5
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Wed Feb 21 10:03:23 2024
             State : clean 
    Active Devices : 5
   Working Devices : 5
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 4K

Consistency Policy : bitmap

              Name : pumba:0  (local to host pumba)
              UUID : b8dfb490:600f623b:45b5abff:c231fd73
            Events : 4500

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       2       8       32        1      active sync   /dev/sdc
       5       8       64        2      active sync   /dev/sde
       4       8       48        3      active sync   /dev/sdd
       3       8       16        4      active sync   /dev/sdb

Диски вот такие (2.5", 5400rpm, не быстрые):

# for f in /dev/sd{a,b,c,d,e}; do sg_inq $f | grep 'Product'; done
 Product identification: WDC WD5000LPVX-2
 Product revision level: 1A01
 Product identification: ST9500325AS     
 Product revision level: BSM1
 Product identification: ST9500325AS     
 Product revision level: SDM1
 Product identification: WDC WD5000BEVT-8
 Product revision level: AH.1
 Product identification: ST500LT012-1DG14
 Product revision level: SDM1
iliyap ★★★★★
()
Ответ на: комментарий от anonymous

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

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

Зажиточный крестьяин)) Еще и ради эксперимента это проделать, спасибо конечно, но это лишнее. Насчет raid 5 я передумал почитав про него и про UER. Мне сами по себе вероятности не нравятся тем более что у меня по теории вероятностей было - отл. Теперь только зеркало.

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

Нее, не вытаскиваешь, новые диски, всего три месяца работают

Ну тогда воткни один большой новый диск, перенеси на него данные как я говорил выше, и подцепи три из четырех старых дисков в тот же LVM и опять же смени тип на mirror. При этом одно плечо у тебя будет целиком на новом диске, а второе раскидано на три старых. И получишь ты 1.5TB в зеркале.

А LVM не хочу, мне кажется это тут лишнее.

Ты не из LVM-хейтеров случаем?

Не использовать LVM имеет смысл только в одном случае - если ты планируешь этот диск использовать не в линуксе. Но поскольку у тебя по планам там MD, то этот единственный кейс не для тебя.

И еще очень сильно не советую связываться с массивами с чередованием (все эти вот RAID5/6 и прочие). Производительность ниже плинтуса, один геморрой. Скорость современного HDD в два раза перекрывает гигабитную сеть, не надо трахать моск.

2 больших HDD + rsync покрывают с огромным запасом всё, что может делать типичный домашний юзверь.

А если тебе жалко старых 500ГБ дисков - сунь их в какой-нибудь USB-бокс, и хрен с ними.

no-dashi-v2 ★★
()
Ответ на: комментарий от no-dashi-v2

При этом одно плечо у тебя будет целиком на новом диске, а второе раскидано на три старых. И получишь ты 1.5TB в зеркале.

А это не почти то же самое про что я писал в первом посте?

Одно плечо черыре диска в raid0 и второе один диск 2Tb

Ты не из LVM-хейтеров случаем?

Во первых с mdadm я уже разобрался и уже использую его. С LVM я конечно сталкивался, один раз систему ставил, на LVM, но мне показалось что чуть как то потормознутее все и я переделал все назад. Тут мне конечно скорости не надо, а вот с проверкой состояния разбраться придется. Во вторых, мне кажется что LVM сложнеее, а я придерживаюсь мнения, что чем проще тем надежнее.

А если тебе жалко старых 500ГБ дисков

Они вроде как бы старые, но по факту пролежали в столе запасным комплектом для сервера и являются новыми и я их использую всего три месяца, так что пусть они теперь вместе и работают.

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

но мне показалось что чуть как то потормознутее все

Лол.

Мне совершенно случайно (нет) пришлось опять потестировать производительность LVM под виртуалкой, так вот - разницы в том передаешь ли ты весь диск, раздел и том LVM в виртуалку нет. 450 тысяч IOPS, service time плавает +/- 3%.

Ну и в проде у нас все серверы на LVM, это тупо давно уже промышленный стандарт.

no-dashi-v2 ★★
()
Ответ на: комментарий от no-dashi-v2

Ну значит мне совершенно случайно в прошлый раз когда я читал про LVM показалось, что фрагментация на таком томе должна быть выше. Ну а если вы утверждаете, что все нормально со скоростью, то я спорить не буду. А насчет стандартов вы это правильно написали - промышленный. У меня дома свой стандарт: как мне удобнее так и делаю. Чтобы перейти на что то новое, я должен видеть плюсы от этого, а пока я вижу только минусы - нужно время опять читать и разбираться.

zzplex
() автор топика
Последнее исправление: zzplex (всего исправлений: 1)
Ответ на: комментарий от zzplex

Чтобы перейти на что то новое, я должен видеть плюсы от этого

Плюс первый - подучишься тому, что востребовано рынком

Плюс второй - получишь большую гибкость

Плюс третий - всякие штуки типа RAID integrity (проверка целостности)

Плюс четвертый - простота миграций и расширения

no-dashi-v2 ★★
()
Ответ на: комментарий от no-dashi-v2

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

Все же и проверка того что читаю была, исправления не было как я делал. Но благодаря вашему сообщению я исправлюсь

md/sync_action
    This can be used to monitor and control the resync/recovery process of MD. In particular, writing "check" here will cause the array to read all data block and check that they are consistent (e.g. parity is correct, or all mirror replicas are the same). Any discrepancies found are NOT corrected.

    A count of problems found will be stored in md/mismatch_count.

    Alternately, "repair" can be written which will cause the same check to be performed, but any errors will be corrected.

источник.

zzplex
() автор топика
Ответ на: комментарий от Dimez

возникновение двух ошибок чтения на двух дисках одномоментно (+- неделя) весьма маловероятно, если сервер не падал с полки. и пофиг - полный отказ, или умерший сектор, отказ это отказ.

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

Нее, не вытаскиваешь, новые диски, всего три месяца работают

накой было покупать 500-гиговые, если они по цене от террабайтников не отличаются?…

или просто дешевые refurbished попались? :)

NiTr0 ★★★★★
()