Centos 7 проверка диска на ошибки xfs

Обновлено: 06.07.2024

Рассмотрим, так же журналируемые файловые системы и посмотрим индексные дескрипторы.

  • Проверка целостности файловой системы;
  • Проверка свободного пространства и индексных дескрипторов в файловой системе;
  • Исправление проблем файловой системы.
  • df , du , fsck , debugfs – общие утилиты для всех Linux систем
  • mke2fs , e2fsck , dumpe2fs , tune2fs – утилиты для файловой системы ext
  • xfs_check , xfs_repair , xfs_info , xfs_metadump – утилиты для файловой системы xfs

Совершенно понятно, что для других файловых систем есть свои утилиты для работы с данными файловыми сиcтемами.

Первая утилита df :

Данная утилита показывает использование дискового пространства. У данной утилиты достаточно много ключей. Её особенностью является то, что она показывает дисковое пространство в 1 кбайт блоках.

Данные цифры не очень понятны и удобны, для того чтобы было удобно можно использовать ключ –h и тогда вид станет удобно читаемым. В выводе команды мы сразу видим размер, сколько использовано, процент использование и точка монтирования. Как мы видим на новом перемонтированном разделе /dev/sdc1 занят 1% дискового пространства. Если посмотреть в папку монтирования раздела, то мы увидим там папку lost+found . Данная папка пуста, но занимает 37 МБ. Есть такое понятие индексные дескрипторы в журналируемых файловых системах inode . Inode – это метка идентификатора файла или по другому индексный дескриптор. В этих индексных дескрипторах хранится информация о владельце, типе файла, уровне доступа к нему. И нужно понимать, что для каждого файла создается свой отдельный inode. Команда df –I может показать нам inode.

Число, например, inode напротив /dev/sda2 показывает сколько inode всего может быть на устройстве, далее сколько используется и сколько свободно. Обычно под inode отдается примерно 1% жесткого диска. И получается, что больше чем число inode на устройстве файлов и папок быть не может. Количество inode зависит от типа файловой системы. Далее мы рассмотрим, как пользоваться inode.

Следующая команда du

Данная команда показывает, что и сколько занимает у нас места на жестком диске, а именно размер папок в текущей директории. Если посмотреть вывод данной команды без ключей, то мы увидим список папок в текущей директории и количество блоков, с которым очень неудобно работать. Чтобы перевести данные блоки в человеческий вид, то необходимо дать ключ –h .

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

sudo apt install ncdu – y

После установки нужно запустить ncdu . И мы увидим очень красивую картинку.

Но вернемся к стандартной утилите du . С помощью данной утилиты мы можем указать в какой папке необходим просмотр папок и вывод их размера.

К сожалению данная утилита умеет взвешивать вес только каталогов и не показывает размер файлов. Для того, чтобы посмотреть размер файлов, мы конечно же можем воспользоваться командой ls –l . А также если мы запустим данную команду с ключем –i мы увидим номера inode файлов.

Как вы видите у каждой папки и у каждого файла есть свой индексный дескриптор.

Далее команды, которые нам позволят проверить целостность файловой системы.

Как написано в описании утилиты она позволяет проверять и чинить Linux файловую систему.

Мы можем видеть, например, в oперационной системе Windows, что в случае некорректного завершения работы операционной системы, операционная система запускает утилиту проверки целостности checkdisk . В случае необходимости данная утилита исправляет найденные ошибки в файловой системе. Следовательно, в Linux данные операции выполняет утилита fsck , причем может работать с различными файловыми системами Linux операционных систем. Мы можем попробовать воспользоваться утилитой fsck /dev/sdc1 . В ответ от операционной системы мы получим следующее:

Как мы видим операционная система вернула в ответ на команду для работы с данным разделом, что данный раздел с монтирован и операция прервана. Аналогичную ситуацию мы будем наблюдать в операционной системе Windows, если мы будем пытаться рабочий раздел проверить на ошибки. Т.е возникнет следующая ситуация. Если мы будем проверять дополнительный логический диск, где не установлена операционная система Windows, то данный раздел на время проведения тестов будет отключен и будут идти проверки. А если мы попытаемся проверить основной раздел, куда установлена операционная система Windows, то операционная система не сможет запустить данную утилиту и попросит перезагрузиться для запуска данной утилиты. В нашем случае придется делать точно так же. Поэтому, чтобы проверить необходимо отключить (от монтировать раздел) и после уже этого запускать утилиту.

Из вывода можно заметить утилита пыталась запустить другую утилиту e2fsck , которая в данном случае отвечает за проверку файловых систем ext\ext2\ext3\ext4 . О чем достаточно подробно написано в описании данной утилиты. По сути fsck запускает утилиту ту, которая идет в пакете утилит для конкретной файловой системы. Бывает такое, что fsck не может определить тип файловой системы.

Для того, чтобы утилита все-таки проверила файловую систему, необходимо отмонтировать логический раздел. Воспользуемся командой umount /mnt .

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

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

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

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

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

Недавно у меня была повреждена файловая система XFS из-за сбоя питания. (Система CentOS 7). Система не загрузится должным образом.

Я загрузился с загрузочного компакт-диска и попытался xfs_repair , он сказал мне, чтобы смонтировать раздел, чтобы иметь дело с журналом.

Что я должен делать в этой ситуации? Что-то не так с моим спасательным компакт-диском (System Rescue CD, версия 4.7.1)? Есть ли какая-то другая процедура, которую я должен был использовать?

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

mount: mount / dev / mapper / centos-root в / mnt / centos-root не удалось: структура нуждается в очистке

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

Используя xfs_metadump и xfs_mdrestore , вы можете создать образ метаданных затронутого раздела и выполнить принудительное восстановление образа, а не самого раздела. Преимуществом этого является возможность увидеть ущерб, который приходит с принудительным ремонтом, прежде чем выполнять его на разделе.

Для этого вам понадобится приличный размер USB или внешний жесткий диск. Начните с установки USB-накопителя - мой USB был расположен по адресу /dev/sdb1 , ваш может быть назван по-другому.

После подключения запустите xfs_metadump для создания копии метаданных раздела на USB-накопителе - опять ваш уязвимый раздел может отличаться. В этом случае у меня был поврежденный корневой раздел, расположенный по адресу /dev/mapper/centos-root :

Затем вы захотите восстановить метаданные в изображение, чтобы мы могли выполнить восстановление и измерить ущерб.

Я обнаружил, что режим xfs_mdrestore восстановления недоступен, и вместо этого вам нужно находиться в режиме восстановления живого компакт-диска CentOS.

Наконец, мы можем выполнить ремонт изображения:

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

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

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

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


Проверка файловой системы на ошибки с помощью fsck на Linux

Некоторым системам необходим пароль root чтобы запустить fsck или других аналогичных утилит, когда не могут загрузить полностью ОС. В этом случае –стоит выполнить проверку диска загрузившись в single-user mode , либо – загрузившись с другого диска.

Сам Fsck команда взаимодействует с соответствующей файловой системой конкретных FSCK команд, созданной авторами файловой системы. Независимо от типа вашей файловой системы, Fsck как правило, имеет три режима работы:

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

Код выхода возвращается, когда несколько файловых систем которая проверяется побитовое ИЛИ (OR) для каждой файловой системы, которая проверяется.

Файловая система для конкретных проверок ищет сначала в /sbin, а затем в /etc/fs и /etc/, и, наконец в директориях, перечисленных в переменной PATH (среда переменного кружения).

Прочитайте мануал для конкретных страниц проверки, например, чтобы узнать больше о конкретных проверок для ext3 FSCK, выполните:

Опции FSCK.

Основные Опции.

-l

Блокировка целого дискового устройства эксклюзивным flock. Этот параметр может быть использован только с одного устройства (это означает, что -A и -l являются взаимоисключающими). Эта опция рекомендуется, когда несколько экземпляров FSCK выполняются в то же время. Параметр игнорируется, когда используется для нескольких устройств или для невращающихся дисков. Fsck не блокируется базовые устройства при выполнении проверки сложенных устройств (например, MD или DM); эта функция еще не реализована.

-s

Сериализация FSCK операций. Это отличная идея, если вы проверяете несколько файловых систем в интерактивном режиме. (Примечание. E2fsck работает в интерактивном режиме по умолчанию. Чтобы запустить e2fsck в не-интерактивном режиме, необходимо указать -p или -a, если вы хотите чтобы все ошибки исправлялись автоматически используйте опцию -n если вы не делаете.)

-t

Задает тип (ы) файловой системы которые должны быть проверены. Когда флаг -A, используется только файловые системы, которые соответствуют fslist проверяются. Fslist параметр разделенный запятыми список файловых систем и опционов спецификаторов. Если ни один из файловых систем в fslist не начинается с оператора отрицания (OR или !), то только те, которые перечислены файловые системы будут проверены.

Опции спецификаторы могут быть включены раздельными запятыми в fslist. Они должны иметь формат opts=fs-option. Если спецификатор присутствует, то только файловые системы, которые содержат FS-option в их опциях монтирования области /etc/fstab будут проверены. Если спецификатор используется с отрицанием, то только те файловые системы, которые не имеют FS-option в их опции монтирования области /etc/fstab будут проверены.

Например, если OPTS = ро появляется в fslist, то только файловые системы, перечисленные в/etc/fstab с возможностью ро будут проверены.

Как правило, тип файловой системы выводится с помощью функции поиска для filesys в файле /etc/fstab и используя соответствующую запись. Если тип не может быть выведен, и есть только одна файловая система в качестве аргумента для опции -t, Fsck будет использовать указанный тип файловой системы. Если этот тип не доступен, то тип по умолчанию файловая система (в настоящее время ext2) не используется.

