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

Metadata corruption detected, unmount and run xfs_repair

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Для начала поясню, зачем я делал такую на первый взгляд абсурдную вещь. Для того, чтобы перенести виртуальную машину на на другой гипервизор 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

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

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Автор Zerox

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

One comment

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

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

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.