Как проверить lvm на ошибки

Параметры fsck
Пример проверки диска на ошибки с помощью fsck
Запуск автоматической проверки и исправления найденных ошибок
Ручное добавление параметров в меню GRUB при загрузке ОС
Добавление параметров в меню GRUB с помощью утилиты grubby
Создание файла /forcefsck
Запуск проверки в ручном режиме
Использование загрузочного диска/flash для проверки файловой системы на ошибки
Проверка LVM-разделов с помощью утилиты fsck

В определенных случаях  (в результате сбоя или некорректного завершения работы)  на файловой системе могут накапливаться ошибки. В РЕД ОС для проверки файловой системы и исправления ошибок имеется утилита  fsck («file system consistency check»).

Инструмент fsck обладает следующим функционалом:

  • проверка файловой системы при возникновении проблем (не загружается система/поврежденные файлы) или в качестве профилактического обслуживания;

  • диагностика состояния внешних накопителей, таких как SD-карты или USB-накопители.

Базовый синтаксис соответствует следующему шаблону:

 fsck <опции> <файловая_система>

В качестве файловой системы может быть устройство, точка монтирования или раздел, в том числе LVM.

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

Параметры fsck

fsck –p – утилита автоматически исправит найденные ошибки.

Вывод аналогичен простой проверке.

fsck –с – проверка файловой системы на поврежденные сектора.

Для получения списка команд наберите fsck ––help или fsck –h.

Опция Описание
-a Устаревшая опция. Указывает исправлять все найденные ошибки без одобрения пользователя.
-r Применяется для файловых систем ext. Указывает fsck спрашивать пользователя перед исправлением каждой ошибки
-n Выполняет только проверку ФС, без исправления ошибок. Используется также для получения информации о ФС
-c Применяется для файловых систем ext3/4. Помечает все повреждённые блоки для исключения последующей записи в них
-f Принудительно проверяет ФС, даже если ФС исправна
-y Автоматически подтверждает запросы к пользователю
-b Задаёт адрес суперблока
-p Автоматически исправлять найденные ошибки. Заменяет устаревшую опцию -a
-A Проверяет все ФС
-С [<fd>] Показывает статус выполнения. Здесь fd – дескриптор файла при отображении через графический интерфейс
-l Блокирует устройство для исключительного доступа
-M Запрещает проверять примонтированные ФС
-N Показывает имитацию выполнения, без запуска реальной проверки
-P Проверять вместе с корневой ФС
-R Пропускает проверку корневой ФС. Может использоваться только совместно с опцией -A
-r [<fd>] Выводит статистику для каждого проверенного устройства
-T Не показывать заголовок при запуске
-t <тип> Задаёт ФС для проверки. Можно задавать несколько ФС, перечисляя через запятую
-V Выводит подробное описание выполняемых действий

Пример проверки диска на ошибки с помощью fsck

Запуск автоматической проверки и исправления найденных ошибок

Существует несколько способов запуска автоматической проверки на ошибки:

1. Ручное добавление параметров в меню GRUB при загрузке ОС.

2. Добавление параметров в меню GRUB с помощью утилиты grubby.

3. Создание файла /forcefsck.

1. Ручное добавление параметров в меню GRUB при загрузке ОС

Первый вариант проверки и  исправления ошибок на разделах жесткого диска.

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

fsck.mode=force fsck.repair=yes

в конец предпоследней строки.

Нажмите Ctrl+Х для запуска ОС с этими параметрами, во время запуска будет произведена проверка разделов диска, и при наличии ошибок произведено их исправление.

2. Добавление параметров в меню GRUB с помощью утилиты grubby

Существует еще один способ добавления параметров ядра для принудительной проверки файловой системы на ошибки и их исправления. Добавить параметры можно командой:

grubby --update-kernel /boot/vmlinuz-$(uname -r) --args="fsck.mode=force fsck.repair=yes"

Удалить установленные параметры можно следующей командой:

grubby --update-kernel /boot/vmlinuz-$(uname -r) --remove-args="fsck.mode=force fsck.repair=yes"

3. Создание файла /forcefsck

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

sudo touch /forcefsck

Команда sudo (после ввода пароля) предоставит права для создания с помощью touch пустого файла в корне диска /forcefsck, который послужит сигналом (флагом) для fsck, что нужно проверить диски. 

Останется только перезагрузить компьютер и fsck начнет проверять все жесткие диски, указанные в /etc/fstab.

Запуск проверки в ручном режиме

Следующий метод относится к проверке диска, когда операционная система загружена в режиме single mode.

1. Запустим ОС в single mode, для этого пропишите в меню загрузки grub параметр init=/bin/bash в конце строки, которая начинается на linux16, см. рисунок.

Также данная строка может начинаться с linuxefi, этот параметр характерен для систем с загрузкой в UEFI. Нажмите «ctrl+x» для запуска с этим параметром(init=/bin/bash).

2. Запустите проверку выполнив команду:

/usr/sbin/fsck -ACVfyv

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

Наглядное видео примера проверки диска на ошибки:

Использование загрузочного диска/flash для проверки файловой системы на ошибки.

Загрузившись в режим восстановления операционной системы РЕД ОС с помощью загрузочного диска или съемного накопителя с установленным образом операционной системы РЕД ОС. Выберите пункт: «Решение проблем» -> «Исправить установленную RED OS».

Система перезагрузится в режим восстановления. Введите «2» и нажмите 2 раза Enter. Так вы смонтируете операционную систему в режим «Только для чтения»

Для корректного отображения в терминале кириллических символов введите команду:

setfont cyr-sun16

Потом введите команду:

# сhroot /mnt/sysimage

После этого можете вводить fsck:

# fsck -ACVfyv

Если проверка завершится с такой ошибкой:

[путь_к_файловой_системе] is mounted

Введите:

umount [путь_к_файловой_системе]

И еще раз запустите утилиту fsck:

# fsck -ACVfyv
fsck from util-linux 2.30.2
…

Если система не выявит ошибок, то получится такой вывод:

[путь_к_файловой_системе] clean …

Чтобы выйти из режима восстановления, вы должны смонтировать все разделы, которые были отмонтированы командой umount, с помощью команды mount, нажать сочетание клавиш сtrl+d, а затем ввести команду reboot, которая перезапустит вашу операционную систему.

# reboot

По умолчанию, утилита fsck при проверке будет использовать разделы, указанные в /etc/fstab/, сформированные при установке операционной системы РЕД ОС.

Проверка LVM-разделов с помощью утилиты fsck

Перед проведением проверки необходимо найти устройство и размонтировать его.

Для просмотра всех подключенных устройств и проверки расположения диска выполните команду:

lsblk 

 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
 sda 8:0 0 20G 0 disk 
 ├─sda1 8:1 0 1G 0 part /boot
 └─sda2 8:2 0 19G 0 part 
 ├─ro_redos-root 253:0 0 17G 0 lvm /
 └─ro_redos-swap 253:1 0 2G 0 lvm [SWAP]
 sr0 11:0 1 4,3G 0 rom /run/media/user/redos-MUROM-7.3.1 x86_64

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

fsck -nf /dev/ro_redos/root 

 fsck из util-linux 2.37.3
 e2fsck 1.44.6 (5-Mar-2019)
 Warning! /dev/mapper/ro_redos-root is mounted.

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

umount <файловая_система>

Однако попытка выполнить данную процедуру на работающей ОС ни к чему не приведет.

umount /dev/ro_redos/root 

 umount: /: target is busy.

