LINUX.ORG.RU

Свершилось: поломалась btrfs на ноуте

 ,


4

7

Дано: ноут Thinkpad с Core i5 и SSD на 256 Гб. Arch, ядро последнее ванильное арчевское, что-то типа 6.2.3 Около полугода (как выдали ноут на работе) установлен Arch на btrfs, dm-crypt, два раздела btrfs (/ и /home) с subvolumes, сжатием, снапшотами (snapper).

Сегодня в какой-то момент получил сообщение, что нет места на файловой системе. du показывает 50 Гб свободного места. Файлы можно удалять, удалил на несколько гигов. Но создавать или модифицировать файлы невозможно, с той же ошибкой, что не хватает места.

Удалил все снэпшоты снэппер, безрезультатно.

Попытался загрузиться в rescue режим, запустил btrfsck на /home и /

На /home отработал без ошибок, на / - миллиард незаканчивающихся ошибок…

Т.к. у меня есть полная копия на десктопе, а также бэкапы, слил последние изменения из /home, буду переустанавливать.

Но осадочек остался, хотя Arch и btrfs пользуюсь уже лет 15. Правда, раньше не пользовался снэпшотами (за исключением того, что их использует докер).

Не знаю зачем пишу, знаю, что в меня полетят помидоры за Arch и btrfs. Просто предупреждение, наверное.

Добавляешь временное устройство (хоть через образ в /tmp), удаляешь файлы, делаешь btrfs balance -dusage=10, выкидываешь временное устройство.

На /home отработал без ошибок, на / - миллиард незаканчивающихся ошибок…

С этого места поподробнее

intelfx ★★★★★
()

А это не баг, это фича такая, дада. Не ты первый, не ты последний. Все почему то скромно умалчивают что btrfs — «обслуживаемая» ФС, и для шелковистости волос нужно гонять баланс и ещё какие то танцы выполнять по расписанию.

У всех всё прекрасно пока она полупустая, а потом ВНЕЗАПНО ФС превращается в тыкву, и требует плясок в виде временного её растягивания на куда нибудь типа флешки чтобы она тупо позволила тебе удалить ненужное, и потом плясок с балансом. И не факт что она от этого совсем не развалится.

И вот это «тебе нужно что либо удалить, чтобы появилось свободное место, но у тебя нет свободного места, чтобы что либо удалить» это не баг, это фича такая, я просто почему то её не понимаю, вот хоть убей меня.

Да, сейчас набигут, натыкают фейспалмов и пальцев вниз, и расскажут мне как я должен свою ФС юзать, типа «а ты под завязку не забивай», «а ты следи», «нет места чтобы удалить — это потому что COW, а COW это круто» и т.п. А я им всем отвечу — вам нравится? Вы и кушайте. А я накушался и останусь на LVM2+ext4. С этой связкой по крайней мере внезапных нежданчиков нет, а COW со снапшотами есть, как и динамическое управление томами.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от Werenter

А судя по отзывам это панацея какая то, писаная торба с которой все носятся, и что удивительно её нынче во всякие NAS пихают типа Asustorов и прочих. Значит считают её достаточно mature. Надеюсь эти NAS её хотя бы обслуживают как то по расписанию, а не полагаются на то что юзер оборудование заменит раньше чем у него массив окуклится.

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

Если все дело в требовании периодического обслуживания, почему это обслуживание не забито в планировщике по расписанию во всех дистрибутивах, где используется бтрфс?

javascript
()
Последнее исправление: javascript (всего исправлений: 1)
Ответ на: комментарий от Jameson

Дичь полная. Нет в btrfs проблем с невозможностью удалить файлы, если мало места на разделе. Да и необходимости регулярно гонять balance тоже нет. В большинстве случаев падения системы причиной является внезапный ребут без сохранения данных, или запуск пользователем btrfs check - - force без необходимости.

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

причиной является внезапный ребут без сохранения данных

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

