Страница 1 из 1
Объединение дисков
Добавлено: 19 дек 2022, 17:24
rogoznik
Есть у меня 2 ssd: nvme1 и nvme2.
Оба на 1ТБ и примерно одинаковые по характеристикам.
Единственное один уже некоторое время используется, второй новый.
Хочу их объединить в единое пространство и установить систему.
Вижу 2 способа:
1. LVM
2. Btrfs
Склоняюсь к btrfs. Вот только пока не знаю как сделать. Знаю что есть как минимум 2 способа:
1. Присоединить один к другому btrfs-vol -a
(тут вроде как низкая скорость чтения/записи)
2. Объединить в raid0 mkfs.btrfs -m raid0
(тут вроде как даже повышается скорость чтения/записи)
Хотелось бы услышать аргументы за тот или иной вариант с примерами как лучше объединить и потом поставить на это систему.
Система будет Manjaro
Объединение дисков
Добавлено: 19 дек 2022, 17:27
WWolf
rogoznik, вопрос зачем? ладно бы зеркало, а расширить... проще уже линковать, имхо...
Объединение дисков
Добавлено: 19 дек 2022, 17:28
rogoznik
WWolf, в том то и дело что не хочу так - неудобно
Объединение дисков
Добавлено: 19 дек 2022, 19:19
slant
rogoznik писал(а): ↑19 дек 2022, 17:24
1. Присоединить один к другому btrfs-vol -a(тут вроде как низкая скорость чтения/записи)
После этого нужно сделать balance с указанием профилей raid0 для data и meatadata, и желательно - профиль raid1 для sys. Тогда это будет именно raid0 а не просто аналог jbod. sys желательно в raid1 чтобы иметь резервирование самых критических данных, к ним очень редко обращаются, они нужны в основном чтобы собрать и смонтировать FS, и все.
Понижения скорости не будет.
rogoznik писал(а): ↑19 дек 2022, 17:24
2. Объединить в raid0 mkfs.btrfs -m raid0(тут вроде как даже повышается скорость чтения/записи)
Это пересоздание раздела с нуля, но преимуществ по скорости работы оно не даст, если в предыдущем случае balance был сделан.
И вообще - нету уже давно btrfs-vol. Есть просто команда btrfs ... - все через нее.
Да и mkfs.btrfs надо вызывать не так, чтобы получился именно raid - там надо указать профили для data и metadata отдельными ключами. Иначе тоже микс получится.
Преимущество btrfs работы с массивами как раз в том, что вид рейда задается профилями. И может быть даже смешанным - т.е. данные в raid0 а метаданные - в raid1, например. И перестраивать их через balance можно прямо на лету, если места хватает (т.е. если есть два диска по 1tb и данных на них менее 1tb, можно из raid0 сделать raid1 одной командой. Как и обратно.)
Ну и если когда-то появится третий диск - его можно так же легко добавить. И потом опять запустить balance. Как и при исключении диска. И что мне нравится в массивах btrfs - все эти операции совершенно прозрачны для системы. Никуда ничего писать в конфигах не надо. В fstab тоже ничего менять не надо. UUID диска не меняется, части массива на устройствах находятся полностью автоматически во время загрузки в процессе монтирования.
Т.е. можно сначала спокойно поставить систему на один диск, потом добавить второй и сделать balance с нужными профилями - и все. А вот устанавливаться на btrfs создавая для нее массив из устройств установщик минта не умеет. Можно скормить существующую btrfs не форматируя, но иногда он все равно тупит.
Объединение дисков
Добавлено: 19 дек 2022, 19:21
slant
Только ради бога - не клади туда swap файл. Хоть оно теперь и официально поддерживается, но ценой отключения части фич и возможностей. Значительной части. И массивы - одна из них. swap файл может быть только там, где профиль single.
UPD - забыл. Перед установкой на btrfs, чтобы не было потом мучительно больно, крайне желательно прогнать на машине тест памяти и убедиться, что с ней все ОК. От битого диска и/или контроллера, шлейфа и т.д. эта fs мало страдает (и сразу дает знать что проблемы есть - контрольные суммы же), а вот если будет битая память во время создания - потом проблем не оберешься, из-за не сходящихся контрольных сумм, как минимум.
Объединение дисков
Добавлено: 19 дек 2022, 19:30
rogoznik
slant писал(а): ↑19 дек 2022, 19:21
не клади туда swap файл
Об этом я помню - ты где-то писал об этом.
slant писал(а): ↑19 дек 2022, 19:19
установщик минта не умеет
Ставить буду Manjaro, но есть вероятность что и он не умеет.
Можешь расписать порядок действий. Использующийся диск могу форматнуть в btrfs(он сейчас в ext4).
1. На диск с btrfs ставлю систему.
2. Присоединяю второй диск. Как это правильно сделать?
slant писал(а): ↑19 дек 2022, 19:19
сделать balance с указанием профилей raid0 для data и meatadata, и желательно - профиль raid1 для sys. Тогда это будет именно raid0 а не просто аналог jbod. sys желательно в raid1
Так понимаю это шаг 3. Как это правильно сделать?
Объединение дисков
Добавлено: 19 дек 2022, 19:45
slant
Чисто по аргументам, если сравнивать два варианта:
LVM: + Можно использовать любые FS поверх.
- Не гибко. Сама по себе она манипулирует только блочными устройствами, а менять размеры FS поверх нее - это надо чтобы сама FS умела. Большинство умеет только offline если вообще умеет. Чтобы получить raid - это еще один слой абстракции, иначе будет просто jbod (объединенное последовательно пространство без выигрыша в скорости).
BTRFS: + Очень гибко. Меняем размеры FS, добавляем/убираем устройства, изменяем тип raid - и все это прямо на лету, из работающей системы. Прозрачно. И весьма просто - практически нет риска запутаться и напортачить. (В lvm изменение размера существующего logical volume с существующей fs поверх - уже не такая тривиальная задача можно и накосячить до потери данных на этой FS).
- Это именно fs. Т.е. не блочными устройствами мы манипулируем, и как в lvm полноценный раздел для другой FS создать не можем.
Объединение дисков
Добавлено: 19 дек 2022, 20:01
slant
rogoznik писал(а): ↑19 дек 2022, 19:30
Можешь расписать порядок действий. Использующийся диск могу форматнуть в btrfs(он сейчас в ext4).
1. На диск с btrfs ставлю систему.
2. Присоединяю второй диск. Как это правильно сделать?
1. Ставишь систему - как обычно но на btrfs. Разбивка efi, swap (половина размера - в твоем случае лучше иметь два свапа половинного размера, по одному на диск), остальное - корень. Далее с уже установленной системы:
2. Бьешь второй диск аналогично. Свап на разделе создаешь и подключаешь в fstab уже сам. Установка дублирующего загрузчика во второй efi - по желанию - т.к. будет не raid1 - смысла не много.
3. btrfs device add </dev/sdb3> /
sdb3 - это типа раздел, где будет вторая часть FS. Может быть пустым, или если ругается что там что-то есть - добавлять нужно через ключ -f. А / на конце - это указание к какой системе подключать. Все операции выполняются online, и соответственно - у тебя она будет смонтирована как корневая - это и указывается.
4. btrfs balance start -draid0 -mraid0 -f /
(без -f может ругаться что данные станут хранится менее надежно, т.к. по умолчанию у тебя будет raid1 из метаданных)
5. btrfs balance start -sraid1 -f /
(sys без -f вообще не дает менять никак - для страховки. Но тебе именно надо).
И все. Никаких конфигов, никаких других настроек. Никаких перезагрузок. Оно уже работает.

