Jump to content

BTRFS/Обслуживание: различия между версиями

мНет описания правки
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 3: Строка 3:
| style="text-align:right;" | [[BTRFS/Автоматизация обслуживания|Вперёд: Автоматизация обслуживания →]]
| style="text-align:right;" | [[BTRFS/Автоматизация обслуживания|Вперёд: Автоматизация обслуживания →]]
|}
|}
<div style="font-size:90%; color:#555; margin-bottom:1em;">
'''Опубликовано:''' 30.10.2025 • '''Обновлено:''' {{REVISIONDAY2}}.{{REVISIONMONTH}}.{{REVISIONYEAR}}
</div>


<div style="border: 2px solid #f39c12; background-color: #fff3cd; padding: 0.5em; margin-bottom: 1em;">
<div style="border: 2px solid #f39c12; background-color: #fff3cd; padding: 0.5em; margin-bottom: 1em;">
Строка 13: Строка 17:
== '''Зачем нужно обслуживание BTRFS''' ==
== '''Зачем нужно обслуживание BTRFS''' ==


BTRFS — "живая" файловая система: она отслеживает состояние своих блоков, умеет восстанавливаться при ошибках, но требует периодического ухода.   
BTRFS — "живая" файловая система: она отслеживает состояние своих блоков, умеет восстанавливаться при ошибках и эффективно использовать пространство.   
Это как проверка автомобиля — если время от времени не заглядывать под капот, можно пропустить мелкую проблему, которая потом вырастет в серьёзную.
Но даже такой системе полезно периодически проверять состояние, балансировать блоки и корректировать распределение данных, чтобы избежать проблем с доступом и потерей свободного места.


== '''Проверка состояния устройств''' ==
== '''Проверка статистики устройств''' ==


Для начала стоит посмотреть, всё ли хорошо с диском и нет ли ошибок ввода-вывода.
Чтобы посмотреть, есть ли ошибки ввода-вывода или другие проблемы с устройствами, выполните:


<pre>
<pre>
Строка 24: Строка 28:
</pre>
</pre>


Команда выводит статистику по каждому устройству, участвующему в BTRFS.  
Команда выводит счётчики ошибок чтения и записи по каждому устройству;  
Если вы видите только нули — всё отлично. Если появляются ошибки чтения или записи, их нужно исследовать глубже (например, проверить SMART с помощью `smartctl`).
если вы видите только нули — всё в порядке.
Если есть ошибки, стоит изучить их глубже (например, с помощью `smartctl` или `smartmontools`).


== '''Проверка и восстановление данных (scrub)''' ==
== '''Проверка и восстановление данных (scrub)''' ==


"Scrub" в BTRFS — это полная проверка данных на диске с исправлением обнаруженных несоответствий.   
Scrub — это проверка целостности всех блоков данных и метаданных с проверкой контрольных сумм на лету.   
Она проверяет контрольные суммы и, при возможности, восстанавливает повреждённые блоки.
Если файловая система настроена с избыточным хранением (например, RAID1 или DUP), BTRFS может автоматически попытаться восстановить повреждённые блоки из реплик.


Чтобы запустить scrub вручную:
Чтобы запустить проверку:


<pre>
<pre>
Строка 38: Строка 43:
</pre>
</pre>


Расшифровка:
Пояснение:
 
* '''start''' — начать операцию scrub
* '''start''' — запустить проверку;
* '''-B''' — выполнить в блокирующем режиме (ожидать завершения)
* '''-B''' — выполнить в блокирующем режиме (ждать завершения);
* '''-d''' — детальный вывод статистики по ошибкам
* '''-d''' — показать детальный отчёт по каждой ошибке;
* '''/''' — путь к корневому разделу, который проверяем.
 
Проверка может занять от нескольких минут до часа, в зависимости от объёма данных и скорости диска.


Чтобы узнать прогресс во время выполнения, можно выполнить:
Для просмотра статуса scrub:


<pre>
<pre>
sudo btrfs scrub status /
sudo btrfs scrub status /
</pre>
</pre>
Если ошибок нет — вывод покажет нули в соответствующих счётчиках. 
Регулярная проверка (например, раз в месяц) помогает выявлять проблемы на ранних стадиях.


== '''Балансировка пространства''' ==
== '''Балансировка пространства''' ==


Со временем распределение данных на BTRFS может стать неравномерным. Это снижает эффективность и может приводить к ошибкам “недостаточно места”, даже если место есть.
Со временем распределение данных и метаданных в BTRFS может становиться неравномерным.
Для исправления этого используется балансировка:
Балансировка перераспределяет блоки, улучшая доступное пространство и предотвращая ситуации, когда новый блок не может быть выделен, хотя в целом места достаточно.
 
Пример команды:


<pre>
<pre>
Строка 63: Строка 69:


Пояснение:
Пояснение:
* '''-dusage=50''' — обрабатывать только данные, занятые менее чем на 50 %
* '''-musage=50''' — аналогично для метаданных
* '''/''' — корневой подтом


* '''-dusage=50''' — перераспределить только те блоки данных, что заняты менее чем на 50%; 
Эту операцию можно выполнять, например, раз в пару месяцев, или когда метаданные занимают слишком много места.
* '''-musage=50''' — аналогично, но для метаданных; 
* '''/''' — корневой подтом (можно указать другой путь).
 
Эта операция безопасна и не требует перезагрузки. Выполнять её достаточно раз в пару месяцев.


== '''Удаление старых снимков (snapshots)''' ==
== '''Удаление старых снимков (snapshots)''' ==


Снимки BTRFS отличная вещь, но они занимают место.   
Снимки занимают пространство, и если их много свободное место может уменьшиться.   
Если вы используете, например, Timeshift, то старые снимки можно удалить вручную:
Сначала получите список подтомов:
 
Сначала посмотрите список подтомов:


<pre>
<pre>
Строка 81: Строка 84:
</pre>
</pre>


Найдите ненужный снимок (обычно что-то вроде `.snapshots/2024-10-10_18-00-00/snapshot`) и удалите его:
Затем удалите ненужный:


<pre>
<pre>
Строка 87: Строка 90:
</pre>
</pre>


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


== '''Проверка использования места''' ==
== '''Проверка использования места''' ==


Чтобы узнать, как используется пространство на диске, введите:
Чтобы увидеть текущее использование пространства:


<pre>
<pre>
Строка 97: Строка 100:
</pre>
</pre>


Команда показывает, сколько места занято данными, метаданными и резервами.   
Команда покажет, сколько места занято данными, метаданными и зарезервировано системой.   
Если метаданные занимают больше 20–30 % — это сигнал, что стоит выполнить балансировку.
Если доля метаданных велика (например, выше 20–30 %), имеет смысл провести балансировку.


== '''Проверка общего состояния файловой системы''' ==
== '''Проверка общей целостности файловой системы''' ==


Для быстрой проверки без исправления можно использовать:
Для “сухой” проверки без исправлений можно использовать:


<pre>
<pre>
Строка 108: Строка 111:
</pre>
</pre>


Эта команда выполняет "сухую" проверку, не изменяя данные.   
Эта команда проверяет структуру файловой системы без внесения изменений.   
Используйте её, если хотите убедиться, что файловая система в порядке, но не готовы вносить правки.
Если вы хотите исправить серьёзные ошибки, делать это стоит только в режиме Live-системы, когда раздел не смонтирован.
 
'''Важно:''' если вы хотите исправить ошибки, не используйте `--readonly`, но только в режиме Live-системы, чтобы диск не был смонтирован.


== '''Практические советы''' ==
== '''Практические советы''' ==


* Запускайте scrub примерно раз в месяц. Это помогает находить ошибки до того, как они станут проблемой.
* Запускайте scrub примерно раз в месяц — это помогает находить ошибки до того, как они станут проблемой.  
* Балансировку можно делать раз в 2–3 месяца.   
* Балансировку можно делать раз в 2–3 месяца или при необходимости.   
* Проверку `btrfs check` стоит проводить только при подозрении на сбои или после аварийного выключения.
* Scrub не заменяет `fsck` — это проверка контрольных сумм, а не глубокая реставрация структуры.
* Не злоупотребляйте “полной” балансировкой — это тяжёлая операция, лучше ограничиваться параметрами `-dusage` и `-musage`.
* Всегда проверяйте статус после выполнения операций (`scrub status`, `balance status`).


== '''Ежемесячное обслуживание (вручную)''' ==
== '''Ежемесячное обслуживание (вручную)''' ==


Если вы не хотите автоматизировать процессы (об этом — в следующей статье), можно просто выполнять три команды вручную:
Если вы не автоматизируете обслуживание, достаточно выполнить три команды вручную:


<pre>
<pre>
Строка 130: Строка 131:
</pre>
</pre>


* '''scrub''' проверяет целостность файлов;   
* `scrub` — проверяет целостность данных;   
* '''balance''' распределяет данные;   
* `balance` — перераспределяет данные;   
* '''fstrim''' очищает неиспользуемые блоки на SSD/NVMe.
* `fstrim` — сообщает SSD/NVMe о неиспользуемых блоках, освобождая их для внутреннего управления.


Такая последовательность обеспечивает базовый уровень ухода за BTRFS.
== '''Заключение''' ==
== '''Заключение''' ==