Также проблемой при попытке проверить LVM-разделы может быть и то, что они являются не активными. Для проверки следует использовать команду:

lvscan 

 ACTIVE            '/dev/ro_redos/swap' [2,00 GiB] inherit
 ACTIVE            '/dev/ro_redos/root' [<17,00 GiB] inherit

Для активации раздела служит команда:

vgchange –ay <раздел>

Таким образом, можно сделать вывод, что проверка LVM-разделов через консоль с использованием утилиты fsck невозможна. Но это не значит, что LVM-разделы совсем не подлежат проверке. Существует как минимум два способа, позволяющие провести диагностику LVM-разделов. 

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

А вторым — запуск утилиты fsck в live-сессии системы.

Очевидным плюсом при проверке дисковых пространств, в том числе LVM-разделов, через live-сессию является то, что разделы там по умолчанию являются не смонтированными. Поэтому проверка LVM-раздела будет выполнена с первого раза.

Дата последнего изменения: 18.01.2023

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

Thank you for reading this post, don’t forget to subscribe!

одна­жды поло­ма­лась фай­ло­вая систе­ма, ось не хоте­ла гру­зить­ся, пздц поду­ма­лось сна­ча­ла, но потом нача­ли вос­ста­нав­ли­вать. С обыч­ны­ми раз­де­ла­ми обыч­но все понят­но, запускаем:
fsck -y /dev/sdX1.

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

Под­клю­ча­ем любой линук­со­вый лайв образ, гру­зим­ся в rescue режи­ме и понеслась:
rescue:~# lvm pvscan
rescue:~# lvm vgscan
rescue:~# lvm lvchange -ay /dev/VolGroup0/LogVo0
rescue:~# lvm lvscan
ACTIVE ‘/dev/VolGroup0/LogVol0’ [100.0 GB]
inactive ‘/dev/VolGroup0/LogVol0’ [10.0 GB]
rescue:~# fsck -yfv /dev/VolGroup0/LogVol0
После завер­ше­ния про­вер­ки пере­за­гру­жа­ем сервер.

https://github.com/midnight47/

pvck can check LVM metadata, after that consistency is the job of the filesystem. LVM is only about volume management so it doesn’t need to care if the space constituting a particular extent is bad since higher level software catches those issues. LVM metadata only takes up the first (optionally also the last sector) of the physical volume anyways.

If just the first and last sectors of a reasonably large PV (such as you’d see in production) just happen to fail simultaneously, you basically have the sh*ttiest luck in the world since that’s so astronomically unlikely. Otherwise, if the admin knows multiple sectors of the drive have been failing, most people are alright with just filing such things as this under «hard drive failed permanently and needs to be replaced.»

If pvck returns an error, you can check to see if your LVM metadata is backed up in /etc/lvm somewhere. If it is you can do pvcreate specifying the backup copy to --restorefile

Syntax:

pvcreate --uuid "<UUID-of-target-PV>" --restorefile <Path-To-Metadata-Backup-File> <path-to-PV-block-device>

Example:

pvcreate --uuid "2VydVW-TNiN-fz9Y-ElRu-D6ie-tXLp-GrwvHz" --restorefile /etc/lvm/archive/vg_raid_00000-1085667159.vg /dev/sda2 

If the restore doesn’t work (for example, if the first sector is bad) you can re-do the above, but set --metadatacopies 2 (or you might just go straight to doing that) which will attempt to write the metadata to the first and last sectors on the PV. When pvscan does its thing on boot it will check both places and if it finds metadata it will verify them against a checksum. If the checksum fails on the first sector but succeeds on the last sector you’ll get a non-fatal error message.

Kind of manual and a pain, but then again this is part of the reason why people are excited to get a volume management redux with BTRFS. Most of the time it’s not really that much of an issue for the reasons derobert mentioned, and because the people who absolutely positively need to ensure continuity of data will usually do RAID and have a backup strategy.

Параметры fsck
Пример проверки диска на ошибки с помощью fsck
Запуск автоматической проверки и исправления найденных ошибок
Ручное добавление параметров в меню GRUB при загрузке ОС
Добавление параметров в меню GRUB с помощью утилиты grubby
Создание файла /forcefsck
Запуск проверки в ручном режиме
Использование загрузочного диска/flash для проверки файловой системы на ошибки
Проверка LVM-разделов с помощью утилиты fsck

В определенных случаях  (в результате сбоя или некорректного завершения работы)  на файловой системе могут накапливаться ошибки. В РЕД ОС для проверки файловой системы и исправления ошибок имеется утилита  fsck («file system consistency check»).

Инструмент fsck обладает следующим функционалом:

  • проверка файловой системы при возникновении проблем (не загружается система/поврежденные файлы) или в качестве профилактического обслуживания;

  • диагностика состояния внешних накопителей, таких как SD-карты или USB-накопители.

Базовый синтаксис соответствует следующему шаблону:

 fsck <опции> <файловая_система>

В качестве файловой системы может быть устройство, точка монтирования или раздел, в том числе LVM.

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

Параметры fsck

fsck –p – утилита автоматически исправит найденные ошибки.

Вывод аналогичен простой проверке.

fsck –с – проверка файловой системы на поврежденные сектора.

Для получения списка команд наберите fsck ––help или fsck –h.

Опция Описание
-a Устаревшая опция. Указывает исправлять все найденные ошибки без одобрения пользователя.
-r Применяется для файловых систем ext. Указывает fsck спрашивать пользователя перед исправлением каждой ошибки
-n Выполняет только проверку ФС, без исправления ошибок. Используется также для получения информации о ФС
-c Применяется для файловых систем ext3/4. Помечает все повреждённые блоки для исключения последующей записи в них
-f Принудительно проверяет ФС, даже если ФС исправна
-y Автоматически подтверждает запросы к пользователю
-b Задаёт адрес суперблока
-p Автоматически исправлять найденные ошибки. Заменяет устаревшую опцию -a
-A Проверяет все ФС
-С [<fd>] Показывает статус выполнения. Здесь fd – дескриптор файла при отображении через графический интерфейс
-l Блокирует устройство для исключительного доступа
-M Запрещает проверять примонтированные ФС
-N Показывает имитацию выполнения, без запуска реальной проверки
-P Проверять вместе с корневой ФС
-R Пропускает проверку корневой ФС. Может использоваться только совместно с опцией -A
-r [<fd>] Выводит статистику для каждого проверенного устройства
-T Не показывать заголовок при запуске
-t <тип> Задаёт ФС для проверки. Можно задавать несколько ФС, перечисляя через запятую
-V Выводит подробное описание выполняемых действий

Пример проверки диска на ошибки с помощью fsck

Запуск автоматической проверки и исправления найденных ошибок

Существует несколько способов запуска автоматической проверки на ошибки:

1. Ручное добавление параметров в меню GRUB при загрузке ОС.

2. Добавление параметров в меню GRUB с помощью утилиты grubby.

3. Создание файла /forcefsck.

1. Ручное добавление параметров в меню GRUB при загрузке ОС

Первый вариант проверки и  исправления ошибок на разделах жесткого диска.

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

fsck.mode=force fsck.repair=yes

в конец предпоследней строки.

Нажмите Ctrl+Х для запуска ОС с этими параметрами, во время запуска будет произведена проверка разделов диска, и при наличии ошибок произведено их исправление.

2. Добавление параметров в меню GRUB с помощью утилиты grubby

Существует еще один способ добавления параметров ядра для принудительной проверки файловой системы на ошибки и их исправления. Добавить параметры можно командой:

grubby --update-kernel /boot/vmlinuz-$(uname -r) --args="fsck.mode=force fsck.repair=yes"

Удалить установленные параметры можно следующей командой:

grubby --update-kernel /boot/vmlinuz-$(uname -r) --remove-args="fsck.mode=force fsck.repair=yes"

3. Создание файла /forcefsck

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

sudo touch /forcefsck

Команда sudo (после ввода пароля) предоставит права для создания с помощью touch пустого файла в корне диска /forcefsck, который послужит сигналом (флагом) для fsck, что нужно проверить диски. 

Останется только перезагрузить компьютер и fsck начнет проверять все жесткие диски, указанные в /etc/fstab.

Запуск проверки в ручном режиме

Следующий метод относится к проверке диска, когда операционная система загружена в режиме single mode.

1. Запустим ОС в single mode, для этого пропишите в меню загрузки grub параметр init=/bin/bash в конце строки, которая начинается на linux16, см. рисунок.

Также данная строка может начинаться с linuxefi, этот параметр характерен для систем с загрузкой в UEFI. Нажмите «ctrl+x» для запуска с этим параметром(init=/bin/bash).

2. Запустите проверку выполнив команду:

/usr/sbin/fsck -ACVfyv

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

Наглядное видео примера проверки диска на ошибки:

Использование загрузочного диска/flash для проверки файловой системы на ошибки.

Загрузившись в режим восстановления операционной системы РЕД ОС с помощью загрузочного диска или съемного накопителя с установленным образом операционной системы РЕД ОС. Выберите пункт: «Решение проблем» -> «Исправить установленную RED OS».

Система перезагрузится в режим восстановления. Введите «2» и нажмите 2 раза Enter. Так вы смонтируете операционную систему в режим «Только для чтения»

Для корректного отображения в терминале кириллических символов введите команду:

setfont cyr-sun16

Потом введите команду:

# сhroot /mnt/sysimage

После этого можете вводить fsck:

# fsck -ACVfyv

Если проверка завершится с такой ошибкой:

[путь_к_файловой_системе] is mounted

Введите:

umount [путь_к_файловой_системе]

И еще раз запустите утилиту fsck:

# fsck -ACVfyv
fsck from util-linux 2.30.2
…

Если система не выявит ошибок, то получится такой вывод:

[путь_к_файловой_системе] clean …

Чтобы выйти из режима восстановления, вы должны смонтировать все разделы, которые были отмонтированы командой umount, с помощью команды mount, нажать сочетание клавиш сtrl+d, а затем ввести команду reboot, которая перезапустит вашу операционную систему.

# reboot

По умолчанию, утилита fsck при проверке будет использовать разделы, указанные в /etc/fstab/, сформированные при установке операционной системы РЕД ОС.

Проверка LVM-разделов с помощью утилиты fsck

Перед проведением проверки необходимо найти устройство и размонтировать его.

Для просмотра всех подключенных устройств и проверки расположения диска выполните команду:

lsblk 

 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
 sda 8:0 0 20G 0 disk 
 ├─sda1 8:1 0 1G 0 part /boot
 └─sda2 8:2 0 19G 0 part 
 ├─ro_redos-root 253:0 0 17G 0 lvm /
 └─ro_redos-swap 253:1 0 2G 0 lvm [SWAP]
 sr0 11:0 1 4,3G 0 rom /run/media/user/redos-MUROM-7.3.1 x86_64

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

fsck -nf /dev/ro_redos/root 

 fsck из util-linux 2.37.3
 e2fsck 1.44.6 (5-Mar-2019)
 Warning! /dev/mapper/ro_redos-root is mounted.

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

umount <файловая_система>

Однако попытка выполнить данную процедуру на работающей ОС ни к чему не приведет.

umount /dev/ro_redos/root 

 umount: /: target is busy.

Также проблемой при попытке проверить LVM-разделы может быть и то, что они являются не активными. Для проверки следует использовать команду:

lvscan 

 ACTIVE            '/dev/ro_redos/swap' [2,00 GiB] inherit
 ACTIVE            '/dev/ro_redos/root' [<17,00 GiB] inherit

Для активации раздела служит команда:

vgchange –ay <раздел>

Таким образом, можно сделать вывод, что проверка LVM-разделов через консоль с использованием утилиты fsck невозможна. Но это не значит, что LVM-разделы совсем не подлежат проверке. Существует как минимум два способа, позволяющие провести диагностику LVM-разделов. 

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

А вторым — запуск утилиты fsck в live-сессии системы.

Очевидным плюсом при проверке дисковых пространств, в том числе LVM-разделов, через live-сессию является то, что разделы там по умолчанию являются не смонтированными. Поэтому проверка LVM-раздела будет выполнена с первого раза.

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

Проверка диска FSCK на LVM разделе

Часто бывает, что после аппаратного сбоя сервер не поднимается.
Причиной зачастую является поломанная ФС, с обычными разделами все
понятно, запускаем fsck -y /dev/sdX1, но что делать если у Вас раздел
LVM?
В данной ситуации необходимо подключить сам LVM раздел, а потом уже
начать его проверку. Если Вы точно знаете, что у Вас файловая система в
ext4, то можно запускать fsck.ext4.

Скачиваем образ Ubuntu и грузимся с него в редиме восстановления (rescue):

rescue:~

rescue:~

rescue:~

rescue:~

ACTIVE '/dev/VolGroup00/LogVol00' [133.85 GB] inherit

inactive '/dev/VolGroup00/LogVol01' [8.45 GB] inherit

rescue:~

После завершения проверки перезагружаем сервер.
Все!

Популярные сообщения из этого блога

Unbound — настройка кеширующего DNS-сервера

В релизе  FreeBSD 10.0   DNS -сервер BIND заменен на связку из кеширующего DNS- сервера Unbound и библиотеки LDNS . Разбираясь с нововведениями, решил заодно ознакомиться и с настройкой  Unbound .

Элементарная Cisco

Провайдер sh run sla monitor — состояние провайдера sh track sh run route IPSEC sh cry isakm sa — список сессий clear crypto isakm sa — почистить список сессии IPsec (сокращение от IP Security ) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP . Позволяет осуществлять подтверждение подлинности ( аутентификацию ), проверку целостности и/или шифрование IP-пакетов. Порты: Protocol: UDP, port 500 (for IKE, to manage encryption keys) Protocol: UDP, port 4500 (for IPSEC NAT-Traversal mode) Protocol: ESP, value 50 (for IPSEC) Protocol: AH, value 51 (for IPSEC)

Описываем зоны в Unbound

Как настроить Unbound мы уже разобрались в этой статье! Приступим к краткой описи наших зон!

Программа fsck (расшифровывается как File System Consistency Check) используется для проверки и восстановления одной или нескольких файловых систем Linux.

Эта проверка запускается автоматически во время загрузки при обнаружении несоответствий в файловой системе.

Также, при необходимости, она может быть запущена вручную.

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

В этой статье мы рассмотрим, как использовать команду ‘fsck’ или ‘e2fsck’ в Linux для восстановления поврежденной файловой системы.

🗂️ Что такое Ext2, Ext3 и Ext4 и как создавать и конвертировать файловые системы Linux

Содержание

  1. Примечание:
  2. Повреждение файловой системы EXT4
  3. Восстановление поврежденной файловой системы EXT4 и EXT3
  4. 2) Восстановление тома LVM с помощью fsck
  5. Заключение

Примечание:

Выполняйте fsck на немонтированной файловой системе, чтобы избежать повреждения данных в ФС.

