2

У нас есть приложение, которое работает на выделенном компьютере (работает под управлением Windows Embedded на NTFS-диске) на заводе. В редких случаях "поврежденный файл" останавливает работу программного обеспечения. Удаление поврежденного файла решает проблему ... но все данные в файле теряются.

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

Ошибка отображается Блокнотом

Попытка скопировать файл в проводнике Windows для автономного анализа приводит к следующему сообщению об ошибке:

Ошибка при попытке скопировать файл

Атрибуты файла выглядят нормально в командной строке. Попытка скопировать файл вручную с copy mStats.ini D: генерирует эту ошибку:

Ошибка отображается в командной строке

Загрузка Windows в безопасном режиме не помогает (файл все еще поврежден и не подлежит восстановлению). Похоже, это указывает на поврежденную запись в таблице основных файлов Windows NTFS (MFT). Остальная часть системы, кажется, не затронута. Удаление файла позволяет полное восстановление.

  • Что может быть причиной этого?
  • Можно ли восстановить данные или исправить MFT?
  • Можно ли воспроизвести проблему такого типа (программно или вручную)?
  • Есть ли какой-нибудь общий совет для чтения / записи файлов, чтобы гарантировать, что такого рода вещи не произойдут?

ОБНОВЛЕНИЕ 1

На основании предложения здесь я побежал chkdsk C: /V из командной строки , который вернулся:

\PATH\mStats.ini
Windows found errors on the disk, but will not fix them
because disk checking was run without the /F (fix) parameter.
\PATH\mStats.ini  first allocation unit is not valid. The entry will be truncated.
\PATH\mStats__.ini
\PATH\mStats__.ini  first allocation unit is not valid. The entry will be truncated.

Файлы все еще повреждены. Я занят повторным запуском команды с флагом /F

ОБНОВЛЕНИЕ 2

После запуска chkdsk с флагом /F файлы теперь исправлены. Это не очень хорошая новость, это звучит, потому что теперь у меня нет компьютера с поврежденными файлами! В журнале событий Windows> Приложения появляется следующая запись:

\PATH\mStats.ini  first allocation unit is not valid. The entry will be truncated.
\PATH\mStats__.ini  first allocation unit is not valid. The entry will be truncated.

Было также около дюжины других файлов (в основном в папке Temporary Internet Files ), которые имели ту же проблему.

1 ответ1

0

Без возможности всесторонне протестировать и воспроизвести проблему, любые предложения были бы просто предположением.

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .