
У меня есть файловая система btrfs на диске объемом 2 ТБ, и я хочу добавить еще один диск объемом 5 ТБ в качестве резерва.
Я могу просто отформатировать новый диск с помощью btrfs и добавить устройство с помощью
btrfs device add /dev/sdX /mymountpoint
btrfs filesystem balance start -dconvert=raid1 -mconvert=raid1 /mymountpoint
В итоге я получу 2 ТБ доступного дискового пространства и все на обоих дисках. Однако я мог бы иметь больше избыточности, если бы мог использовать свободные 3 ТБ на моем 5 ТБ диске так, чтобы каждая запись дважды отправлялась на больший диск (диск 2 ТБ хранит все один раз, 5 ТБ хранит все дважды). Возможно ли это?
Я знаю о недостатках, таких как более высокая задержка, сниженная скорость и т. д.
решение1
Технически, если вы создадите два раздела по 2 ТБ каждый на большем диске, вы сможете использовать их вместе с меньшим диском (илиего раздел) как три устройства одинакового (или почти одинакового) размера.
Даже если вас устраивают недостатки, не делайте этого. Вот почему:
btrfs сначала объединяет все устройства в пул хранения, а затем дублирует фрагменты по мере создания файловых данных. RAID-1 в настоящее время определяется как «2 копии всех данных на разных устройствах». Это отличается от MD-RAID и dmraid тем, что они создают ровно n копий для n устройств. В btrfs RAID-1 на трех устройствах по 1 ТБ мы получаем 1,5 ТБ полезных данных. Поскольку каждый блок копируется только на 2 устройства, для записи заданного блока требуется только ровно 2 устройства для записи; чтение может быть выполнено только с одного.
(источник)
Так что может (и случится) так, что некоторые данные окажутся на двух разделах большего диска, но не на меньшем. Я думаю, что такая "избыточность для бедных" иногда может помочь, если большой диск выйдет из строя частично/локально. Если он выйдет из строя целиком, то данные, которые оказались на нем дважды, будут потеряны.
То, что вы хотите, можно сделать с помощью подхода "n копий для n устройств" (опять же: два раздела на большем диске являются устройствами в этом контексте). Вас может заинтересоватьRAID-массивы с LVM и MDRAID — плюсы и минусы.
Хотя на вашем месте я бы этого не делал. В этой настройке каждая операция записи задействует два раздела на одном и том же физическом устройстве. Даже если вы пишете последовательно в оба раздела, это параллельные записи, которые требуют перемещения головок вперед и назад; если только вы специально не настроите разделы так, чтобы соответствующие записи выполнялись двумя разными головками в одном и том же положении общего рычага. Может ли прошивка записывать, используя две головки одновременно? Будут ли данные всегда поступать для обоих разделов полуодновременно изначально? Не будет ли какая-либо операция чтения запланирована между соответствующими записями в два раздела? Я сомневаюсь во всем этом.
Поэтому разумно предположить, что головки будут перемещаться больше, чем в конфигурации без RAID. Это, вероятно, сократит срок службы рычага. Когда он механически выходит из строя, выходит из строя весь диск. Тогда неважно, сколько копий у вас было на нем; то, что остается, — это только меньший диск.
Вывод: возможно, ваша идея увеличивает риск такого типа неудачи, который (когда она произойдет) сделает дополнительную избыточность совершенно неактуальной.
решение2
Нет простого способа реализовать это с помощью btrfs. Но что еще важнее, это опасная конфигурация, которую не следует использовать.
Цель RAID1 — избыточность. Хранение данных дважды на одном диске не обеспечивает избыточности: если этот диск выйдет из строя, ваши данные будут потеряны.