Объединение дисков
Добавлено: 19 дек 2022, 20:08
slant
Опять забыл - бить диски строго одинаково не нужно. btrfs очень демократически относится к устройствам не совпадающим по размеру. Сама все подгонит как надо, динамически.
Объединение дисков
Добавлено: 19 дек 2022, 20:19
rogoznik
slant писал(а): ↑19 дек 2022, 20:01
5. btrfs balance start -sraid1 -f /
(sys без -f вообще не дает менять никак - для страховки. Но тебе именно надо).
Применяем, вроде к корню, но ты пишешь про /sys. Так и должно быть?
Объединение дисков
Добавлено: 19 дек 2022, 20:38
slant
Не /sys - раздел на диске.
sys - это один из видов блоков данных на btrfs. Есть data, metadata, и sys. Каждому из этих видов можно назначить отдельный профиль - single, dup, raid0, raid1, и т.д.
data - основная часть пользовательских данных - тела файлов.
metadata - структура, каталоги, подразделы, и очень маленькие файлы (размером менее кластера на диске), могут быть вписаны прямо туда, без отделения.
sys - системная информация о устройствах и частях самой FS. Очень маленький блок. Но потеря или даже легкое повреждение sys скорее всего не даст собрать массив. (Если вся FS на одном разделе - значение sys несколько снижается - не надо другие части искать). Потому крайне желательно иметь две копии если имеем дело с массивом. Даже нулевым. А повреждение metadata - тоже не сахар, но не смертельно в большинстве случаев - да и здоровые эти блоки. Несколько гиг на террабайтном разделе - запросто.
Объединение дисков
Добавлено: 19 дек 2022, 20:43
rogoznik
slant писал(а): ↑19 дек 2022, 20:38
sys - это один из видов блоков данных на btrfs. Есть data, metadata, и sys
Понял. Ключ
-sraid1
как раз и говорит что надо на блок sys сделать raid1
Объединение дисков
Добавлено: 19 дек 2022, 20:44
rogoznik
В выходные займусь
Объединение дисков
Добавлено: 24 дек 2022, 15:56
rogoznik
23.12 вечером все провернул
Правда был один нюанс
slant писал(а): ↑19 дек 2022, 20:01
4. btrfs balance start -draid0 -mraid0 -f /
5. btrfs balance start -sraid1 -f /
Эти две команды в таком виде не работают
Ошибка что неизвестный аргумент
raid0
и
raid1
соответственно
Поискав в сети и почитав документацию пришел к выводу что эти команды должны выглядеть вот так
Код: Выделить всё
4. btrfs balance start -dconvert=raid0 -mconvert=raid0 -f /
5. btrfs balance start -sconvert=raid1 -f /
Объединение дисков
Добавлено: 24 дек 2022, 17:05
slant
Правильно. Это я по памяти писал, напутал с синтаксисом.