- Использование утилиты fsck для исправления ошибок файловой системы в Linux
- Когда нужно использовать fsck в Linux
- Опции fsck
- Как запустить fsck для исправления ошибок файловой системы Linux
- Понимание кодов выхода fsck
- Исправление ошибок файловой системы Linux
- Как запустить fsck в корневом разделе Linux
- Принудительная проверка корневой файловой системы с помощью fsck при загрузке системы
- Запуск fsck в режиме восстановления
- Заключение
- Восстановление разделов и данных в Linux
- Некоторые вводные замечания
- Несколько важных подсказок
- Восстановление разделов
- Печальный пример
- Восстановление файлов (и образов)
- PhotoRec
- Recoverjpeg
- Восстановление изображений вручную
- Хороший совет
- Дополнительные материалы по теме:
- Заключение
Использование утилиты fsck для исправления ошибок файловой системы в Linux
Оригинал: How to Use ‘fsck’ to Repair File System Errors in Linux
Автор: Marin Todorov
Дата публикации: 1 октября 2018 года
Перевод: А. Кривошей
Дата перевода: июль 2019 г.
Файловые системы отвечают за организацию хранения данных. Так или иначе, со временем файловая система может быть повреждена и некоторые ее части могут быть недоступны. Если ваша файловая система имеет такое несоответствие, рекомендуется проверить ее целостность.
Это можно выполнить с помощью системной утилиты fsck (file system consistency check). Эта проверка может быть выполнена автоматически во время загрузки или запущена вручную.
В этой статье мы рассмотрим утилиту fsck и ее использование, чтобы помочь вам исправить дисковые ошибки.
Когда нужно использовать fsck в Linux
Существуют разные сценарии, когда вам понадобится запустить fsck. Вот несколько примеров:
Система не загружается.
Файлы в системе поврежденны (часто вы можете увидеть ошибку ввода/вывода).
Подключенный диск (включая флэшки/SD-карты) не работает должным образом.
Опции fsck
Команда Fsck должна быть запущена с привилегиями суперпользователя (root). Вы можете использовать ее с разными аргументами. Их использование зависит от вашего конкретного случая. Ниже вы увидите некоторые из наиболее важных опций:
-A — используется для проверки всех файловых систем. Список берется из /etc/fstab.
-C — показывать индикатор выполнения.
-l — блокирует устройство, чтобы гарантировать, что никакая другая программа не попытается использовать раздел во время проверки.
-M — не проверять смонтированные файловые системы.
-N — только показывать, что будет сделано — не делать никаких реальных изменений.
-P — если вы хотите проверять файловые системы параллельно, включая корневую.
-R — не проверять корневую файловую систему. Это полезно только вместе с ‘-A‘.
-r — предоставить статистику для каждого проверяемого устройства.
-T — не показывает заголовок.
-t — исключительно указать типы файловых систем, которые будут проверяться. Типы могут быть разделены запятыми.
-V — предоставить описание того, что делается.
Как запустить fsck для исправления ошибок файловой системы Linux
Чтобы запустить fsck, вам нужно убедиться, что раздел, который вы собираетесь проверить, не смонтирован. Для этой статьи я буду использовать мой второй диск /dev/sdb, смонтированный в /mnt.
Вот что произойдет, если я попытаюсь запустить fsck на смонтированном разделе.
Чтобы избежать этого, размонтируйте раздел с помощью команды:
Теперь fsck можно запустить безопасно.
Понимание кодов выхода fsck
После запуска fsck она вернет код выхода. Эти коды можно увидеть в руководстве fsck, выполнив:
Исправление ошибок файловой системы Linux
Иногда в файловой системе можно найти ошибки. В таких случаях вы захотите, чтобы fsck автоматически пыталась исправить ошибки. Это можно сделать с помощью следующей команды:
Флаг -y автоматически даёт ответ «да» на любые запросы от fsck для исправления ошибок.
Точно так же вы можете запустить команду на всех файловых системах (без корневой):
Как запустить fsck в корневом разделе Linux
В некоторых случаях вам может потребоваться запустить fsck в корневом разделе вашей системы. Поскольку вы не можете запустить fsck на смонтированном разделе, вы можете попробовать один из следующих вариантов:
1. Принудительно использовать fsck при загрузке системы
2. Запустить fsck в режиме восстановления
Мы рассмотрим обе ситуации.
Принудительная проверка корневой файловой системы с помощью fsck при загрузке системы
Это относительно легко выполнить, единственное, что вам нужно сделать, это создать файл с именем forcefsck в корневом разделе вашей системы. Используйте следующую команду:
Во время следующей загрузки будет выполняться fsck. Если время простоя является критическим, рекомендуется тщательно спланировать эту проверку, так как если в вашей системе много используемых inode, fsck может занять некоторое, довольно значительное время.
После загрузки системы проверьте, существует ли этот файл:
Если он есть, вы можете удалить его, чтобы избежать запуска fsck при каждой загрузке системы.
Запуск fsck в режиме восстановления
Запуск fsck в режиме восстановления требует еще нескольких шагов. Сначала подготовьте систему к перезагрузке. Остановите все важные службы, такие как MySQL/MariaDB и т. д., а затем перезагрузите компьютер.
Во время загрузки удерживайте нажатой клавишу Shift, чтобы отобразилось меню grub. Выберите «Advanced options».
Затем выберите «Recovery mode».
В следующем меню выберите «fsck».
Вас спросят, хотите ли вы перемонтировать вашу корневую файловую систему. Выберите «yes».
Вы должны увидеть что-то похожее на это.
Затем вы можете вернуться к нормальной загрузке, выбрав «Resume».
Заключение
Из этого руководства вы узнали, как использовать fsck и выполнять проверки согласованности в разных файловых системах Linux. Если у вас есть какие-либо вопросы о fsck, пожалуйста, не стесняйтесь задавать их в разделе комментариев ниже.
Источник
Восстановление разделов и данных в Linux
Потеря важных данных — одна из самых больших неприятностей, которая может случиться с пользователем компьютера. Неважно, по какой причине — в результате случайной ошибки, или проблем с оборудованием, но это хоть раз происходило практически с каждым. Для предотвращения этой трагедии вы должны всегда иметь под рукой несколько проверенных резервных копий своих данных. Но что, если у вас их не было на момент сбоя? Большинство пользователей не заботятся о резервном компировании, пока не станет слишком поздно. Но не отчаивайтесь. Выход есть. В этом руководстве мы попробуем научиться восстанавливать разделы и данные на жестких дисках, а также испорченные фотографии.
Некоторые вводные замечания
Перед тем, как мы начнем, необходимо разъяснить несколько моментов. Во-первых, никаких гарантий. Восстановление данных базируется на предположениях и догадках, неизвестно насколько они точны и соответствуют истине. Хотя в примерах у нас все будет отлично получаться, на практике это требует большой доли везения. Даже если вы освоите все методологические подходы и будете использовать лучшие утилиты для восстановления данных, всегда есть шанс, что вас постигнет неудача, и вы должны быть готовы к этому.
Восстановление данных — это очень сложная процедура. Вы никогда не достигнете результата, если не чувствуете себя как дома в командной строке, разметке разделов, геометрии жесткого диска, компиляции, или просмотре файлов в шестнадцатеричном редакторе. На самом деле, если неопытный пользователь попытается использовать утилиты восстановления данных, он может нанести еще больше вреда, или уничтожить свою нормально работающую систему. Не предпринимайте ничего, пока вы точно не уверены, что знаете, что делать.
Даже если вам удастся восстановить удаленные разделы, данные на них могут быть потеряны. В целом работа с поврежденными жесткими дисками предсталяет собой разновидность азартной игры. Несмотря на все ваши усилия, все может оказаться напрасным. Важно, что вы это понимали.
Несколько важных подсказок
Перед тем, как мы продолжим, пара советов. Во-первых, если вы подозреваете, что данные или диск повреждены, вы должны немедленно прекратить использование этого диска. Если вы только что обнаружили исчезновение важных данных и они не отображаются в файловом менеджере, это не значит, чито они уже потеряны навсегда. Место, которое они занимают, может быть просто помечено как пустое, поэтому если вы продолжите использование этого жесткого диска, система может записать на это же место другие данные. Таким образом, любая попытка использования устройства может только ухудшить ситуацию. Вы должны немедленно прекратить работу, чтобы не лишиться шансов на восстановление данных.
Далее, вы не должны паниковать, действовать нужно спокойно и осторожно. Необходимо отмонтировать устройство и отключить подкачку. В любом случае необходимо остановить любые служебные операции, такие как дефрагментация или очистка диска, копирование или перемещение данных, и любые другие действия, для которых необходимы операции чтения/записи. Но есть одна загвоздка.
Любое из описанных выше действий может ухудшить ситуацию. А может и нет. К сожалению, у меня нет универсального рецепта, так как каждый такой случай уникален. На самом деле те вещи, которые в некоторых случаях могут решить проблему, в других случаях могут привести к прямо противоположному результату.
Суммируя все вышесказанное — ничего не меняйте. Если вы не понимаете, что делать, позвоните эксперту, который мог бы вам помочь. Одно можно сказать наверняка — ни при каких обстоятельствах не нужно закрывать глаза и перезагружать машину. Перезагрузка может помочь решить софтверные логические проблемы в оперативной памяти, но очень редко она может помочь разрешить аппаратные проблемы. Напротив, при перезагрузке операционная система может беспечно предположить, что с вашими данными все в порядке, и попробовать получить доступ к поврежденному диску или разделу. Это обычно значительно снижает вероятность восстановления данных.
Второй совет немного сумасшедший, поэтому можете не обращать на него внимания, если хотите. Если ваш жесткий диск перестал работать или больше не распознается операционной системой, поместите его на 15 — 20 минут в морозильную камеру. Это может оживить его на время, достаточное для того, чтобы быстро скопировать важные данные. Во многих случаях диски перестают работать вследствие механических проблем, и резкое снижение температуры может освободить мелкие заблокированные детали, оживив диск хотя бы на некоторое время. Это чистой воды шаманство, поэтому можете не воспринимать этот совет всерьез. Тем не менее, в отчаянной ситуации все средства хороши.
Восстановление разделов
Потерять раздел можно по разным причинам. Например, вы могли нечаянно создать новую таблицу разделов не на том жестком диске, или неправильно настроить мультизагрузку.
Чтобы показать вам случай из реальной жизни, я исскуственно воспроизведу ситуацию с потерей раздела. Нашей тестовой системой будет Fedora 16 Verne с KDE, проблемным диском будет /dev/sdb с данными, хотя обычно неприятности случаются с системными разделами. В данном случае вы будете использовать для восстановления раздела live CD.
Мы сотрем таблицу разделов /dev/sdb, создав новую с помощью GParted. Мы проигнорируем тот факт, что она уже существует. Таким способом мы сделаем разделы невидимыми для системы. Обычному пользователю кажется, что данные потеряны навсегда.
Итак, мы стерли таблицу разделов. Теперь мы воспользуемся TestDisk — удивительным инструментом для исследования, разработанным cgsecurity.org . Я описывал эту утилиту во многих статьях. Сегодня мы изучим ее возможности и обучимся ее использованию.
Интерфейс TestDisk представляет собой текстовый мастер. Это интерактивная утилита, которая задаст вам несколько вопросов, чтобы попытаться спасти ваши данные. Первым вопросом будет — хотите ли вы записывать лог для его последующего анализа. Вероятно, необходимо согласиться с этим.
Мы начнем с анализа. Пока мы не знаем ситуацию, и насколько все плохо. Так как вы, скорее всего, точно не знаете геометрию диска, используем опцию «analysis».
Следующий шаг — выбор устройства, с которым мы будем работать. В нашем случае это /dev/sdb.
Теперь выберите тип таблицы разделов. В большинстве случаев это Intel/PC.
И начинаем анализировать:
Нам повезло. TestDisk сумел найти раздел. Несмотря на то, что таблица разделов была удалена, это были всего лишь указатели на начальный и конечный адреса фактических данных. Поверхность диска не была повреждена, поэтому наши данные должны быть там.
Теперь нам необходимо записать информацию о разделе на диск. Также можно изменить характеристики раздела, такие как тип или флаги.
И это сработало! Теперь мы снова в деле. Это значит, что у нас теперь нормальная таблица разделов и нашы разделы можно использовать, однако это не значит, что некоторые данные не были стерты или перезаписаны. Далее мы рассмотрим восстановление данных. Пока все выглядит хорошо.
Печальный пример
Итак, мы успешно восстановили данные, но я хочу показать и другой пример, когда мне это не удалось. Возможно, криминалисту это бы и удалось сделать, но я потерпел полное поражение через 17 минут.
Как и в предыдущем примере, сделаем что-нибудь деструктивное. Я собираюсь записать с помощью dd незаданное количество нулевых байтов на устройство /dev/sdb. Затем, уже в процессе, я как будто осознаю свою ошибку и прерываю операцию. Но уже слишком поздно.
Теперь, когда наш раздел разрушен, давайте представим, что ничего не случилось, и попробуем смонтировать его. Конечно, ничего не получится. Сообщение об ошибке не является уникальным для этой проблемы, но оно свидетельствует, что что-то не в порядке. После дополнительных иссследований мы приходим к выводу, что наш диск испорчен и нуждается в восстановлении.
И правда, проверив диск с помощью fdisk, мы видим:
Мы снова пробуем TestDisk. Теперь мы знаем, что у раздела нет конечной метки. Это плохая новость, но, может быть, нам в итоге удастся восстановить данные. Вы заметите, что в нижнем левом углу TestDisk предлагает поискать разделы.
Мы сделаем это — и потерпим неудачу. Теперь мы попробуем провести более глубокий поиск.
В качесте последней отчаянной попытки вы можете попробовать вручную добавить раздел, задав начальные и конечные цилиндры, головки и сектора. Далле, вам нужно будет выбрать тип раздела, например для Linux это 83, что включает Ext, Reiserfs, BTRFS и другие типы файловых систем.
В нашем случае это к сожалению не сработало. Не повезло.
Восстановление файлов (и образов)
В случае, если вам не удается восстановить разделы, вы все же можете попытаться спасти свои данные. Другими словами, можно попытаться скопировать информацию с диска, не опираясь на структуры таблицы разделов перед катастрофой.
PhotoRec
Мы будем делать это с помощью другой утилиты от cgsecurity.org — PhotoRec. Хотя изначально она была разработана для обработки фотографий на картах цифровых камер, на сегодняшний день она умеет работать со многими типами файлов. Фактически она может восстанавливать практически все, если данные хотя бы в некоторой степени сохранили целостность.
PhotoRec можно также использовать и на работающих разделах, так как он позволяет во многих случаях найти удаленные файлы. Я протестировал ее на своих системных разделах.
Эта утилита похожа на TestDisk. Вы начинаете с выбора типа раздела, с которым вы хотите работать, а также типа файловой системы, которая, как вы полагаете, использовалась на удаленном и/или поврежденном разделе.
В моем случае были обнаружены все типы файлов, включая текст, изображения, архивы, файлы баз данных, и другие. Более того, PhotoRec нашел файлы образов, которые, вероятно использовались при установке Fedora. Во всяком случае я понятия не имею, откуда они взялись.
В целом PhotoRec выглядит достаточно эффективным. Просто для проверки я произвел низкоуровневое форматирование примерно 80% моего второго жесткого диска, создал новую таблицу разделов, новый раздел, и отформатировал его в файловую систему Ext4, а затем повторно запустил восстановление. Действительно, программа не смогла найти большинство уничтоженных таким образом данных, но все равно сумела обнаружить внушительный набор файлов. Поэтому, если вы думали, что простого форматирования достаточно для скрытия данных, это не так.
Recoverjpeg
Еще одна полезная утилита для восстановления изображений, а именно JPEG — это recoverjpeg. Она создана для спасения файлов с SD-карт и чипов памяти цифровых фотокамер. Как и PhotoRec, я пробовал ее на исправных разделах, чтобы посмотреть, смогу ли я обнаружить какие-нибудь неизвестные и странные файлы, и мне это действительно удалось. Снова, наверное, остатки от инсталляции Fedora.
Этой небольшой утилиты нет в репозиториях YUM, но вы можете скачать исходный код и скомпилировать его самостоятельно. Для этого вам понадобится пакет gcc-c++.
Восстановление изображений вручную
Итак, мы видим, что наше изображение повреждено. GIMP не может открыть его. Но здесь ключ к решению. Мы считаем, что это файл изображения, но он начинается с символов FF 00, которые не могут быть первыми двумя байтами файла JPG/JPEG.
Далее нам необходимо проверить файл с помощью шестнадцатеричного редактора. Мы опускаемся на уровень байтов и попробуем выяснить, что не так со структурой нашего изображения. Это достаточно сложно, но другого выхода нет. Теперь нам нужен шестнадцатеричный редактор. В KDE это Okteta, но вы можете использовать любой другой, включая vi.
Заголовок испорчен, хотя в теории его нельзя действительно назвать заголовком, но он служит тем же целям. Изучив литературу, мы узнаем, что первые два байта любого изображения в формате JPG/JPEG — это маркер SOI, в шестнадцатеричной записи это всегда будет FF D8.
Итак, теперь мы изменим вторую последовательность из двух байтов 00 на D8, как должно быть в JPG-файле. Созраним изменения и протестируем результат. Все получилось.
В данном случае процесс восстановления оказался нетрудным. Но возможно, что повреждена будет не только структура файла, но и сам он может быть частично заполнен мусором. В случае изображений это значит, что отдельные пиксели или целые его секции могут быть заполнены случайным мусором.
Хороший совет
Резервные копии для компьютера необходимы как воздух. Если у вас они есть, вы можете чувствовать себя увереннее. Хорошим примером является неожиданная смерть моего второго жесткого диска около года назад. Все, что мне потребовалось сделать — выключить компьютер, заменить диск на новый, включить и скопировать все данные из резервной копии, которую я обновлял каждый день. Конец истории.
Дополнительные материалы по теме:
Заключение
Должен признать, что данное руководство не из самых простых. Некоторые описанные здесь приемы требуют определенных знаний, и обычному пользователю работать в таком ключе будет некомфортно. Восстановление данных требует определенных навыков, и даже в этом случае успех не гарантирован. Единственный мой личный опыт относится к 2009 году, когда я пытался восстановить файлы после неудачной переустановки системы поверх существующих и ценных данных. Все это закончилось не очень удачно. Резервные копии предпочтительнее.
Тем не менее, кое что полезное вы сегодня узнали. Теперь вы знакомы с различными инструментами командной строки, вы умеете использовать TestDisk, PhotoRec, recoverjpeg, и, может быть, другие утилиты, описанные в приведенных выше источниках. На самом деле я еще не успел нопробовать некоторые программы, поэтому нас возможно ждет продолжение.
Если же все три описанных здесь утилиты вам не помогут, вряд ли поможет что-то еще. Кроме того, использование большого количества инструментов одновременно может привести к путанице и еще большим повреждениям данных. Поэтому первым выбором должны быть TestDisk и PhotoRec. Кроме того, они вероятно являются лучшими. Recoverjpeg — тоже неплохой выбор. Освоив их, вы без затруднений сможете работать и с другими подобными инструментами.
Источник