Для больших файловых систем выполнение fsck может занять много времени в зависимости от скорости системы и размера диска.

Когда проверка файловой системы завершена, fsck возвращает один из следующих кодов завершения:

КОД ЗАВЕРШЕНИЯ ОПИСАНИЕ
0 Нет ошибок
1 Исправлены ошибки файловой системы
2 Система должна быть перезагружена
4 Ошибки файловой системы, оставленные без исправления
8 Операционная ошибка
16 Ошибка использования или синтаксиса
32 Проверка отменяется по запросу пользователя
128 Ошибка в общей библиотеке

Общий синтаксис:

fsck [option] [device or partition or mount point]

Повреждение файловой системы EXT4

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

Она удаляет случайно выбранные блоки метаданных файловой системы

Примечание: Пожалуйста, не тестируйте это на производственном сервере, так как это может сильно повредить ваши данные.

sudo umount /data

Повреждение файловой системы ext4.

sudo dd if=/dev/zero of=/dev/sdb1 bs=10000 skip=0 count=1

1+0 records in
1+0 records out
10000 bytes (10 kB, 9.8 KiB) copied, 0.00394663 s, 2.5 MB/s

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

sudo mount /data

mount: /data: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.

Восстановление поврежденной файловой системы EXT4 и EXT3

Вы можете восстановить поврежденную файловую систему ext3 или ext4 в работающей системе Linux. fsck работает как обертка для команд fsck.ext3 и fsck.ext4.

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

Шаг-1: Размонтируйте устройство, на котором вы хотите запустить fsck.

sudo umount /dev/sdb1

Шаг-2: Запустите fsck для восстановления файловой системы:

sudo fsck.ext4 -p /dev/sdb1

-p : Автоматически устранить все проблемы, которые могут быть безопасно устранены без вмешательства пользователя.

Если вышеуказанный вариант не устраняет проблему, выполните команду fsck в следующем формате.

sudo fsck.ext4 -fvy /dev/sdb1

e2fsck 1.45.6 (20-Mar-2020)
ext2fs_open2: Bad magic number in super-block
fsck.ext4: Superblock invalid, trying backup blocks...
Resize inode not valid.  Recreate? yes

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -65536 -65538 -(65541--65542) -(65546--65547) -(65549--65550) -(65555--65557)
.
.
Fix? yes

Free inodes count wrong for group #0 (8181, counted=8165).
Fix? yes

Free inodes count wrong (327669, counted=327653).
Fix? yes

Padding at end of inode bitmap is not set. Fix? yes


/dev/sdb1: ***** FILE SYSTEM WAS MODIFIED *****

          27 inodes used (0.01%, out of 327680)
           0 non-contiguous files (0.0%)
           0 non-contiguous directories (0.0%)
             # of inodes with ind/dind/tind blocks: 0/0/0
             Extent depth histogram: 19
       43294 blocks used (3.30%, out of 1310464)
           0 bad blocks
           0 large files

          16 regular files
           2 directories
           0 character device files
           0 block device files
           0 fifos
           0 links
           0 symbolic links (0 fast symbolic links)
           0 sockets
------------
          18 files

Шаг-3: Как только файловая система будет восстановлена, смонтируйте раздел.

sudo mount /dev/sdb1

2) Восстановление тома LVM с помощью fsck

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

Для восстановления LVM-раздела следуйте приведенной ниже процедуре:

При необходимости вы также можете восстановить/восстановить том lvm вместо его ремонта.

Шаг-1: Убедитесь, что конкретный том LVM находится в активном состоянии для запуска fsck.

Чтобы проверить состояние LVM, выполните:

sudo lvscan

  inactive          '/dev/myvg/vol01' [1.00 GiB] inherit
  ACTIVE            '/dev/rhel/swap' [2.07 GiB] inherit
  ACTIVE            '/dev/rhel/root' [<26.93 GiB] inherit

Если он “inactive“, активируйте его, выполнив следующую команду.

sudo lvchange -ay /dev/myvg/vol01 -v

  Activating logical volume myvg/vol01.
  activation/volume_list configuration setting not defined: Checking only host tags for myvg/vol01.
  Creating myvg-vol01
  Loading table for myvg-vol01 (253:2).
  Resuming myvg-vol01 (253:2).

Шаг-2: Размонтируйте устройство или файловую систему, на которой вы хотите запустить fsck.

sudo umount /dev/myvg/vol01

Шаг-3: Запустите fsck для восстановления файловой системы.

Для запуска fsck необходимо ввести путь к LVM-тому, а не к реальному физическому разделу.

sudo fsck.ext4 -fvy /dev/myvg/vol01

