LINUX.ORG.RU

Разбивка на подтома btrfs и отказоустойчивая фс

 , , , ,


0

1

Купил nvme на 500 Гб. Хочу разбить под систему на btrfs поверх luks. С btrfs никогда не работал на реальной системе, поэтому прошу подсказать. Думаю разбивать на такие разделы

1. /boot/efi 100 M
2. /boot 500M
3. swap
4. luks все остальное

Дальше поверх luks сделать btrfs, который поделить на подтома

1. /
2. /home
3. /var

Стоит выделить из директорий другие поддиректории, вроде /var, которые мне не нужны для снапшотов? Вроде загрузок в хомяке. Они только место на снапшоте будут занимать. Что вы обычно выделяете, чтобы не снапшотать лишнее?

Еще не до конца понял (не уверен, что понял правильно), как работает btrfs снапшот. Когда делаю снапшот подтома появляется новый подтом, идентичный оригинальному, но он не монтируется, а остается в холодном резерве. Вся дельта пишется на оригинальный подтом. Если нужно что-то откатить, мне нужно отмонтировать оригинальный подтом, примонтировать снапшот этого подтома и удалить оригинальный. Все правильно?

Какие опции разумно использовать для десктопа с упором в первую очередь на надежность. defaults,noatime,ssd, еще чем-то есть смысл озаботиться? Сжатие особо не нужно. Trim я так понимаю у нормальных ssd хардварные и добавлять что-то в опции монтирования не стоит, тем более в связке с luks.

Второй вопрос по поводу отказоустойчивой к перебоям с электричеством фс. Если нет возможности поставить перед устройством ибп, какая система на ssd будет более стойкой к внезапному отключению? Условия такие, что устройство периодически пишет, но в основном читает. Просто в ro загнать нельзя. Если что, это не то же самое устройство, на которое btrfs хочу поставить.

Заранее благодарю за помощь.



Последнее исправление: Ishrinn (всего исправлений: 2)

отказоустойчивая фс

btrfs поверх luks

Тут противоречие

какая система на ssd будет более стойкой к внезапному отключению?

Ext4

ya-betmen ★★★★★
()

Стоит выделить из директорий другие поддиректории, вроде /var, которые мне не нужны для снапшотов?

А они тебе точно не нужны? Тащемта, система может сломаться в нескольких случаях: прерванная установка и поврежденный /boot, что-то не так с базой данных пакетного менеджера и что-то с видеодровами.

Пакетные менеджеры, в основном, хранят свою базу в /var.

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от ya-betmen

Тут противоречие

Это у тебя тут непонимание термина «отказоустойчивость».

anonymous
()
Ответ на: комментарий от Im_not_a_robot

Резонно. Наверное, стоит оставить его в / и делать снапшоты.

Ishrinn
() автор топика

Подожди @intelfx, он btrfs пользуется, в отличие от толпы советчиков из соседнего топика.

Siborgium ★★★★★
()

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

darkenshvein ★★★★★
()
Ответ на: комментарий от darkenshvein

zfs? Я не видел примеров в мейнстримных дистрибутивах линукса, где бы применяли zfs для рабочих станций. Накатить-то можно, но будет ли смысл от использования без рейда на десктопе? Мне кажется btrfs как раз в таком случае повыгоднее.

Ishrinn
() автор топика
Ответ на: комментарий от Ishrinn

Если я правильно понял, что он (btrfs) умеет и чем хорош, конечно*

Ishrinn
() автор топика

Вынеси второй вопрос в отдельный топик.

greenman ★★★★★
()

У автора темы тоже непонимание отказоустойчивости, что ж такое-то.

anonymous
()

Забудь всё, что тебе написали выше по треду

Думаю разбивать на такие разделы

Норм.

Дальше поверх luks сделать btrfs, который поделить на подтома

Я не рекомендую хранить какие-то данные в корневом подтоме. Его невозможно переименовать, переместить или удалить, поэтому ты поимеешь большой геморрой при попытке восстановления из снапшота. Создавай подтом типа /arch, /fedora, /ubuntu или что у тебя там стоит, и все остальные либо в нём (/arch/var/tmp), либо рядом (/home). Дальше разруливай точками монтирования.

Стоит выделить из директорий другие поддиректории, вроде /var, которые мне не нужны для снапшотов?

Эээ, /var тебе нужен в снапшоте. Иначе на его восстановление ты потратишь примерно столько же сил, сколько на переустановку системы с нуля.

Вроде загрузок в хомяке. Они только место на снапшоте будут занимать. Что вы обычно выделяете, чтобы не снапшотать лишнее?

