JBOD: Как объединить диски Raid1 разной емкости? Btrfs, ZFS?

JBOD: Как объединить диски Raid1 разной емкости? Btrfs, ZFS?

У меня есть выбор жестких дисков емкостью:

1 TB
500 GB
320 GB
250 GB

Я хотел бы сделать Raid1 из них, в том смысле, что копия любых данных всегда будет на двух дисках из четырех, которые у меня есть. Проблема в том, что все диски имеют разную емкость. Раньше я использовал обычный Raid1 mdadm 2x 2TB, Btrfs с 2x 2TB после миграции с mdadm. Я не против снова использовать mdadm, или Btrfs, или ZFS, хотя я ничего не знаю об этом.

Какая файловая система или утилита подойдет мне лучше всего и будет соответствовать следующим критериям:

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

Что мне использовать? Я чувствую, что Btrfs Raid1 справится с этим и сохранит ровно две копии каждого файла на всех четырех жестких дисках, но я не уверен. У меня Linux на компьютере AMD64 с ядром 5.10.

Любые советы приветствуются.

ПРАВКА - РЕШЕНИЕ!

Спасибо большое за все ваши ответы! Поэтому я приступил к настройке Btrfs Raid1. Это был трудоемкий процесс, но очень безболезненный, потому что я уже знаком с Btrfs и использую его ежедневно. Я посчитал, что не потеряю никакого физического пространства с Raid1, при этом сохранив коэффициент избыточности 2. Я использовал этот калькулятор:https://carfax.org.uk/btrfs-usage/

Размеры моего устройства:

931.51 GiB
465.76 GiB
298.09 GiB
232.89 GiB

Total space for files in Raid1 mode: 963 GiB (all space used)
Total space for files in Raid5 mode: 995 GiB (466 GiB unusable on biggest drive)

С Raid1 у меня теперь 719,5 GiB данных сохранено и 241,6 GiB свободно, в общей сложности 961,1 GiB, что соответствует тому, что сказал калькулятор. И я могу добавлять/удалять диски позже по желанию. Удивительно.

Я склоняюсь к Raid5, потому что он дает теоретический прирост скорости чтения в 4 раза, в то время как Raid1 дает 2 раза. Но я слышал, что он немного экспериментальный на данный момент и не рекомендуется для ежедневного использования, так ли это? Каково его состояние на ядре 5.10, кто-нибудь использует его и может поделиться своим опытом?

После создания массива, добавления всех дисков по одному и переноса на него всех данных (у меня есть резервные копии), я выполнил полную очистку, и все в порядке:

$ sudo btrfs scrub start -Bd /home

Scrub device /dev/sda (id 1) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         2:38:51
Total to scrub:   724.03GiB
Rate:             77.53MiB/s
Error summary:    no errors found

Scrub device /dev/sdd (id 2) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         1:52:39
Total to scrub:   374.03GiB
Rate:             56.57MiB/s
Error summary:    no errors found

Scrub device /dev/sdc (id 3) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:48:06
Total to scrub:   207.00GiB
Rate:             73.09MiB/s
Error summary:    no errors found

Scrub device /dev/sdb (id 4) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:30:00
Total to scrub:   143.00GiB
Rate:             80.89MiB/s
Error summary:    no errors found

Очень счастлив!

EDIT - КОММЕНТАРИИ ДЛЯ @Marcus Müller:

«Замечание: вы уверены, что вам это нужно? 320 ГБ и 250 ГБ — это, вероятно, не очень новые диски (...)»

Вы совершенно правы, это очень старые диски! Я снял свои текущие 2x 2TB Seagate Barracuda Compute, которые у меня были на Btrfs Raid1 последние несколько лет, чтобы поместить эти случайные 4x старых диска. Barracuda будут на моем сервере, которому нужна полная надежность, у меня есть 2x SSD 250GB для / там (Ext4 mdadm) и 2x HDD TB для /home и /var (Btrfs Raid1) и с ECC RAM. Еще два Barracuda присоединятся к первым двум для режима Btrfs Raid1 или, возможно, Raid10 или Raid5.