Я вот тогда еще недоумевал, потому как типичные журналируемые ext4 любой хард резет переживают без проблем.

javascript
()
Последнее исправление: javascript (всего исправлений: 1)
Ответ на: комментарий от Werenter

И btrfs, если контроллер нормальный - см мануал btrfs по этому вопросу. Но вообще, если рассматривать этот аспект, то тут нельзя не согласиться, ext4 действительно выигрывает - умеет работать в случаях багового контроллера, где btrfs не может.

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

Вот и я не знаю почему. Задал этот вопрос разработчикам «своего» дистрибутива с btrfs «по умолчанию», получил ответ «А зачем? УВВР». Пожал плечами и продолжил её не использовать.

Вангую будущее массовое превращение хранилищ на btrfs в тыквы, по мере заполнения их данными и накопления лет в эксплуатации... Но кто я такой, я не разработчик, не эксплуатирую «промышленные» хранилища с BTRFS. Думаю там либо таки обслуживают их «по расписанию», либо своевременно наращивают объёмы при превышении примерно 60%-70% заполненности, как положено, тем самым «убегая» от проблем.

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

Потому что контроллер врет, что он записал данные в правильном порядке перед ребутом. Для работы ext4 это некритично, для btrfs - критично для работы своих фич, которых нет в ext4. Эта инфа есть в мануале и в вики btrfs, ей сто лет в обед.

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

Дичь полная. Нет в btrfs проблем с невозможностью удалить файлы, если мало места на разделе.

Давай ты не будешь так безаппеляционно заявлять, для начала. Проблема есть, просто погугли «btrfs can not delete files» и насладись. И в каждом ответе пишут что это не баг, это фича, просто нужно сплясать мумбаюмбу и применить крякозябру, потому что таков дизайн. «This is the way», да.

необходимости регулярно гонять balance тоже нет

«It is a good way to monitor your disk usage using] btrfs filesystem usage (or short form: btrfs fi us ) and run balance as needed.» То бишь FS требует обслуживания, относится к обслуживаемым ФС. И если некому «to monitor your disk usage» пусть уж тогда «по расписанию» будет, чем в тыковку превратится внезапно. А то отмаз железный — не ФС виновата, просто вы плохо за ней следили, ага.

запуск пользователем btrfs check - - force без необходимости

А это вообще бред, я отказываюсь это понимать. Почему утилита для ремонта может сломать ФС, а не отремонтировать? В моём скудном понимании если check ничего не нашёл — значит и чинить ничего не надо. А если нашёл — значит надо. Ломать при этом не надо. И вводить в заблуждение деструктивной командой выглядящей как не деструктивная — тоже не надо.

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

Но я не могу понять, зачем тогда Федора впаривает btrfs по-умолчанию?

Потому что Федора - это дистрибутив для тестеров. Они там проверяют как работают разные штуки и работают ли вообще.

Consequently, if you wish to get a major new kernel feature incorporated into Red Hat Enterprise Linux, the place to start is on kernel.org. From there the feature will be inherited first into Fedora. Provided that the feature proves to be successful in Fedora, it will later make its way into Red Hat Enterprise Linux when it inherits from the respective Fedora Core baseline. In this manner, Red Hat issues a formal invitation not only to our key customers and partners, but also the broader open source community to participate in this revolutionary new approach to operating system development.

Также

The typical development model for Red Hat Enterprise Linux is that the packages get rebased (replaced with new major versions) for each major release (e.g. Red Hat Enterprise Linux 3, Red Hat Enterprise Linux 4). We use the experience and feedback of Fedora Core releases to evaluate which version has been demonstrated to be product-ready. Once a version of a package has been selected for a Red Hat Enterprise Linux release, such as Red Hat Enterprise Linux 4, we typically stay with that version of software and apply incremental fixes to that version. This approach is taken to minimize the change rate and to maintain stability.

И

For example, the vast majority of kernel enhancements targeted for inclusion in Red Hat Enterprise Linux 5 are being directly developed upstream in kernel.org. Similarly, the compiler enhancements slated for Red Hat Enterprise Linux 5 are being developed in the gcc community. These enhancements are first inherited and tested in Fedora and later in Red Hat Enterprise Linux.

https://web.archive.org/web/20071012162113/http://www.redhat.com/magazine/022...

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от Vochatrak-az-ezm

А вообще нормальные люди прописывают space_cache=v2 что бы такого не происходило.

Нормальные люди ничего нигде не прописывают, у них дефолты нормально выставлены «из коробки» и всё работает нормально. Почему тогда вот это вот заклинание не в дефолте? Все кто про это не знают — ненормальные? Или почему то «должны страдать»?

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

Вот и я удивляюсь, как так то? Может там какая нибудь специальная «корпоративная про» версия btrfs и особенное отобранное вручную ядро с тайными патчами? Или там таки делается rebalance каким нибудь скриптом при достижении каких либо пороговых значений, тихо-тихо так, автомагически...

табличка "сарказм"
Jameson ★★★★★
()
Ответ на: комментарий от Jameson

Нормальные люди ничего нигде не прописывают

Я так и вовсе впервые прочитал про

space_cache=v2

Что это, куда его прописывать и зачем - мне совсем неинтересно.

utanho ★★★★★
()

btrfs fi du или просто du? du показывает как бы не то, что на самом деле. у меня еще не кончалось место, там же рекомендуется сколько-то места свободного оставлять, так деревья перезаписываются. зря снапшоты удалил. их как раз скопировать можно было

uwuwuu
()
Последнее исправление: uwuwuu (всего исправлений: 1)
Ответ на: комментарий от javascript

А вот тут как раз делается «джедайский жест рукой» и баг объявляется фичей, всё согласно древнему правилу «задокументированный баг — не баг, а особенность.

Jameson ★★★★★
()

знаю, что в меня полетят помидоры за Arch и btrfs

За арч-то ладно, хотя я бы поинтересовался, зачем роллинг на рабочем ПК. А вот про второе реально интересно — какие плюшки тебе дает бртфс на десктопе?

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

Когда ваше ZFS в состав ядра войдёт официально

С семёрки вошла. Постой, а может ты имеешь в виду ядро Linux? Тогда однозначно нет — меняйте политику или устаревшую лицензию на что-то более гибкое и продвинутое, как с драйверами Nvidia поступили, например.

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

нет. как и дефрагментация - нет. они только для рейда нужны.

Это так в документации написано. А в реальности внезапно оказывается что и без рейда нужны, и ты сам виноват, потому что написано «нужно следить за ...», а ты не следил, редиска этакая, сам дурак.

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

Это как фича Виндоус - чтобы скачать файл с ftp через explorer на диск D:, нужно иметь запас места на диске C:, куда он сначала скачает во временную папку.

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

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

uwuwuu
()
Ответ на: комментарий от dataman

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

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

Я даже загуглил. Оказывается это старая проблема, которой сто лет в обед.

Not the space used is the problem, but the space allocated. There is no space to breath for btrfs any more. And the disk is 85% Full. Dont´t do this with btrfs.

В btrfs лучше не заполнять диск более чем на 85%, а если заполнил на 100%, то нет других решений, кроме как пересоздать файловую систему

uwuwuu
()
Ответ на: комментарий от Zhbert

У меня противоположный вопрос - зачем НЕ роллинг на рабочем ПК? Для себя я бы стал использовать или роллинг, или что-то по типу nix. А пользоваться протухшим софтом в релизных дистрах - зачем?

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

ну я хотя бы документацию читал. а ты хз у кого че вычитал, но мне интересно

А я на это наступил лично. Забился диск, не смог его почистить по причине «не могу удалить файлы так как нет места», иронически охренел, погуглил, воткнул флешечку, растянул, почистил, стянул обратно, выполнил balance (который я вроде как не должен выполнять, у меня же не raid), стал задавать вопросы, а как так то? Что произошло? И прочитал что я оказывается должен был следить, и обнаружив избыток «непустого пустого», или наоборот, ну ты понял, места сделать balance.

Сделать его я должен был до того как очевидные проблемы начались, и вопреки тому что в документации написано что мне необязательно это делать. Там просто рекомендуют «следить». А дальше как в старой рекламе «ну ты могла бы, если б хотела...» То есть могу не делать, и насладиться тыквой, а могу сделать, но я вовсе не обязан, да.

На этом я решил больше не пользоваться btrfs, так как все нужные мне фичи есть в старой доброй связке LVM2+ext4, а остальное мне либо не нужно, либо я могу без этого жить. А самое главное я не обязан «следить» и могу просто забыть об этом всём, оно «просто работает».

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

В btrfs лучше не заполнять диск более чем на 85%, а если заполнил на 100%, то нет других решений, кроме как пересоздать файловую систему

Ага, снова «джедайский жест рукой», не баг, а фича, дизайн такой, а вы следите, а не уследили — вы сами и виноваты.

Нене, «давай досвиданья».

Jameson ★★★★★
()

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

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

На ней du не du, откуда я знаю, может на ней и квота не квота? Нене, эта ФС слишком волшебная и непостижимая для моего скудного крестьянского ума.

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

Давай ты не будешь так безаппеляционно заявлять, для начала. Проблема есть, просто погугли «btrfs can not delete files» и насладись. И в каждом ответе пишут что это не баг, это фича, просто нужно сплясать мумбаюмбу и применить крякозябру, потому что таков дизайн. «This is the way», да.

Давай ты не будешь безапелляционно утверждать об указанной проблеме. Я btrfs использую давно, про описанный тобой кейс не слышал, зато в слышал про другие (внезапный ребут на проблемном контроллере и неполная поддержка RAID 5/6), про которые сообщил.

Тема btrfs постоянно привлекает «экспертов», которые пишут комментарии что она сырая, что она не готова и т.п. Когда спрашиваешь подробности, то почти всегда выясняется, что «эксперт» листал форум и часто видел темы с тегом btrfs, поэтому у него «сложилось мнение», что fs часто ломается и поэтому «не готова». Информационная ценность таких комментариев стремится к нулю. В одной из таких тем я ради интереса собрал статистику LOR по темам с btrfs - из них btrfs сломалась только в половине случаев, при этом только в части из них она сломалась по причине ребута или bad RAM: зачастую было так, что пользователю не нужно было запускать btrfs check –force (например, была ошибка в fstab), но несмотря на предупреждение, эта команда была выполнена и привела к поломке фс.

«It is a good way to monitor your disk usage using] btrfs filesystem usage (or short form: btrfs fi us ) and run balance as needed.» То бишь FS требует обслуживания, относится к обслуживаемым ФС. И если некому «to monitor your disk usage» пусть уж тогда «по расписанию» будет, чем в тыковку превратится внезапно. А то отмаз железный — не ФС виновата, просто вы плохо за ней следили, ага.

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

А это вообще бред, я отказываюсь это понимать. Почему утилита для ремонта может сломать ФС, а не отремонтировать? В моём скудном понимании если check ничего не нашёл — значит и чинить ничего не надо. А если нашёл — значит надо. Ломать при этом не надо. И вводить в заблуждение деструктивной командой выглядящей как не деструктивная — тоже не надо.

Это не просто утилита для ремонта, и перед её запуском появляется большое предупреждение, что просто без причин её запускать нельзя. На мой взгляд, вполне справедливое требование. Если в других фс запускать команду «check» норм, то это не значит, что так следует делать с другими фс. Или например одна политика распределения файлов и их использования может быть оптимальна в одной фс, и неоптимальна в другой. Нельзя говорить, что фс отстой, потому что выбранная пользователем политика использования раздела больше подходит к другой фс.

mxfm ★★
()