Опыт эксплуатации Mint 18 на btrfs в raid1 конфигурации (положительно, но есть нюансы)

О том о сем
Аватара пользователя

Автор темы
slant
Сообщения: 393
Зарегистрирован: 21 июн 2017, 15:09
Решено: 5
Поблагодарили: 154 раза

Опыт эксплуатации Mint 18 на btrfs в raid1 конфигурации (положительно, но есть нюансы)

Сообщение slant » 25 окт 2017, 00:03

Итак, это будет просто нечто вроде отчета об опыте использования. Для общей информации. Думаю, будет полезно тем, раздумывает - "надо оно мне, или не очень?".

Система у меня была установлена первоначально на один винт 640гб самсунг 9-ти летней давности. Причем смарт еще до установки уже намекал, что винту пора на пенсию. Однако, на момент установки свободным был только он а решение о полном переходе еще не принято. Для эксперимента, как я посчитал - вполне нормально.
Итого, туда был поставлен Минт 18.1 на btrfs в качестве единственной и основной файловой системы. Диск был разбит на два раздела - для данных и для swap. В общем-то установка в конфигурации по умолчанию. Тут еще надо отметить, что при установке на btrfs установщик сам создает два подраздела - @, @home. В первый ставится /, второй используется под home соответственно. Преимущество такой конфигурации - свободное место они делят между собой по мере надобности.

Система вполне себе хорошо стала, оказалась обжита и быстро перешла в разряд основной. Встал вопрос о том, что держать ее на ненадежном диске уже становится черевато. К тому времени она оказалась проапгрейжена до 18.2 а ядро вообще установлено из ветки 4.10. Частично из-за KVM, частично как раз из-за btrfs. Она и в 4.4 уже имеет статус стабильной не говоря уже об 4.8, но в 4.10 кое-что оптимизировали и еще улучшили в ее работе если верить патчноутам. Хотелось иметь посвежее. В общем - стал вопрос о том, что надо либо менять диск, либо делать raid1. А лучше и то, и другое. :)

Менять диск было слегка не на что, а вот выделить второй - вполне. Это был тоже самсунг, только посвежее, и 1ТБ объемом. На нем тоже было сделано 2 раздела свап и пустой - под будущее зеркало. Далее этот раздел был добавлен к первому диску, изменен тип хранения данных, метаданных, и sys на raid1 и сделан ребаланс. (В отличии от обычного софтрейда, добавить диск мало - нужно еще вручную сконфигурировать как именно хочется его использовать. Но зато это легко делается динамически, причем на смонтированном разделе). Разный размер дисков тут совершенно не препятствие. Более того raid1 здесь работает несколько не так, как с mdadm. Напрмер - можно собрать массив из 3-ех дисков размером в 1тб каждый, и суммарный объем массива получится 1.5Тб. Т.е. использоваться будет все наличное пространство. А можно собрать и набор из одного 2ТБ и 2х 1Т дисков. И получить 2ТБ зеркало в сумме. И это все еще будет именно raid1.

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

Казалось бы - что тут такого - грузи live да восстанавливай. А вот не тут-то было. Здесь вылез мой второй косяк. И некторая особенность btrfs при работе с RAID1. Во первых - загрузится с разрушеным массивом так просто вы не сможете. Потому что массив окажется в режиме RO, либо система вообще не сможет смонтировать массив (нужна опция degraded). Кстати, пока он в этом режиме - второй диск к нему добавить тоже не получится. Он же RO - значит никаких изменений. Вообще. Чтобы включить запись в состоянии degraded - нужно монтировать с соответствующей опцией. Т.е. менять fstab. А не получится. Т.к. RO. Т.е. нужно в любом случае загрузится с live, и там уже примонтировать вручную. А вот здесь всплывает второй подводный камень, на который я и налетел с размаху. Итак: У ВАС РОВНО ОДНА ПОПЫТКА ЗАПУСКА МАССИВА В РЕЖИМЕ DEGRADED C ВОЗМОЖНОСТЬЮ ЗАПИСИ. Если в отмонтируете раздел, который был смонтирован с возможностью записи не добавив второй диск - больше вы его смонтировать в режиме rw не сможете. А значит - не сможете и добавить новый диск, т.к. эта операция выполняется ТОЛЬКО на смонтированном разделе, причем смонтирован он должен быть в режиме RW. Вот такие забавные пироги. А я лично обнаружил этот нюанс когда вместо добавления нового диска, попытался восстановить загрузчик и перегрузился потом... :)

В прочем, не все так страшно. Во первых - все это делается для того, чтобы не в коем случае не потерять данные. Т.е. если не пытаться делать что-то непотребное - потерять данные риска нет. Вообще. Они всегда доступны для чтения. Даже если диск уже ушел в вечное RO. Так что - ставим новый диск, переносим содержимое на него через rsync, пересоздаем раздел который ушел в вечное RO и добавляем его обратно. Дольше, зато надежно. Во вторых - есть неофициальный патч ядра, для того чтобы можно было смонтировать degraded раздел более одного раза. Но теоретически он может вызвать частичную потерю данных при регулярной работе - потому не стоит такое ядро использовать постоянно. Кроме того - авторы сами считают такую особенность не самой лучше стороной FS и собираются это дело поменять (нельзя сказать исправить, т.к. не ошибка, а так оно и должно работать в рамках ее текущей логики - упор в разработке делался на сохранность данных.)

Итого: Я гонял систему на btrfs весьма интенсивно, сначала в single потом raid1. Бывали проблемы с питанием - машина вырубалась совершенно внезапно. Живем наблюдал умирание диска, сыпалась поверхность, так что понаблюдал как btrfs с этим справляется. И надо сказать - очень неплохо. Когда сыпется диск в классическом soft-raid часто это вызывает дикие тормоза. Даже завершить работу системы корректно уже бывает проблемой. На btrfs - заметно, но система остается вполне рабочей. За все это время FS не дала ни единого повода переживать за сохранность данных. Да, есть объективные неудобства, в случае выхода одного диска из строя. Но и только. С основной задачей (сохранность данных) она справляется не хуже классического софт-рейда. Убедился лично. А вот гибкость у такого варианта по сравнению с классическим софт-рейдом значительно выше.

Вернуться в «Болталка: Оффтоп, разбор полетов»