4 старых диска теперь стоят у меня на рабочем столе. Они состоят из:

Western Digital Blue Mobile, WDC WD10JPVX-60JC3T0
[1.00 TB, 4K sectors, SATA 3.0, 6.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2496

Toshiba 2.5" HDD MK..65GSX, TOSHIBA MK5065GSX
[500 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2519

Seagate Momentus Thin, ST320LT007-9ZV142
[320 GB, 4K sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 2.5"]
Power_On_Hours 5152

Seagate Barracuda 7200.12,ST3250318AS
[250 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 3.5"]
Power_On_Hours 6591

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

решение1

Я бы просто создал один физический том LVM на каждом из этих дисков:

pvcreate /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

затем создайте группу томов из них:

vgcreate myvolumegroup /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

Наконец, создайте логический том, у которого каждый блок имеет одно зеркало:

lvcreate --mirrors 1 -l100%FREE  -n myvolume myvolumegroup

Поздравляем! Теперь у вас есть блочное устройство, которое вы можете использовать слюбойжелаемая файловая система, например btrfs или XFS:

mkfs.xfs /dev/myvolumegroup/myvolume
mount /dev/myvolumegroup/myvolume /mnt

должно просто работать.


Замечания: выконечноВам это нужно? Диски емкостью 320 ГБ и 250 ГБ, вероятно, не очень новые, и вы получите только (160+125) ГБ = 285 ГБ дополнительного хранилища, включив сюда эти потенциально очень старые диски.

Использование старых дисков немного противоречит причине, по которой вы хотели бы RAID1 для начала: Доступность данных. Также рассмотрите возможность использования RAID5 вместо этого ( man lvmraidможет помочь вам с этим).

решение2

Используйте btrfs, потому что, в отличие от ZFS, он может эффективно работать с дисками разных размеров. В итоге вы получите примерно общую емкость всех дисков, разделенную на два (с 2 копиями для избыточности). Примерно 1 ТБ. Не считая прозрачного сжатия.

ZFS просто создаст vdev с емкостьюнаименьшийустройство - но с 4 дисками вы бы сделали два зеркальных vdev. например, зеркало-1 vdev с 1 ТБ и 500 ГБ и зеркало-2 vdev с 320 ГБ и 250 ГБ. Чтобы минимизировать неиспользуемое пространство, вы можете разбить диски 1 ТБ и 320 ГБ так, чтобы у них был раздел 500 ГБ и раздел 250 ГБ, чтобы они соответствовали их зеркальным дискам. Это даст пулу общую емкость 750 ГБ (в конфигурации типа RAID1+0) до сжатия. Оставшееся пространство (500 ГБ и 70 ГБ) на этих дисках можно использовать для чего-то другого, например, для вещей, которые вам не нужны, потому что они загружены и «резервированы в Интернете».

Если вы можете себе это позволить, я рекомендую заменить диск на 250 ГБ на другой диск на 1 ТБ. Это было бы здорово для zfs и совсем неплохо для btrfs, так как это увеличило бы емкость примерно до 1,3 ТБ для любого из них, до прозрачного сжатия. С гораздо меньшим "потерянным" пространством.

Не используйте LVM или mdadm для создания RAID-1/зеркалирования, btrfs может сделать это сама, и это сведет на нет большую часть смысла использования файловой системы с коррекцией ошибок, такой как btrfs.

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

Тыможетиспользуйте программный или аппаратный raid под ZFS или btrfs, если хотите, но а) это не нужно, и б) это не очень хорошая идея, на самом деле, это ужасная идея. Это больше работы и сложнее в настройке, удаляет важную функцию и не дает никаких компенсирующих преимуществ.

Если вы хотите использовать LVM или mdadm, используйте ext4(или, что еще лучше, xfs) поверх них.

Кстати, я все еще не думаю, что стоит доверять btrfs для RAID-5/6, но она абсолютно нормально подходит для зеркал типа RAID-1 или RAID-10.

Связанный контент