Итак, попробую объяснить, что я хочу и зачем мне это нужно. Давно планировал собрать себе RAID вместо (точнее, на основе и в дополнение к) сборной солянки из накопителей. Естественным образом выбор пал на RAID 5. Однако меня всё равно смущали определённые моменты:
-
Несложно представить ситуацию, когда либо нет возможности подключить все диски, либо из живых/доступных вообще только один. Не хотелось бы ограничивать себя необходимостью подключать как минимум (n-1) винтов, чтобы прочитать данные. В идеале важная информация должна дублироваться на всех ЖД, чтобы для получения доступа к ней было достаточно примонтировать один.
-
И наоборот: неплохо было бы не тратить лишнее пространство на избыточные копии неважных данных. Их можно и размазать по всем дискам для увеличения производительнотси.
Уже рассматривал вариант просто отформатировать диски отедльно и в полуавтоматическом режиме раскидывать данные куда надо с нужным количеством копий, а потом склеивать через mergerfs, но такое было бы слишком неудобно, поэтому на от него я отказался.
Скорее всего, всё равно придётся использовать ZFS (в т. ч. ради контроля целостности), поэтому решил подумать, возможно ли там сделать сабж. Пришло в голову такое:
-
На каждом диске создать по 2 (или 3, если решу к RAID{1, 5} добавить ещё RAID 0) логических тома с thin provisioning (sparse volumes).
-
Первые тома на каждом диске объеденить в один тип массива, вторые — в другой и т. д.
-
Получившиеся ФС монтировать отдельно (т. е.
/mnt/raid1
,/mnt/raidz
, …) и опционально объединять через mergerfs.
Также нужна возможность пополнять хранилище подкроватного датацентра новыми винтами с сохранением существующих ФС.
Собственно, вопрос: насколько такая безумная затея осуществима в реальности? Подойдёт ли для этого ZFS? Получится ли при этом иметь нормальную производительность?