Home » Ошибки » Metadata corruption detected, unmount and run xfs_repair

Metadata corruption detected, unmount and run xfs_repair

После переноса диска работающей виртуальной машины с одного гипервизора на другой возникла проблема с загрузкой виртуальной машины на новом месте. Была повреждена файловая система xfs из-за того, что диск копировался нагорячую. Рассказываю, как решить эту проблему.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

  1. На гипервизоре не хватало места, чтобы сделать локальный бэкап.
  2. Объем диска был 300 Гб, поэтому остановить виртуальную машину на весь срок переноса диска через интернет не представлялось возможным.

Мне нужно было сделать копию для того, чтобы развернуть такое же окружение на резервном гипервизоре и тестировать на нем восстановление из бэкапов. Так что меня устраивало, что горячие данные, например база, которые менялись во время копирования, будут повреждены. Я их накачу потом из бэкапа. Не хотелось решать вопрос с ручной настройкой окружения. Было удобнее скопировать как есть текущий прод.

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

Metadata corruption detected, unmount and run xfs_repair

Metadata corruption detected, unmount and run xfs_repair. Entering emergency mode. Exit the shell to continue.

Перед тем, как запустить виртуалку с скопированным диском, сделал проверку самого qcow2 файла.

# qemu-img check vm-102-disk-0.qcow2
# qemu-img check -r all vm-102-disk-0.qcow2

Ошибок на этом этапе не было. Но виртуалка всё равно не стартовала, так как судя по ошибке на скрине, была повреждена сама файловая система xfs. Исправил это достаточно просто. Там же в консоли восстановления выполнил проверку файловой системы. У меня там было 2 раздела:

  1. /boot на /dev/sda1
  2. / корень на lvm разделе /dev/mapper/centos-root

Запустил:

# xfs_repair /dev/sda1
# xfs_repair /dev/mapper/centos-root

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

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

2 комментария

  1. Спасибо автор. Ты меня спас. Два дня возился с этой проблемой. Паника на работе. Очень критичный сервер был. Здоровья и долгих лет тебе

  2. Спасибо.
    xfs умеет snapshot
    1. Маунтимся удаленно к proxmox (sshfs в помощь)
    2. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/xfsbackuprestore

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar