В файловой системе Btrfs с несколькими устройствами или Btrfs RAID, в зависимости от конфигурации файловой системы, может быть несколько копий блоков данных / метаданных, хранящихся в разных местах устройств хранения, добавленных в файловую систему Btrfs. Когда инструмент Btrfs scrub находит поврежденный блок данных / метаданных, он ищет на всех устройствах хранения, добавленных в файловую систему Btrfs, повторяющиеся копии этого блока данных / метаданных. После обнаружения дублирующей копии этого блока данных / метаданных поврежденный блок данных / метаданных перезаписывается правильным блоком данных / метаданных. Вот как инструмент очистки Btrfs восстанавливает поврежденные блоки данных / метаданных в файловой системе Btrfs с несколькими устройствами или Btrfs RAID.
В этой статье я собираюсь показать вам, как использовать инструмент Btrfs scrub для поиска и восстановления поврежденных блоков данных / метаданных в файловой системе Btrfs с несколькими устройствами или Btrfs RAID. Итак, приступим.
Сокращения
RAID - Резервный массив недорогих / независимых дисков
ГБ - Гигабайт
Предпосылки
Чтобы следовать этой статье, вам потребуется работающая файловая система Btrfs для нескольких устройств или Btrfs RAID.
Я создал Btrfs RAID в RAID-1 конфигурация (установлен на /данные каталог) с использованием 4 запоминающих устройств SDB, SDC, SDD, а также sde, как вы можете видеть на скриншоте ниже. Я буду использовать этот RAID-массив Btrfs для демонстрации скраба Btrfs в этой статье.
Использование / данные файловой системы $ sudo btrfs
Если вам нужна помощь по установке файловой системы Btrfs в Ubuntu, ознакомьтесь с моей статьей «Установка и использование Btrfs в Ubuntu 20».04 LTS.
Если вам нужна помощь по установке файловой системы Btrfs в Fedora, ознакомьтесь с моей статьей «Установка и использование Btrfs в Fedora 33».
Если вам нужна помощь в создании Btrfs RAID, посмотрите мою статью Как настроить Btrfs RAID.
Создание фиктивных файлов в файловой системе Btrfs
Чтобы показать вам, как работает инструмент Btrfs scrub, нам нужно сгенерировать несколько случайных файлов, чтобы заполнить файловую систему Btrfs. Давайте создадим сценарий оболочки, который сделает это.
Создайте новый сценарий оболочки Genfiles.ш в / USR / местные / бен / каталог следующим образом:
$ sudo nano / usr / local / bin / genfiles.ш
Введите следующие строки кодов в поле Genfiles.ш сценарий оболочки.
#!/ bin / bashпока правда
делать
ИМЯ ФАЙЛА = $ (uuidgen)
echo "[Создание] $ FILENAME"
dd if = / dev / random of = $ FILENAME bs = 1M count = 256 status = прогресс
echo "[Создано] $ FILENAME"
Выполнено
Когда вы закончите, нажмите
В Genfiles.ш сценарий оболочки запускает бесконечное пока петля.
пока правдаделать
# другой код
Выполнено
Следующая строка генерирует UUID с использованием uuidgen команда и сохраняет UUID в ИМЯ ФАЙЛА Переменная.
Следующая строка выводит сообщение на консоль перед файлом ИМЯ ФАЙЛА генерируется.
Следующая строка генерирует новый случайный файл ИМЯ ФАЙЛА с помощью дд команда. Файл будет 256 МБ по размеру.
Следующая строка выводит сообщение на консоль после файла ИМЯ ФАЙЛА генерируется.
Добавить разрешение на выполнение в Genfiles.ш сценарий оболочки следующим образом:
s
В Genfiles.ш сценарий оболочки теперь должен быть доступен, как и любые другие команды.
$ which genfiles.ш
Давайте сгенерируем несколько случайных файлов в Btrfs RAID, смонтированном в /данные каталог.
Перейдите к /данные каталог, в котором монтируется Btrfs RAID, как показано ниже:
$ cd / data
Как видите, в настоящий момент в моем RAID-массиве Btrfs нет файлов.
$ ls -lh
Чтобы сгенерировать несколько случайных файлов в текущем рабочем каталоге (/данные каталог в этом случае), запустите Genfiles.ш сценарий оболочки следующим образом:
$ sudo genfiles.ш
В Genfiles.ш сценарий оболочки должен начать генерировать случайные файлы в /данные каталог.
В Genfiles.ш скрипт генерирует случайные файлы. Дайте скрипту поработать пару минут, чтобы он занял около 2-3 ГБ дискового пространства Btrfs RAID.
Когда вы хотите остановить Genfiles.ш сценарий оболочки, нажмите
Как видите, некоторые случайные файлы генерируются в RAID-массиве Btrfs.
$ ls -lh
Я создал около 13 ГБ случайных файлов в RAID-массиве Btrfs, установленном в /данные каталог, как вы можете видеть на скриншоте ниже.
$ sudo du -sh / данные
Работа с инструментом Btrfs Scrub Tool
В этом разделе я покажу вам, как использовать инструмент Btrfs scrub. Давайте начнем.
Вы можете запустить процесс очистки файловой системы Btrfs, смонтированной на /данные каталог с помощью следующей команды:
$ sudo btrfs scrub start / data
Процесс очистки Btrfs должен быть запущен в файловой системе Btrfs, смонтированной на /данные каталог.
Вы можете увидеть состояние процесса очистки Btrfs, запущенного в файловой системе Btrfs, смонтированной на /данные каталог следующим образом:
$ sudo btrfs очистить статус / данные
Как видите, процесс очистки Btrfs все еще Бег.
Очистка файловой системы Btrfs или Btrfs RAID с большим количеством файлов займет много времени.
После завершения процесса очистки Btrfs статус должен быть изменен на законченный, как вы можете видеть на скриншоте ниже.
$ sudo btrfs очистить статус / данные
Вы также можете увидеть статус очистки Btrfs для каждого из устройств хранения, добавленных в файловую систему Btrfs (смонтированных в /данные каталог) отдельно следующим образом:
$ sudo btrfs очистить статус -d / данные
Я уже говорил вам, что процесс очистки Btrfs занимает много времени на большой файловой системе Btrfs. Одним из больших преимуществ инструмента очистки Btrfs является то, что его процесс можно приостановить и возобновить в любое время.
Давайте посмотрим, как приостановить и возобновить процесс очистки Btrfs.
Сначала запустите новый процесс очистки Btrfs в файловой системе Btrfs, смонтированной в каталоге / data, следующим образом:
$ sudo btrfs scrub start / data
Чтобы отменить или приостановить процесс очистки Btrfs, который в настоящее время выполняется в файловой системе Btrfs, смонтированной на /данные каталог, выполните следующую команду:
$ sudo btrfs scrub cancel / data
Выполняемый процесс очистки Btrfs должен быть отменен или приостановлен.
Как видите, статус очистки Btrfs - прерванный. Итак, процесс очистки Btrfs больше не работает.
$ sudo btrfs очистить статус / данные
Чтобы возобновить отмененный или приостановленный процесс очистки Btrfs, выполните следующую команду:
$ sudo btrfs очистить резюме / данные
Процесс очистки Btrfs должен быть возобновлен.
Как видите, статус очистки Btrfs теперь Бег. Итак, процесс очистки Btrfs возобновлен.
$ sudo btrfs очистить статус / данные
После завершения процесса очистки Btrfs статус очистки Btrfs должен быть изменен на законченный.
$ sudo btrfs очистить статус / данные
Заключение
В этой статье я показал вам, как работать с инструментом Btrfs scrub для поиска и исправления поврежденных блоков данных / метаданных файловой системы Btrfs с несколькими устройствами или RAID. Я показал вам, как отменить / приостановить и возобновить процесс очистки Btrfs после его запуска.