У нас есть приложение, которое работает на выделенном компьютере (работает под управлением 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
папке), которые имели ту же проблему.