XFS

Восстановление системы XFS

Восстановление системы XFS
Файловые системы построены поверх запоминающих устройств. Существуют RAID-контроллеры и контроллеры дисков, на каждом из которых запущена собственная небольшая прошивка. Есть кеши для повышения производительности. Существуют диски с разными размерами секторов, и есть диски, которые сообщают о разном размере сектора в зависимости от того, как вы задаете вопрос.

С таким большим количеством различных частей, составляющих типичный стек хранилища, просто чудо, что что-то вообще работает. Однако большую часть времени все работает хорошо. Несколько раз, когда что-то идет не так, нам нужны такие утилиты, как xfs_repair, чтобы вытащить нас из беспорядка.

Что-то может пойти не так, когда вы пишете файл и отключается питание или возникает паника ядра. Даже данные, бездействующие на диске, могут со временем разрушиться из-за того, что физическая структура элементов памяти может измениться, это известно как битовая гниль. Во всех случаях нам нужен механизм для:

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

Настройка песочницы

Давайте настроим тестовую среду для запуска процедуры восстановления xfs вместо использования реальных дисков с ценными данными на них. Если у вас уже есть сломанная файловая система, вы можете пропустить этот раздел и сразу перейти к следующему. Этот тестовый стенд состоит из виртуальной машины Ubuntu, к которой подключен виртуальный диск, обеспечивающий необработанное хранилище. Вы можете использовать VirtualBox для создания виртуальной машины, а затем создать дополнительный диск для подключения к виртуальной машине.

Просто зайдите в настройки вашей виртуальной машины и в Настройки → Хранилище раздел вы можете добавить новый диск к контроллеру SATA вы можете создать новый диск. Как показано ниже, но при этом убедитесь, что ваша виртуальная машина выключена.

После создания нового диска включите виртуальную машину и откройте терминал. Команда lsblk перечисляет все доступные блочные устройства.

$ lsblk
sda 8: 0 0 60G 0 диск
├─sda1 8: 1 0 1M 0 часть
└─sda2 8: 2 0 60G 0 часть /
sdb 8:16 0 100G 0 диск
sr0 11: 0 1 1024M 0 rom

Помимо основного блочного устройства sda, там, где установлена ​​ОС, теперь есть новое устройство sdb. Давайте быстро создадим из него раздел и отформатируем его с файловой системой XFS.

Откройте утилиту parted от имени пользователя root:

$ parted -a оптимальный / dev / sdb

Давайте сначала создадим таблицу разделов с помощью mklabel, а затем создадим один раздел из всего диска (размером 107 ГБ). Вы можете убедиться, что раздел создан, перечислив его с помощью команды печати:

(расстались) mklabel gpt
(разошлись) мкпарт первичный 0107
(разошлись) печать
(расстался) бросить

Хорошо, теперь мы можем видеть, используя lsblk, что есть новое блочное устройство под устройством sdb, называемое sdb1.

Отформатируем это хранилище как xfs и смонтируем в директорию / mnt. Снова выполните следующие действия как root:

$ mkfs.xfs / dev / sdb1
$ mount / dev / sdb1 / mnt
$ df -h

Последняя команда распечатает все смонтированные файловые системы, и вы можете проверить, что / dev / sdb1 смонтирован в / mnt.

Затем мы записываем кучу файлов в качестве фиктивных данных для дефрагментации здесь:

$ dd if = / dev / urandom of = / mnt / myfile.txt count = 1024 bs = 1024

Приведенная выше команда запишет файл myfile.txt размером 1 МБ. При желании вы можете автоматически сгенерировать больше таких файлов, распределить их по различным каталогам внутри файловой системы xfs (смонтированной в / mnt), а затем проверить на фрагментацию. Используйте для этого bash, python или любой другой из ваших любимых языков сценариев.

Проверка и исправление ошибок

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

Утилита xfs_scrub должна выполнять эту задачу для вашего. Эта экспериментальная функция, частично вдохновленная командой Scrub OpenZFS, доступна только в xfsprogs версии 4.15.1-1ubuntu1, который не является стабильным выпуском. Если он ошибочно обнаруживает ошибку, он может ввести вас в заблуждение, вызывая повреждение данных, вместо того, чтобы исправлять его! Однако, если вы хотите поэкспериментировать с ним, вы можете использовать его в смонтированной файловой системе с помощью команды:

$ xfs_scrub / dev / sdb1

Прежде чем пытаться восстановить поврежденную файловую систему, сначала вам придется ее размонтировать. Это сделано для предотвращения непреднамеренной записи приложений в файловую систему, когда ее предполагается оставить в покое.

$ umount / dev / sdb1

Исправить ошибки так же просто, как запустить:

$ xfs_repair / dev / sdb1

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

Следующие шаги

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

Если контроллер выходит из строя или RAID-карта перестала работать, никакое программное обеспечение в мире не сможет восстановить файловую систему за вас. Вам не нужны дорогие счета за восстановление данных и длительные простои, поэтому следите за этими твердотельными накопителями и вращающимися пластинами!

Установите последнюю версию эмулятора Dolphin для Gamecube и Wii в Linux
Эмулятор Dolphin позволяет вам играть в выбранные вами игры Gamecube и Wii на персональных компьютерах (ПК) Linux. Являясь свободно доступным игровым...
Как использовать чит-движок GameConqueror в Linux
В статье содержится руководство по использованию чит-движка GameConqueror в Linux. Многие пользователи, играющие в игры на Windows, часто используют п...
Лучшие эмуляторы игровой консоли для Linux
В этой статье будет перечислено популярное программное обеспечение для эмуляции игровых консолей, доступное для Linux. Эмуляция - это уровень совмести...