В Linux 6.2 появится функция аварийного сброса резерва Btrfs

«BTRFS_RESERVE_FLUSH_EMERGENCY» находится на пути к ядру Linux 6.2 для решения некоторых проблем, которые первоначально возникли в центрах обработки данных Facebook, где они наблюдали обычные прерывания транзакций из-за нехватки места. С BTRFS_RESERVE_FLUSH_EMERGENCY Btrfs будет стараться избегать прерванных транзакций при нехватке места.

Йозеф Бацик, автор изменения, объяснил:
Внутри [Facebook], а также в некоторых пользовательских отчетах у нас была постоянная проблема случайных прерываний транзакций ENOSPC. Внутри FB мы наблюдали около 100-200 прерываний ENOSPC в день во флоте, что является очень низким показателем, учитывая размер нашего флота, но это не пустяк.

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

Полное исправление этого будет относительно сложным и трудоемким. Этот патч я обсуждал с Филипе ранее в этом году, и то, что я добавил в наши ядра внутри FB. С этим патчем количество прерываний ENOSPC сократилось до 1-2 в неделю, что является значительным сокращением. Это приличный временной интервал, пока мы не сможем разработать более целостный подход.
решение этих двух крайних случаев.

Крайние случаи, когда они сталкивались с этими проблемами, были с задержкой распределения и задержанным резервом рефералов. Более подробная информация содержится в этом патче, который теперь является частью ветки Btrfs «for-next» перед окном слияния Linux 6.2. Но если коротко, то это хорошие новости, если вы столкнулись с проблемами прерывания транзакции вне пространства (ENOSPC) Btrfs с файловой системой.
Поделиться:

Похожие публикации

Тут ничего нет

Нет комментариев