... Все без исключения конфигурации RAID требуют одинаковых дисков или разделов на дисках одинакового размера. ..
Вот как раз в случае с btrfs - это не так.
Она поддерживает любые уровни на любых размерах дисков. Ограничение только на "минимальное количество дисков". И то, гораздо мягче чем на физических рейдах.
Но, как отметил
Pilot6: ".. там несколько хитрее .."
.. не повезет что файл окажется на сбойнувшем диске и кирдык - если нет букапа - то нет уже и этого файла.
Ладно бы если только "файл окажется на сбойнувшем диске". Проблема в том, что если
какая-то его часть окажется на сдохнувшем диске - всему файлу хана.
А значить сбойнувшая 500-ка в 5 Tb массиве может убить от нескольких килобайт до всего массива.. Целиком на усмотрение удачи.
В общем, остановился на btrfs (данные - RAID5, метаданные - RAID1).
Методом экспериментов с виртуальными машинами выяснил принцип его работы.
Работает это так:
1. Пока есть место на 3х дисках (любых) новые файлы пишутся на 3 диска согласно механизму RAID5 (на 2 диска сами данные, на третий диск - контроль четности). Соответственно при чтение получаем чтение с 2х дисков как RAID0.. При вылете одного из дисков, данные прекрасно восстанавливаются по данным контроля четности.
2. Когда нет возможности писать на 3 диска (свободное место осталось только на двух) - система пишет на 2 диска (на первый данные, на второй контроль четности).
В этом режиме на чтение прироста скорости нет. Но при выходе из строя одного из дисков (на которых есть части файла) файл так-же прекрасно восстанавливается.
3. Печальный. Место осталось только на одном диске. В этом случае на этот диск пишутся и данные и контроль четности. Нет прироста на чтение, нет защиты от выхода из строя конкретно этого диска.В любой момент файлы можно перетасовать командой балансировки, и если ситуация изменилась - файлы займут лучшее положение на дисках.
Вывод:
1. Нужно стараться не допускать ситуации когда свободное место остается меньше чем на трех дисках массива.
Даже если это 1 Тб и 10х80 Gb...

2. Если массив периодически заполняется "под завязку" - надо ставить балансировку в cron.