e2fsck 1.45.6 (20-Mar-2020)
/dev/myvg/vol01: clean, 24/65536 files, 14094/262144 blocks
  • -f : Принудительная проверка, даже если файловая система кажется чистой.
  • -y : Предполагать ответ `yes’ на все вопросы; позволяет использовать e2fsck неинтерактивно.
  • -v : Подробный режим

Шаг-4: Как только файловая система будет восстановлена, смонтируйте раздел.

sudo mount /apps

Заключение

В этом руководстве мы показали вам, как восстановить поврежденную файловую систему EXT4 в Linux.

Вы можете использовать ту же процедуру для EXT3 и других файловых систем.

Также мы показали, как запустить e2fsck на томах LVM.

Если у вас есть вопросы или замечания, не стесняйтесь оставлять комментарии.

см. также:

  • 🐧 Как принудительно выполнить fsck при перезагрузке системы
  • #️⃣ Как добавить зашифрованный жесткий диск на Linux
  • 🛑 Команды Linux, которые вы никогда не должны запускать в своей системе
  • 🐧 Советы по обеспечению безопасности сервера CentOS – часть 1
  • 🐧 Проверка файловой системы Linux на наличие ошибок: команда FSCK с примерами
  • 🐧 Как зашифровать каталоги с помощью eCryptfs на Linux

pvck can check LVM metadata, after that consistency is the job of the filesystem. LVM is only about volume management so it doesn’t need to care if the space constituting a particular extent is bad since higher level software catches those issues. LVM metadata only takes up the first (optionally also the last sector) of the physical volume anyways.

If just the first and last sectors of a reasonably large PV (such as you’d see in production) just happen to fail simultaneously, you basically have the sh*ttiest luck in the world since that’s so astronomically unlikely. Otherwise, if the admin knows multiple sectors of the drive have been failing, most people are alright with just filing such things as this under «hard drive failed permanently and needs to be replaced.»

If pvck returns an error, you can check to see if your LVM metadata is backed up in /etc/lvm somewhere. If it is you can do pvcreate specifying the backup copy to --restorefile

Syntax:

pvcreate --uuid "<UUID-of-target-PV>" --restorefile <Path-To-Metadata-Backup-File> <path-to-PV-block-device>

Example:

pvcreate --uuid "2VydVW-TNiN-fz9Y-ElRu-D6ie-tXLp-GrwvHz" --restorefile /etc/lvm/archive/vg_raid_00000-1085667159.vg /dev/sda2 

If the restore doesn’t work (for example, if the first sector is bad) you can re-do the above, but set --metadatacopies 2 (or you might just go straight to doing that) which will attempt to write the metadata to the first and last sectors on the PV. When pvscan does its thing on boot it will check both places and if it finds metadata it will verify them against a checksum. If the checksum fails on the first sector but succeeds on the last sector you’ll get a non-fatal error message.

Kind of manual and a pain, but then again this is part of the reason why people are excited to get a volume management redux with BTRFS. Most of the time it’s not really that much of an issue for the reasons derobert mentioned, and because the people who absolutely positively need to ensure continuity of data will usually do RAID and have a backup strategy.

You can use LVM tools to troubleshoot a variety of issues in LVM volumes and groups.

16.1. Gathering diagnostic data on LVM

If an LVM command is not working as expected, you can gather diagnostics in the following ways.

Procedure

  • Use the following methods to gather different kinds of diagnostic data:

    • Add the -v argument to any LVM command to increase the verbosity level of the command output. Verbosity can be further increased by adding additional v’s. A maximum of four such v’s is allowed, for example, -vvvv.
    • In the log section of the /etc/lvm/lvm.conf configuration file, increase the value of the level option. This causes LVM to provide more details in the system log.
    • If the problem is related to the logical volume activation, enable LVM to log messages during the activation:

      1. Set the activation = 1 option in the log section of the /etc/lvm/lvm.conf configuration file.
      2. Execute the LVM command with the -vvvv option.
      3. Examine the command output.
      4. Reset the activation option to 0.

        If you do not reset the option to 0, the system might become unresponsive during low memory situations.

    • Display an information dump for diagnostic purposes:

      # lvmdump
    • Display additional system information:

      # lvs -v
      # pvs --all
      # dmsetup info --columns
    • Examine the last backup of the LVM metadata in the /etc/lvm/backup/ directory and archived versions in the /etc/lvm/archive/ directory.
    • Check the current configuration information:

      # lvmconfig
    • Check the /run/lvm/hints cache file for a record of which devices have physical volumes on them.

Additional resources

  • lvmdump(8) man page

16.2. Displaying information on failed LVM devices

You can display information about a failed LVM volume that can help you determine why the volume failed.

Procedure

  • Display the failed volumes using the vgs or lvs utility.

    Example 16.1. Failed volume groups

    In this example, one of the devices that made up the volume group myvg failed. The volume group is unusable but you can see information about the failed device.

    # vgs --options +devices
     /dev/vdb1: open failed: No such device or address
     /dev/vdb1: open failed: No such device or address
      WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s.
      WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1).
      WARNING: Couldn't find all devices for LV myvg/mylv while checking used and assumed devices.
    
    VG    #PV #LV #SN Attr   VSize  VFree  Devices
    myvg   2   2   0 wz-pn- <3.64t <3.60t [unknown](0)
    myvg   2   2   0 wz-pn- <3.64t <3.60t [unknown](5120),/dev/vdb1(0)

    Example 16.2. Failed logical volume

    In this example, one of the devices failed due to which the logical volume in the volume group failed. The command output shows the failed logical volumes.

    # lvs --all --options +devices
    
      /dev/vdb1: open failed: No such device or address
      /dev/vdb1: open failed: No such device or address
      WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s.
      WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1).
      WARNING: Couldn't find all devices for LV myvg/mylv while checking used and assumed devices.
    
      LV    VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
      mylv myvg -wi-a---p- 20.00g                                                     [unknown](0)                                                 [unknown](5120),/dev/sdc1(0)

    Example 16.3. Failed leg of a mirrored logical volume

    The following examples show the command output from the vgs and lvs utilities when a leg of a mirrored logical volume has failed.

    # vgs --all --options +devices
    
      VG    #PV #LV #SN Attr   VSize VFree Devices
      corey 4 4 0 rz-pnc 1.58T 1.34T my_mirror_mimage_0(0),my_mirror_mimage_1(0)
      corey 4 4 0 rz-pnc 1.58T 1.34T /dev/sdd1(0)
      corey 4 4 0 rz-pnc 1.58T 1.34T unknown device(0)
      corey 4 4 0 rz-pnc 1.58T 1.34T /dev/sdb1(0)
    # lvs --all --options +devices
    
      LV                   VG    Attr   LSize   Origin Snap%  Move Log            Copy%  Devices
      my_mirror corey mwi-a- 120.00G my_mirror_mlog 1.95 my_mirror_mimage_0(0),my_mirror_mimage_1(0)
      [my_mirror_mimage_0] corey iwi-ao 120.00G unknown device(0)
      [my_mirror_mimage_1] corey iwi-ao 120.00G /dev/sdb1(0)
      [my_mirror_mlog] corey lwi-ao 4.00M /dev/sdd1(0)

16.3. Removing lost LVM physical volumes from a volume group

If a physical volume fails, you can activate the remaining physical volumes in the volume group and remove all the logical volumes that used that physical volume from the volume group.

Procedure

  1. Activate the remaining physical volumes in the volume group:

    # vgchange --activate y --partial myvg
  2. Check which logical volumes will be removed:

    # vgreduce --removemissing --test myvg
  3. Remove all the logical volumes that used the lost physical volume from the volume group:

    # vgreduce --removemissing --force myvg
  4. Optional: If you accidentally removed logical volumes that you wanted to keep, you can reverse the vgreduce operation:

    # vgcfgrestore myvg

    If you remove a thin pool, LVM cannot reverse the operation.

16.4. Finding the metadata of a missing LVM physical volume

If the volume group’s metadata area of a physical volume is accidentally overwritten or otherwise destroyed, you get an error message indicating that the metadata area is incorrect, or that the system was unable to find a physical volume with a particular UUID.

This procedure finds the latest archived metadata of a physical volume that is missing or corrupted.

Procedure

  1. Find the archived metadata file of the volume group that contains the physical volume. The archived metadata files are located at the /etc/lvm/archive/volume-group-name_backup-number.vg path:

    # cat /etc/lvm/archive/myvg_00000-1248998876.vg

    Replace 00000-1248998876 with the backup-number. Select the last known valid metadata file, which has the highest number for the volume group.

  2. Find the UUID of the physical volume. Use one of the following methods.

    • List the logical volumes:

      # lvs --all --options +devices
      
        Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
    • Examine the archived metadata file. Find the UUID as the value labeled id = in the physical_volumes section of the volume group configuration.
    • Deactivate the volume group using the --partial option:

      # vgchange --activate n --partial myvg
      
        PARTIAL MODE. Incomplete logical volumes will be processed.
        WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s.
        WARNING: VG myvg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/vdb1).
        0 logical volume(s) in volume group "myvg" now active

16.5. Restoring metadata on an LVM physical volume

This procedure restores metadata on a physical volume that is either corrupted or replaced with a new device. You might be able to recover the data from the physical volume by rewriting the metadata area on the physical volume.

Do not attempt this procedure on a working LVM logical volume. You will lose your data if you specify the incorrect UUID.

Prerequisites

  • You have identified the metadata of the missing physical volume. For details, see Finding the metadata of a missing LVM physical volume.

Procedure

  1. Restore the metadata on the physical volume:

    # pvcreate --uuid physical-volume-uuid 
               --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg 
               block-device

    The command overwrites only the LVM metadata areas and does not affect the existing data areas.

    Example 16.4. Restoring a physical volume on /dev/vdb1

    The following example labels the /dev/vdb1 device as a physical volume with the following properties:

    • The UUID of FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk
    • The metadata information contained in VG_00050.vg, which is the most recent good archived metadata for the volume group
    # pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" 
               --restorefile /etc/lvm/archive/VG_00050.vg 
               /dev/vdb1
    
      ...
      Physical volume "/dev/vdb1" successfully created
  2. Restore the metadata of the volume group:

    # vgcfgrestore myvg
    
      Restored volume group myvg
  3. Display the logical volumes on the volume group:

    # lvs --all --options +devices myvg

    The logical volumes are currently inactive. For example:

      LV     VG   Attr   LSize   Origin Snap%  Move Log Copy%  Devices
      mylv myvg   -wi--- 300.00G                               /dev/vdb1 (0),/dev/vdb1(0)
      mylv myvg   -wi--- 300.00G                               /dev/vdb1 (34728),/dev/vdb1(0)
  4. If the segment type of the logical volumes is RAID, resynchronize the logical volumes:

    # lvchange --resync myvg/mylv
  5. Activate the logical volumes:

    # lvchange --activate y myvg/mylv
  6. If the on-disk LVM metadata takes at least as much space as what overrode it, this procedure can recover the physical volume. If what overrode the metadata went past the metadata area, the data on the volume may have been affected. You might be able to use the fsck command to recover that data.

Verification steps

  • Display the active logical volumes:

    # lvs --all --options +devices
    
      LV     VG   Attr   LSize   Origin Snap%  Move Log Copy%  Devices
     mylv myvg   -wi--- 300.00G                               /dev/vdb1 (0),/dev/vdb1(0)
     mylv myvg   -wi--- 300.00G                               /dev/vdb1 (34728),/dev/vdb1(0)

16.6. Rounding errors in LVM output

LVM commands that report the space usage in volume groups round the reported number to 2 decimal places to provide human-readable output. This includes the vgdisplay and vgs utilities.

As a result of the rounding, the reported value of free space might be larger than what the physical extents on the volume group provide. If you attempt to create a logical volume the size of the reported free space, you might get the following error:

Insufficient free extents

To work around the error, you must examine the number of free physical extents on the volume group, which is the accurate value of free space. You can then use the number of extents to create the logical volume successfully.

16.7. Preventing the rounding error when creating an LVM volume

When creating an LVM logical volume, you can specify the number of logical extents of the logical volume to avoid rounding error.

Procedure

  1. Find the number of free physical extents in the volume group:

    # vgdisplay myvg

    Example 16.5. Free extents in a volume group

    For example, the following volume group has 8780 free physical extents:

    --- Volume group ---
     VG Name               myvg
     System ID
     Format                lvm2
     Metadata Areas        4
     Metadata Sequence No  6
     VG Access             read/write
    [...]
    Free  PE / Size       8780 / 34.30 GB
  2. Create the logical volume. Enter the volume size in extents rather than bytes.

    Example 16.6. Creating a logical volume by specifying the number of extents

    # lvcreate --extents 8780 --name mylv myvg

    Example 16.7. Creating a logical volume to occupy all the remaining space

    Alternatively, you can extend the logical volume to use a percentage of the remaining free space in the volume group. For example:

    # lvcreate --extents 100%FREE --name mylv myvg

Verification steps

  • Check the number of extents that the volume group now uses:

    # vgs --options +vg_free_count,vg_extent_count
    
      VG     #PV #LV #SN  Attr   VSize   VFree  Free  #Ext
      myvg   2   1   0   wz--n- 34.30G    0    0     8780

16.8. Troubleshooting LVM RAID

You can troubleshoot various issues in LVM RAID devices to correct data errors, recover devices, or replace failed devices.

16.8.1. Checking data coherency in a RAID logical volume (RAID scrubbing)

LVM provides scrubbing support for RAID logical volumes. RAID scrubbing is the process of reading all the data and parity blocks in an array and checking to see whether they are coherent.

Procedure

  1. Optional: Limit the I/O bandwidth that the scrubbing process uses.

    When you perform a RAID scrubbing operation, the background I/O required by the sync operations can crowd out other I/O to LVM devices, such as updates to volume group metadata. This might cause the other LVM operations to slow down. You can control the rate of the scrubbing operation by implementing recovery throttling.

    Add the following options to the lvchange --syncaction commands in the next steps:

    --maxrecoveryrate Rate[bBsSkKmMgG]
    Sets the maximum recovery rate so that the operation does crowd out nominal I/O operations. Setting the recovery rate to 0 means that the operation is unbounded.
    --minrecoveryrate Rate[bBsSkKmMgG]
    Sets the minimum recovery rate to ensure that I/O for sync operations achieves a minimum throughput, even when heavy nominal I/O is present.

    Specify the Rate value as an amount per second for each device in the array. If you provide no suffix, the options assume kiB per second per device.

  2. Display the number of discrepancies in the array, without repairing them:

    # lvchange --syncaction check vg/raid_lv
  3. Correct the discrepancies in the array:

    # lvchange --syncaction repair vg/raid_lv

    The lvchange --syncaction repair operation does not perform the same function as the lvconvert --repair operation:

    • The lvchange --syncaction repair operation initiates a background synchronization operation on the array.
    • The lvconvert --repair operation repairs or replaces failed devices in a mirror or RAID logical volume.
  4. Optional: Display information about the scrubbing operation:

    # lvs -o +raid_sync_action,raid_mismatch_count vg/lv
    • The raid_sync_action field displays the current synchronization operation that the RAID volume is performing. It can be one of the following values:

      idle
      All sync operations complete (doing nothing)
      resync
      Initializing an array or recovering after a machine failure
      recover
      Replacing a device in the array
      check
      Looking for array inconsistencies
      repair
      Looking for and repairing inconsistencies
    • The raid_mismatch_count field displays the number of discrepancies found during a check operation.
    • The Cpy%Sync field displays the progress of the sync operations.
    • The lv_attr field provides additional indicators. Bit 9 of this field displays the health of the logical volume, and it supports the following indicators:

      • m (mismatches) indicates that there are discrepancies in a RAID logical volume. This character is shown after a scrubbing operation has detected that portions of the RAID are not coherent.
      • r (refresh) indicates that a device in a RAID array has suffered a failure and the kernel regards it as failed, even though LVM can read the device label and considers the device to be operational. Refresh the logical volume to notify the kernel that the device is now available, or replace the device if you suspect that it failed.

Additional resources

  • For more information, see the lvchange(8) and lvmraid(7) man pages.

16.8.2. Failed devices in LVM RAID

RAID is not like traditional LVM mirroring. LVM mirroring required failed devices to be removed or the mirrored logical volume would hang. RAID arrays can keep on running with failed devices. In fact, for RAID types other than RAID1, removing a device would mean converting to a lower level RAID (for example, from RAID6 to RAID5, or from RAID4 or RAID5 to RAID0).

Therefore, rather than removing a failed device unconditionally and potentially allocating a replacement, LVM allows you to replace a failed device in a RAID volume in a one-step solution by using the --repair argument of the lvconvert command.

16.8.3. Recovering a failed RAID device in a logical volume

If the LVM RAID device failure is a transient failure or you are able to repair the device that failed, you can initiate recovery of the failed device.

Prerequisites

  • The previously failed device is now working.

Procedure

  • Refresh the logical volume that contains the RAID device:

    # lvchange --refresh my_vg/my_lv

Verification steps

  • Examine the logical volume with the recovered device:

    # lvs --all --options name,devices,lv_attr,lv_health_status my_vg

16.8.4. Replacing a failed RAID device in a logical volume

This procedure replaces a failed device that serves as a physical volume in an LVM RAID logical volume.

Prerequisites

  • The volume group includes a physical volume that provides enough free capacity to replace the failed device.

    If no physical volume with sufficient free extents is available on the volume group, add a new, sufficiently large physical volume using the vgextend utility.

Procedure

  1. In the following example, a RAID logical volume is laid out as follows:

    # lvs --all --options name,copy_percent,devices my_vg
    
      LV               Cpy%Sync Devices
      my_lv            100.00   my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
      [my_lv_rimage_0]          /dev/sde1(1)
      [my_lv_rimage_1]          /dev/sdc1(1)
      [my_lv_rimage_2]          /dev/sdd1(1)
      [my_lv_rmeta_0]           /dev/sde1(0)
      [my_lv_rmeta_1]           /dev/sdc1(0)
      [my_lv_rmeta_2]           /dev/sdd1(0)
  2. If the /dev/sdc device fails, the output of the lvs command is as follows:

    # lvs --all --options name,copy_percent,devices my_vg
    
      /dev/sdc: open failed: No such device or address
      Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee.
      WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices.
      WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices.
      LV               Cpy%Sync Devices
      my_lv            100.00   my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
      [my_lv_rimage_0]          /dev/sde1(1)
      [my_lv_rimage_1]          [unknown](1)
      [my_lv_rimage_2]          /dev/sdd1(1)
      [my_lv_rmeta_0]           /dev/sde1(0)
      [my_lv_rmeta_1]           [unknown](0)
      [my_lv_rmeta_2]           /dev/sdd1(0)
  3. Replace the failed device and display the logical volume:

    # lvconvert --repair my_vg/my_lv
    
      /dev/sdc: open failed: No such device or address
      Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee.
      WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices.
      WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices.
    Attempt to replace failed RAID images (requires full device resync)? [y/n]: y
      Faulty devices in my_vg/my_lv successfully replaced.

    Optional: To manually specify the physical volume that replaces the failed device, add the physical volume at the end of the command:

    # lvconvert --repair my_vg/my_lv replacement_pv
  4. Examine the logical volume with the replacement:

    # lvs --all --options name,copy_percent,devices my_vg
    
      /dev/sdc: open failed: No such device or address
      /dev/sdc1: open failed: No such device or address
      Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee.
      LV               Cpy%Sync Devices
      my_lv            43.79    my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
      [my_lv_rimage_0]          /dev/sde1(1)
      [my_lv_rimage_1]          /dev/sdb1(1)
      [my_lv_rimage_2]          /dev/sdd1(1)
      [my_lv_rmeta_0]           /dev/sde1(0)
      [my_lv_rmeta_1]           /dev/sdb1(0)
      [my_lv_rmeta_2]           /dev/sdd1(0)

    Until you remove the failed device from the volume group, LVM utilities still indicate that LVM cannot find the failed device.

  5. Remove the failed device from the volume group:

    # vgreduce --removemissing VG

16.9. Troubleshooting duplicate physical volume warnings for multipathed LVM devices

When using LVM with multipathed storage, LVM commands that list a volume group or logical volume might display messages such as the following:

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/dm-5 not /dev/sdd
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowerb not /dev/sde
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sddlmab not /dev/sdf

You can troubleshoot these warnings to understand why LVM displays them, or to hide the warnings.

16.9.1. Root cause of duplicate PV warnings

When a multipath software such as Device Mapper Multipath (DM Multipath), EMC PowerPath, or Hitachi Dynamic Link Manager (HDLM) manages storage devices on the system, each path to a particular logical unit (LUN) is registered as a different SCSI device.

The multipath software then creates a new device that maps to those individual paths. Because each LUN has multiple device nodes in the /dev directory that point to the same underlying data, all the device nodes contain the same LVM metadata.

Table 16.1. Example device mappings in different multipath software

Multipath software SCSI paths to a LUN Multipath device mapping to paths

DM Multipath

/dev/sdb and /dev/sdc

/dev/mapper/mpath1 or /dev/mapper/mpatha

EMC PowerPath

/dev/emcpowera

HDLM

/dev/sddlmab

As a result of the multiple device nodes, LVM tools find the same metadata multiple times and report them as duplicates.

16.9.2. Cases of duplicate PV warnings

LVM displays the duplicate PV warnings in either of the following cases:

Single paths to the same device

The two devices displayed in the output are both single paths to the same device.

The following example shows a duplicate PV warning in which the duplicate devices are both single paths to the same device.

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sdd not /dev/sdf

If you list the current DM Multipath topology using the multipath -ll command, you can find both /dev/sdd and /dev/sdf under the same multipath map.

These duplicate messages are only warnings and do not mean that the LVM operation has failed. Rather, they are alerting you that LVM uses only one of the devices as a physical volume and ignores the others.

If the messages indicate that LVM chooses the incorrect device or if the warnings are disruptive to users, you can apply a filter. The filter configures LVM to search only the necessary devices for physical volumes, and to leave out any underlying paths to multipath devices. As a result, the warnings no longer appear.

Multipath maps

The two devices displayed in the output are both multipath maps.

The following examples show a duplicate PV warning for two devices that are both multipath maps. The duplicate physical volumes are located on two different devices rather than on two different paths to the same device.

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/mapper/mpatha not /dev/mapper/mpathc

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowera not /dev/emcpowerh

This situation is more serious than duplicate warnings for devices that are both single paths to the same device. These warnings often mean that the machine is accessing devices that it should not access: for example, LUN clones or mirrors.

Unless you clearly know which devices you should remove from the machine, this situation might be unrecoverable. Red Hat recommends that you contact Red Hat Technical Support to address this issue.

16.9.3. Example LVM device filters that prevent duplicate PV warnings

The following examples show LVM device filters that avoid the duplicate physical volume warnings that are caused by multiple storage paths to a single logical unit (LUN).

The filter that you configure must include all devices that LVM needs to be check for metadata, such as the local hard drive with the root volume group on it and any multipathed devices. By rejecting the underlying paths to a multipath device (such as /dev/sdb, /dev/sdd, and so on), you can avoid these duplicate PV warnings, because LVM finds each unique metadata area once on the multipath device itself.

  • This filter accepts the second partition on the first hard drive and any DM Multipath devices, but rejects everything else:

    filter = [ "a|/dev/sda2$|", "a|/dev/mapper/mpath.*|", "r|.*|" ]
  • This filter accepts all HP SmartArray controllers and any EMC PowerPath devices:

    filter = [ "a|/dev/cciss/.*|", "a|/dev/emcpower.*|", "r|.*|" ]
  • This filter accepts any partitions on the first IDE drive and any multipath devices:

    filter = [ "a|/dev/hda.*|", "a|/dev/mapper/mpath.*|", "r|.*|" ]

16.9.4. Applying an LVM device filter configuration

This procedure changes the configuration of the LVM device filter, which controls the devices that LVM scans.

Prerequisites

  • Prepare the device filter pattern that you want to use.

Procedure

  1. Test your device filter pattern without modifying the /etc/lvm/lvm.conf file.

    Use an LVM command with the --config 'devices{ filter = [ your device filter pattern ] }' option. For example:

    # lvs --config 'devices{ filter = [ "a|/dev/emcpower.*|", "r|.*|" ] }'
  2. Edit the filter option in the /etc/lvm/lvm.conf configuration file to use your new device filter pattern.
  3. Check that no physical volumes or volume groups that you want to use are missing with the new configuration:

    # pvscan
    # vgscan
  4. Rebuild the initramfs file system so that LVM scans only the necessary devices upon reboot:

    # dracut --force --verbose

16.9.5. Additional resources

  • Limiting LVM device visibility and usage
  • The LVM device filter

To check the LVM it is done with the following steps.

First we can see our drive layout with lsblk:

# lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                    8:0    0    20G  0 disk  
└─sda1                 8:1    0    20G  0 part  
  └─xubuntu--vg-root 253:0    0    19G  0 lvm   / 
sr0                   11:0    1  1024M  0 rom   

as we can see the LVM is named xubuntu--vg-root, but we cannot run fsck on this name as it will not find it. We need to get the whole name. To do this we are going to run the lvm lvscan command to get the LV name so we can run fsck on the LVM.

The following commands should be ran as sudo or as a root user.

# lvscan
  inactive          '/dev/xubuntu-vg/root' [<19.04 GiB] inherit
  inactive          '/dev/xubuntu-vg/swap_1' [980.00 MiB] inherit

As we can see our name to check is /dev/xubuntu-vg/root so we should be able to run fsck on that name

If the /dev/xubuntu-vg/root is not ACTIVE, we need to make it active so that we can run the check on it

lvchange -ay /dev/xubuntu-vg/root

Now it should look like this:

# lvscan
  ACTIVE            '/dev/xubuntu-vg/root' [<19.04 GiB] inherit
  inactive          '/dev/xubuntu-vg/swap_1' [980.00 MiB] inherit

Now we can run the fsck on the LVM volume.

fsck /dev/xubuntu-vg/root

or to run a forced check with assume yes

fsck -fy /dev/xubuntu-vg/root

Adding a screen shot since VirtualBox will not let me copy and paste.

enter image description here

Hope this helps!

Добрый день,

Имеется Ubuntu Server и массив LVM2 на трех HDD: 2.0, 1.5, 0.5 ТБ. На каждом из них файловая система XFS. Посыпался один из жестких дисков (тот что на 2.0ТБ). Доступ к массиву еще есть, но примерно 10%-15% файлов уже недоступны. Чтение 80% файлов, существенно медленнее чем ранее (килобайты в секунду), оставшиеся читаются на прежней скорости. Запустить ни long ни short тесты через SMART уже не могу, тесты завершаются с ошибкой не запустившись.

Судя по информации от SMART, диск находится в предсмертном состоянии (1265 bad-блоков на текущий момент).

У меня вопросы:
1) Как можно проверить логическую целостность самого LVM2 массива? Есть утилиты типа fsck для него? vgch не работает, тут же завершается без каких-либо ошибок. xfs_check, xfs_repair тоже выдали что-то несуразное и проверять не стали.
2) Как проверить целостность файловых систем входящих в массив? Для облегчения процесса я купил hdd объемом 4ТБ и сделал pvmove
для дисков 1.5ТБ и 0.5ТБ. Процесс прошел без ошибок. Делать тоже самое для битого опсаюсь-чтобы не отказало все окончательно.
3) Можно ли проверить на бэдблоки в моем случае и купировать такие файлы? Объясняю процесс копирования через mc выглядит так: копируется до проблемного файла: выводит сообщение от ОС об ошибке, если нажать «Пропустить все» — то LVM массив размонтируется, и обратно монтировать приходится вручную. Если нажать «Пропустить» то это приходиться делать для каждого из скольки-то миллионов файлов. Вкупе с крайне медленным чтением- это уже заняло у меня несколько дней. Обычный файловый проводник при открытии папки долго думает, потом вылетает с ошибкой ввода-вывода, после чего массив размонтируется.
4) Безопасно ли сделать pvmove не слетит ли операция при первом же встреченном бэдблоке, оставив массив в промежуточном состоянии?

У меня есть подозрение что посыпавшиеся участки пришлись на область метаданных диска, и исправив эту проблему я исправлю проблему доступа к файлам хотя-бы для того чтобы забрать все необходимое с него. Полагаю что выполнять pvmove c носителя, расположение bad-блоков которого уже заранее известно -будет безопаснее, чем на читая прямо по битым участкам.

sudo xfs_check /dev/Storage/StorageDrive
ERROR: The filesystem has valuable metadata changes in a log which needs to
be replayed.  Mount the filesystem to replay the log, and unmount it before
re-running xfs_check.  If you are unable to mount the filesystem, then use
the xfs_repair -L option to destroy the log and attempt a repair.
Note that destroying the log may cause corruption — please attempt a mount
of the filesystem before doing this.
localroot@localroot-System-Product-Name:~$

——————————————————————————————-
localroot@localroot-System-Product-Name:~$ sudo xfs_repair /dev/Storage/StorageDrive
Phase 1 — find and verify superblock…
Фаза 2 — использование внутреннего журнала
        — zero log…
ERROR: The filesystem has valuable metadata changes in a log which needs to
be replayed.  Mount the filesystem to replay the log, and unmount it before
re-running xfs_repair.  If you are unable to mount the filesystem, then use
the -L option to destroy the log and attempt a repair.
Note that destroying the log may cause corruption — please attempt a mount
of the filesystem before doing this.
localroot@localroot-System-Product-Name:~$

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

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

Для проверки разделов жесткого диска рекомендуем использовать утилиту FSCK (file system consistency check), поскольку утилита FSCK предустановленна на большинстве операционных систем семейства Linux.

Важно! Запуск и выполнение FSCK на смонтированной файловой системе может привести к повреждению данных, поэтому используйте данный материал на свой страх и риск. Автор не несет ответственности за любой ущерб, который вы можете причинить.

Для того, чтобы обезопасить себя необходимо:

  • Перейти в однопользовательский режим (Single user mode) и размонтировать файловую систему
  • Загрузить компьютер в режиме восстановления с помощью установочного компакт-диска

Итак, необходимо проверить диски и исправить ошибки файловой системы, приступим.

1) Single user mode

Измените уровень инициализации и размонтируйте файловую систему:

# init 1
# umount /home

Выполните поиск подключенных разделов:

# fdisk -l

После этого запустите FSCK для раздела с ошибками:

# fsck /dev/sda1

2) Режим восстановления с установочного компакт-диска

Вставьте установочный компакт-диск в дисковод и перезагрузите систему:

# reboot

Подождите некоторое время и после загрузки с установочного компакт-диска выполните команду:

# linux rescue nomount

Директива NOMOUNT запретит монтирование, так что вы сможете безопасно использовать FSCK.

После этого запустите FSCK для раздела с ошибками:

# fsck -yvf /dev/sda1

LVM (Logical Volume Manager)

Ситуация с LVM (Logical Volume Manager) разделами немного сложнее. Для запуска FSCK для LVM разделов сначала необходимо найти PV (Physical Vollume), VG (Volume Group), LV (Logical Extension) и активировать их, для этого выполните последовательно следующие команды:

# lvm pvscan
# lvm vgscan
# lvm lvchange -ay VolGroup00
# lvm lvscan

# fsck -yfv /dev/VolGroup00/LogVol00

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

0 — Без ошибок (No errors);
1 — Исправлены ошибки файловой системы (Filesystem errors corrected);
2 — Система должна быть перезагружена (System should be rebooted);
4 — Ошибки файловой системы оставили без изменений (Filesystem errors left uncorrected);
8 — Эксплуатационная ошибка (Operational error);
16 — Ошибки при использовании или синтаксические ошибки (Usage or syntax error);
32 — Fsck отменен по запросу пользователя (Fsck canceled by user request);
128 — Ошибка общей библиотеки (Shared-library error).

На этом все. Таким несложным образом вы можете проверить диски на наличие ошибок в файловой системе и исправить эти ошибки в случае их наличия.

Понравилась статья? Поделить с друзьями:
  • Как проверить kia ceed на ошибки
  • Как проверить json на ошибки
  • Как проверить jpg на ошибки
  • Как проверить jar на наличие ошибок
  • Как проверить ipad на ошибки