У меня есть существующая файловая система BTRFS, состоящая из одного диска емкостью 500 ГБ, и я только что купил диск объемом 2 ТБ, чтобы увеличить емкость своего домашнего сервера, и я хочу добавить новый диск в существующую файловую систему. Из того, что я прочитал, кажется, что ни одна установка BTRFS не может обрабатывать диск разных размеров без потери разницы в размере между большим и меньшим диском, но я новичок в BTRFS и, возможно, что-то пропустил, так что есть ли настройки что может позволить мне объединить два диска в файловой системе, не теряя места?
14
Ответы:
Btrfs может использовать разные уровни рейда для данных и метаданных:
по умолчанию (даже для одного диска) raid1 для метаданных (каталогов и т. д.) и raid0 для данных.
Если вы не изменили это, то, скорее всего, у вас не возникнет проблем с добавлением второго диска и выполнением повторного баланса. потому что только метаданные будут скопированы на оба диска (вы можете увидеть размер метаданных с помощью
btrfs filesystem df /
). Просто имейте в виду, что если один из ваших дисков выходит из строя, вы теряете данные.так как диск объемом 2 ТБ оооочень много больше, чем 500 г, возможно, он даст вам лучшие шансы, если вы добавите новый, а затем удалите старый (шансы отказа одного конкретного диска намного меньше, чем шансы любого из дисков. неудачу).
если вы планируете использовать массив raid позже (с дисками большего размера), вам может потребоваться заново создать файловую систему на новом диске с raid1 для данных и метаданных, а затем скопировать все заново. потом, когда у вас будет больше денег, купите второй диск на 2 ТБ.
PS: использование raid1 на отдельном диске означает, что данные будут храниться в двух местах на этом одном диске (для защиты от повреждения) и уменьшат пространство для хранения (это действительно хорошая идея для метаданных).
pss: серьезно, не поддавайтесь искушению не использовать raid1 для метаданных. psss: есть очень хороший шанс, что btrfs получит возможность динамического изменения уровней рейда.
источник
Это зависит от того, какой профиль вы используете для блоков данных файловой системы Btrfs с несколькими устройствами.
При использовании RAID0 (по умолчанию для блоков данных) каждый диск может быть заполнен только до емкости самого маленького диска в массиве.
Когда вы используете «единый» профиль для блоков данных, каждый диск будет заполнен до его полной емкости. например
mkfs.btrfs -d single /dev/sda /dev/sdb
У меня есть файловый сервер с 2 ТБ и 3 ТБ диска. Он загружает Ubuntu 12.10 с флешки. Сначала я создал файловую систему Btrfs без
-d single
опции:В результате я смог хранить только около 4 ТБ (3,45 двоичных файлов ТБ).
Обратите внимание
used 1.82TB
на диск объемом 3 ТБ.Затем я использовал команду «balance» для преобразования блоков данных из RAID0 в «одиночный» профиль:
Балансирование данных 4 ТБ заняло очень много времени (около 30 часов). Но после его завершения я мог использовать полные 5 ТБ (4,36 двоичного файла ТБ файла).
источник
Я использовал несколько устройств с btrfs в Ubuntu, и он работал просто отлично. Имейте в виду, что btrfs фактически не реализует стандартные уровни RAID. Он реализует дополнительные чередование и зеркалирование, но не настоящий RAID.
источник
В btrfs можно комбинировать диски разных размеров.
Но в настоящее время btrfs не очень хорошо обрабатывает ENOSPC (на устройстве не осталось места).
Например, я установил 3 диска в массив RAID0 (чередующийся). 1x500 ГБ, 1x250 ГБ, 1x160 ГБ.
Вы бы предположили, что у вас будет дисковое пространство между 800-900 ГБ.
Вот что
df -h
показывает:/ dev / sdf 848G 615G 234G 73% / media / btrfs
Но я не могу хранить больше данных в массиве. (Места не осталось)
btrfs filesystem df /media/btrfs
показывает мне это:Данные: всего = 612,51 ГБ, используется = 612,51 ГБ
Метаданные: всего = 1,62 ГБ, используется = 990,73 МБ
Система: всего = 12,00 МБ, используется = 48,00 КБ
Даже ребалансировка не помогла.
В списке рассылки я видел такую фразу:
размер наименьшего диска * количество дисков в массиве
(хотя у меня есть еще немного места: 612 ГБ вместо 160 ГБ * 3 = 480 ГБ)
Таким образом, в текущем состоянии разработки есть вероятность, что вы не сможете использовать все пространство, которое у вас есть, даже если btrfs поддерживает разные размеры в одном массиве.
Я использую Ubuntu 10.10 с ядром 2.6.35-22.
источник
обновление: ответ ниже был написан до выпуска Linux 3.0. Linux 3.0 включает квази-циклический патч.
Когда вы выполняете зеркалирование или чередование данных, второе зеркальное копирование или чередование чередования должно быть выделено на другом устройстве со свободным местом. BTRFS распределяет порции по устройствам циклически, что может привести к потере места, если у вас есть устройства разных размеров.
В конвейере есть квази-циклический патч, чтобы улучшить это. Конечно, все равно невозможно соединить все блоки на разных устройствах, если у вас есть диск объемом 500 ГБ и 2 ТБ. Патч предназначен больше для ситуаций, таких как 1 x 1 ТБ + 2 x 500 ГБ, где каждый маленький диск должен предпочитать зеркальное копирование / чередование с большим диском, а не с другим маленьким диском.
В вашей ситуации я бы просто использовал «одиночный» режим для ваших данных (
mkfs.btrfs -d single
). В этом режиме чанки не сопряжены, поэтому я думаю, что не будет проблем с устройствами разных размеров. Я не проверял это все же.источник
Эта проблема относится только к настройкам btrfs-raid1 со страницы Gotchas :
источник