/var/tmp, /var/log можно, кэш твоего пакетного менеджера, ~/.cache.

Еще не до конца понял (не уверен, что понял правильно), как работает btrfs снапшот. Когда делаю снапшот подтома появляется новый подтом, идентичный оригинальному, но он не монтируется, а остается в холодном резерве. Вся дельта пишется на оригинальный подтом. Если нужно что-то откатить, мне нужно отмонтировать оригинальный подтом, примонтировать снапшот этого подтома и удалить оригинальный. Все правильно?

Вообще работают они слегка через зад, но общая идея похожа на то, что ты описываешь. Когда ты делаешь снапшот, то в файловой системе создаётся новый подтом, идентичный заснапшотанному, по указанному тобой пути. Что ты с ним будешь делать — второй вопрос. При восстановлении можно переместить новый подтом на место старого; можно ничего не делать, а просто сделать btrfs set-default.

Но учти, что что вложенные подтома сами собой не переместятся в новый — то есть с точки зрения усилий при откате правильнее создавать все подтома с данными рядом с основным, и монтировать их в явном виде.

Вообще, подтом в btrfs — это всего лишь такой особенный каталог, который можно примонтировать.

Какие опции разумно использовать для десктопа с упором в первую очередь на надежность

Читай документацию и смотри сам. «С упором на надёжность» — это пустая фраза, она ничего по смыслу не значит.

Впрочем, в целом могу посоветовать такие: noatime,ssd,discard=async,space_cache=v2,compress=zstd:1. Про discard=async смотри ниже, ещё в ряде случаев полезно flushoncommit (тоже смотри ниже).

Trim я так понимаю у нормальных ssd хардварные и добавлять что-то в опции монтирования не стоит, тем более в связке с luks.

Нет, абсолютно неправильно понимаешь. TRIM — это когда файловая система сообщает SSD, что она не использует такие-то блоки и они могут свободно участвовать в wear leveling. «Хардварным» TRIM не может быть по определению.

Тебе нужно включить discard на уровне LUKS (cryptsetup open ... --allow-discards) и настроить discard на уровне файловой системы (либо по таймеру, либо -o discard=async). Если SSD дешёвый и/или ты не делаешь много записей, то можно по таймеру.

Если ты записываешь на диск часто и много (суммарный объём записей между двумя срабатываниями таймера близок к свободному месту на диске), то либо уменьшай интервал таймера, либо включай discard в реальном времени через опцию монтирования (это будет слегка медленнее работать, но SSD будет дольше жить).

Второй вопрос по поводу отказоустойчивой к перебоям с электричеством фс. Если нет возможности поставить перед устройством ибп, какая система на ssd будет более стойкой к внезапному отключению? Условия такие, что устройство периодически пишет, но в основном читает. Просто в ro загнать нельзя. Если что, это не то же самое устройство, на которое btrfs хочу поставить.

Любая современная ФС (журналируемая или copy-on-write) будет устойчива к потере питания при корректно работающем железе. В зависимости от того, что конкретно ты там делаешь, с btrfs ещё могу посоветовать опцию flushoncommit, если нужна строгая транзакционная семантика всех записей на диск.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 4)

Спасибо за подробные пояснения. Еще раз уточню по порядку восстановления бекапа, т.к. это для меня самый главный вопрос и причина попробовать btrfs. Кейс обновления пакетов с рутовым подтомом.

  • Делаю снапшот рутового подтома.

  • Ставлю обновления.

  • Если что-то не работает из обновленного, демонтирую рутовый поддтом, монтирую снапшот. Рутовый могу удалять

Все так?

Ishrinn
() автор топика
Ответ на: комментарий от Ishrinn

Ты не сможешь отмонтировать корневую ФС на живой системе. Либо (если корневая ФС монтируется с дефолтным снапшотом) делаешь снимку btrfs set-default, либо (если корневая ФС монтируется через -o subvol=/path) переименовываешь исходный корень в какое-нибудь временное название и переименовываешь снапшот в корень. После этого перезагружаешься и удаляешь старый корень.

В обоих случаях тебе нужно проследить, чтобы внутри старого корневого подтома не было вложенных — потому что снимки снапшотов в btrfs нерекурсивные. Также в обоих случаях для всех манипуляций тебе придётся завести вспомогательную точку монтирования, на которую ты будешь монтировать ФС с опцией -o subvol=/, чтобы видеть всё дерево подтомов, а не только тот, который у тебя на корне.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)

отказоустойчивая фс

Это не про btrfs. Глючное поделие. Львиная часть кода китайцами написана.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.