Регулярное обслуживание BTRFS похоже на плановое ТО автомобиля — вы тратите немного времени, но сохраняете стабильность и производительность.   
Регулярное обслуживание BTRFS похоже на плановое ТО автомобиля — немного внимания сейчас позволяет значительно снизить риск проблем и сохранить производительность системы.   
После нескольких таких циклов вы заметите, что система остаётся “лёгкой” даже после месяцев активного использования.
После нескольких таких циклов вы заметите, что файловая система остаётся “лёгкой” и устойчивой даже после месяцев активной работы.


{| style="width:100%; margin-top:1em; font-size:95%;"
{| style="width:100%; margin-top:1em; font-size:95%;"

Текущая версия от 17:08, 11 января 2026

← Назад: Оптимизация Вперёд: Автоматизация обслуживания →

Опубликовано: 30.10.2025 • Обновлено: 11.01.2026

⚠️ Эта статья находится в разработке. Содержание может измениться в ближайшее время.

Файловая система BTRFS может сама проверять свои данные, исправлять ошибки и сохранять стабильность, если ей немного помочь. Этот раздел рассказывает, как выполнять обслуживание — без риска и без “танцев с бубном”.

Зачем нужно обслуживание BTRFS

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

Проверка статистики устройств

Чтобы посмотреть, есть ли ошибки ввода-вывода или другие проблемы с устройствами, выполните:

sudo btrfs device stats /

Команда выводит счётчики ошибок чтения и записи по каждому устройству; если вы видите только нули — всё в порядке. Если есть ошибки, стоит изучить их глубже (например, с помощью `smartctl` или `smartmontools`).

Проверка и восстановление данных (scrub)

Scrub — это проверка целостности всех блоков данных и метаданных с проверкой контрольных сумм на лету. Если файловая система настроена с избыточным хранением (например, RAID1 или DUP), BTRFS может автоматически попытаться восстановить повреждённые блоки из реплик.

Чтобы запустить проверку:

sudo btrfs scrub start -Bd /

Пояснение:

  • start — начать операцию scrub
  • -B — выполнить в блокирующем режиме (ожидать завершения)
  • -d — детальный вывод статистики по ошибкам

Для просмотра статуса scrub:

sudo btrfs scrub status /

Если ошибок нет — вывод покажет нули в соответствующих счётчиках. Регулярная проверка (например, раз в месяц) помогает выявлять проблемы на ранних стадиях.

Балансировка пространства

Со временем распределение данных и метаданных в BTRFS может становиться неравномерным. Балансировка перераспределяет блоки, улучшая доступное пространство и предотвращая ситуации, когда новый блок не может быть выделен, хотя в целом места достаточно.

Пример команды:

sudo btrfs balance start -dusage=50 -musage=50 /

Пояснение:

  • -dusage=50 — обрабатывать только данные, занятые менее чем на 50 %
  • -musage=50 — аналогично для метаданных
  • / — корневой подтом

Эту операцию можно выполнять, например, раз в пару месяцев, или когда метаданные занимают слишком много места.

Удаление старых снимков (snapshots)

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

sudo btrfs subvolume list /

Затем удалите ненужный:

sudo btrfs subvolume delete /.snapshots/2024-10-10_18-00-00/snapshot

После удаления снимка стоит выполнить балансировку, чтобы освободившееся пространство эффективно перераспределилось.

Проверка использования места

Чтобы увидеть текущее использование пространства:

sudo btrfs filesystem df /

Команда покажет, сколько места занято данными, метаданными и зарезервировано системой. Если доля метаданных велика (например, выше 20–30 %), имеет смысл провести балансировку.

Проверка общей целостности файловой системы

Для “сухой” проверки без исправлений можно использовать:

sudo btrfs check --readonly /dev/sda2

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

Практические советы

  • Запускайте scrub примерно раз в месяц — это помогает находить ошибки до того, как они станут проблемой.
  • Балансировку можно делать раз в 2–3 месяца или при необходимости.
  • Scrub не заменяет `fsck` — это проверка контрольных сумм, а не глубокая реставрация структуры.
  • Всегда проверяйте статус после выполнения операций (`scrub status`, `balance status`).

Ежемесячное обслуживание (вручную)

Если вы не автоматизируете обслуживание, достаточно выполнить три команды вручную:

sudo btrfs scrub start -Bd /
sudo btrfs balance start -dusage=50 -musage=50 /
sudo fstrim -av
  • `scrub` — проверяет целостность данных;
  • `balance` — перераспределяет данные;
  • `fstrim` — сообщает SSD/NVMe о неиспользуемых блоках, освобождая их для внутреннего управления.

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

Заключение

Регулярное обслуживание BTRFS похоже на плановое ТО автомобиля — немного внимания сейчас позволяет значительно снизить риск проблем и сохранить производительность системы. После нескольких таких циклов вы заметите, что файловая система остаётся “лёгкой” и устойчивой даже после месяцев активной работы.

← Назад: Оптимизация Вперёд: Автоматизация обслуживания →