-A

Поиск в файле /etc/fstab и программа попытаться проверить все файловые системы за один проход. Эта опция обычно используется из файла инициализации /etc/rc, вместо нескольких команд для проверки единой файловой системы.

Корневая файловая система будет сначала проверяется, если опция -P не указана (смотрите ниже). После этого файловые системы будут проверяться в порядке, установленном в поле fs_passno (в шестом)в файле /etc/fstab. Файловые системы со значением fs_passno 0 пропускаются и не проверяются вообще. Файловые системы со значением fs_passno больше нуля будут проверены в порядке, файловых систем ( Наименьшее число в fs_passno проверяется в первую очередь).

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

Таким образом, очень распространенная конфигурация в файле /etc/fstab для установки корневой файловой системы имеет значение fs_passno из 1 и установить все другие файловые системы имеют значение fs_passno 2. Это позволит запустить проверку Fsck для автоматического запуска файловой системы параллельно.

Системные администраторы могут не использовать эту конфигурацию, если они должны избежать многочисленных проверок файловой системы которые работают параллельно по некоторым причинам.

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

/etc/fstab опцию монтирования nofail могут быть использованы, чтобы пропустить в Fsck несуществующие устройства. Fsck также пропускает несуществующие устройства, которые имеют особый тип файловой системы автоматически.

-C [fd]

Показать завершения / индикаторы выполнения для этих проверок файловых систем (в настоящее время только для ext2 и ext3), которые поддерживают их. Fsck будет управлять проверкой файловой системы так, что только один из них будет отображать индикатор выполнения. С графическим интерфейсом пользователя можно указать дескриптор файла fd, в этом случае информация о ходе выполнения будет отправлена в дескриптор файла.

-M

Не проверять смонтированные файловые системы и вернуть код завершения 0, для смонтированных файловых систем.

-N

Ничего не делать, просто показывает, что должно быть сделано.

-P

Когда опция -A устанавливается, то fsck проверяет корневую файловую систему параллельно с другими файловыми системами. Это не очень безопасно, чтобы делать так, т.к если корневая файловая система находится под e2fsck, то исполняемый файл может быть поврежден!

Эта опция в основном предназначены для тех администраторов, которые не хотят перераспределить корневую файловую систему, чтобы быть маленькой и компактной (на самом деле правильное решение).

-R

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

-T

Не показывать название при запуске.

-V

Подробный вывод, в том числе всех команд конкретной файловой системы , которые выполняются.

Специальные параметры для файловой системы.

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

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

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

-a

Автоматическое восстановление файловой системы без каких-либо вопросов (используйте эту опцию с осторожностью). Обратите внимание, что e2fsck поддерживает -a только для обратной совместимости. Эта опция отображается на e2fsck-х с опцией -p, которая является безопасной в использовании, в отличие от опции -a.

-n

В частности, fsck.reiserfs не будет сообщать любые повреждения при использовании этих варианта.

fsck.minix браузер не поддерживает параметр -n вообще.

-r

Интерактивный ремонт файловой системы (спросит подтверждение).

Примечание: Как правило, плохая идея использовать эту опцию, если несколько FSCK в настоящее время работают параллельно. Также обратите внимание, что это поведение для E2fsck по умолчанию; он поддерживает эту опцию только для причин обратной совместимости.

-y

Для удобства – настроим сеть:

Готовые примеры.

Во-первых, файловая система должна быть демонтирована. Вы не можете восстановить его, пока он работает, но для начала перейдем в init 1:

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

fdisk -l

Далее, выполним проверку чтобы узнать тип файловой системы:

/dev/sda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (huge files)

Далее, демонтировать файловую систему, например, если это /home (/dev/sda3) файловая система введите команду:

Можно вывести, что можно выполнить для данной ФС:

Например, запустим проверку целостности ФС с исправлением всех ошибок в автоматическом режиме:

У меня данный раздел примонтирован, нужно его отмонтировать и выполнить заново данную команду:

Отмонтировали, теперь выполняем проверку:

Вот что получили:

Наконец, запустите FSCK на разделе, введите следующую команду:

Однако не забудьте указать тип файловой системы, используя опцию -t. Fsck по умолчанию предполагает, файловую систему ext2:

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

Если какие-либо файлы восстановлены, то они размещаются в /home/lost+found, FSCK команды.

Переходим (используем) на multiuser mode, выполнив:

Автоисправление файловая системы при обнаружении ошибок

Проверка всех файловых систем за один проход

Исключение проверки на смонтированной файловой системе

Например, выполнив команду

Определение типа файловой системы

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

Force fsck запуск каждый раз при загрузке

Избегать ремонта, но сообщать о проблемах на стандартный вывод с помощью опции -n

Использование FSCK с графическим интерфейсом

Для Debian/Ubuntu/Mint можно установить программу:

Читайте также: