Блог "Дети ОИТа"
/поиск

Алгоритмы восстановления файловой системы NTFS

Главное ограничение восстановления NTFS в Linux

ntfsfix не является Linux-версией chkdsk.

Он умеет:

  • исправлять некоторые базовые несогласованности NTFS;
  • сбрасывать файл журнала NTFS;
  • устанавливать dirty-флаг для обязательной проверки в Windows;
  • очищать список bad clusters после переноса на исправный диск.

Он не выполняет полноценную проверку и восстановление:

  • $MFT;
  • каталогов и индексов;
  • $Bitmap;
  • security descriptors;
  • всех файловых записей;
  • повреждённых пользовательских данных.

Полноценным штатным средством восстановления NTFS является:

CHKDSK в Windows

Если Windows недоступна, Linux используется для:

  1. проверки нижнего уровня;
  2. безопасного read-only доступа;
  3. создания образа;
  4. копирования данных;
  5. базового ntfsfix;
  6. подготовки тома к последующему chkdsk.

Основные инструменты

Инструмент Назначение
ntfsfix -n Показать предполагаемые действия без записи
ntfsfix Исправить базовые несогласованности, сбросить журнал и назначить Windows-проверку
ntfsinfo Показать метаданные NTFS
ntfsclone Клонировать NTFS или сохранить её метаданные
ntfscat Прочитать содержимое отдельного файла без монтирования
ntfsls Показать каталог NTFS без монтирования
ntfs-3g Подключить NTFS через FUSE
ntfs3 Драйвер NTFS в ядре Linux, если присутствует в используемом ядре
chkdsk Полная проверка и исправление NTFS в Windows
ddrescue Создать образ физически нестабильного носителя

Определить активный драйвер:

findmnt -rn -o TARGET,SOURCE,FSTYPE,OPTIONS | grep -Ei 'ntfs|fuseblk'

Возможные значения:

ntfs-3g
fuseblk
ntfs3

Основные запреты

Не считать ntfsfix полным лечением

После успешного:

sudo ntfsfix <устройство_NTFS>

том всё равно должен пройти проверку:

chkdsk <буква_диска>: /f

в Windows.

Не запускать NTFS-ремонт на смонтированном томе

Проверить:

findmnt --source <устройство_NTFS>

Отключить:

sudo umount <точка_монтирования>

Не использовать принудительное read-write монтирование dirty-тома

Для ntfs3 не применять:

force

Для ntfs-3g не пытаться обойти защиту неизвестным набором опций.

Если том dirty, hibernated или содержит неисправленный журнал, сначала использовать read-only доступ, копирование или Windows chkdsk.

Не удалять hibernation file без осознанного решения

Опция:

remove_hiberfile

удаляет сохранённую сессию Windows.

Она может привести к полной потере:

  • открытых документов;
  • несохранённых изменений;
  • состояния приложений;
  • гибернированной сессии.

Штатный путь: загрузить Windows и выполнить полноценное завершение работы.

Не запускать CHKDSK /r на физически умирающем оригинале

/r читает поверхность тома и пытается восстановить читаемую информацию.

На нестабильном HDD, SSD или NVMe сначала создаётся образ через ddrescue. chkdsk запускается на исправном клоне.

Не запускать ремонт на неправильном уровне

Нельзя использовать ntfsfix или chkdsk для:

  • отдельного члена RAID;
  • PV LVM;
  • отдельного пути Multipath;
  • NFS-каталога;
  • SMB/DFS-каталога.

Правильная Linux-цель должна иметь:

FSTYPE=ntfs

Проверить:

lsblk -e 7 -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS

Когда NTFS ремонтировать нельзя

Не выполнять изменяющий ремонт на исходном устройстве при наличии:

I/O error
Buffer I/O error
critical medium error
SMART FAILED
Current_Pending_Sector > 0
Offline_Uncorrectable > 0
NVMe critical_warning != 0
media_errors > 0
устройство периодически исчезает
повторяющиеся reset или timeout
RAID dirty и degraded
LVM partial
Multipath потерял все пути
неизвестно, используется ли LUN другим сервером

В этих состояниях:

  1. прекратить запись;
  2. отключить NTFS;
  3. создать образ или клон;
  4. копировать доступные данные;
  5. запускать ntfsfix и chkdsk только на исправной копии;
  6. заменить неисправный носитель.

Коды завершения CHKDSK

После выполнения в Windows:

echo %ERRORLEVEL%
Код Значение
0 Ошибок не обнаружено
1 Ошибки обнаружены и исправлены
2 Выполнена очистка либо исправление не запускалось без /f
3 Проверка не выполнена или ошибки не удалось исправить

После ремонта требуется добиться результата:

0

при повторной проверке.

Алгоритм 1. NTFS на исправном HDD

Применять, если NTFS находится на локальном HDD и физические ошибки отсутствуют.

1. Определить устройство

lsblk -e 7 -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL

Пример:

Диск:       /dev/sda
NTFS:       /dev/sda2
Монтирование: /data

2. Проверить журнал ядра

journalctl -k -b --no-pager | grep -Ei \
'sda|I/O error|Buffer I/O|critical medium|reset|timeout|NTFS|ntfs3'

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

3. Проверить SMART

sudo smartctl -x /dev/sda

Продолжать разрешено, если:

  • SMART не сообщает FAILED;
  • pending sectors равен 0;
  • offline uncorrectable равен 0;
  • диск стабильно определяется;
  • ошибки не растут.

4. Скопировать критичные данные

Если NTFS монтируется и читается:

sudo rsync -aHAX --numeric-ids \
  /data/ \
  /mnt/healthy/data-copy/

Если rsync отсутствует:

sudo cp -a /data/. /mnt/healthy/data-copy/

Особенности NTFS ACL и Alternate Data Streams могут сохраниться не полностью при обычном файловом копировании в Linux. Для полного образа использовать ntfsclone или ddrescue.

5. Отключить NTFS

sudo fuser -vm /data

Остановить приложения.

sudo umount /data

Проверить:

findmnt --source /dev/sda2

6. Сохранить метаданные

Файл сохранять на другой исправный носитель:

sudo ntfsclone --metadata \
  --output /mnt/healthy/ntfs-sda2-metadata.img \
  /dev/sda2

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

7. Проверить действия ntfsfix

sudo ntfsfix -n /dev/sda2

8. Выполнить базовое исправление

sudo ntfsfix /dev/sda2

Это не завершает полноценный ремонт.

9. Проверить read-only монтирование в ALT Linux

sudo mkdir -p /mnt/ntfs-check
sudo mount -t ntfs-3g -o ro \
  /dev/sda2 \
  /mnt/ntfs-check

Проверить основные каталоги и файлы.

sudo umount /mnt/ntfs-check

10. Выполнить полный ремонт в Windows

Подключить исправный HDD к Windows.

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

D:

Проверить dirty-флаг:

fsutil dirty query D:

Выполнить исправление:

chkdsk D: /f

Если том занят:

chkdsk D: /x /f

Для системного тома согласиться на проверку при следующей загрузке.

11. Повторить проверку

chkdsk D:

Ожидаемый код:

0

Только после этого вернуть том в эксплуатацию.

Алгоритм 2. NTFS на HDD с физическими ошибками

Применять при:

I/O error
critical medium error
SMART FAILED
Current_Pending_Sector > 0
Offline_Uncorrectable > 0
исчезновение диска
повторяющиеся reset или timeout

1. Определить исходный HDD

lsblk -d -o NAME,PATH,SIZE,MODEL,SERIAL

Пример:

/dev/sda

2. Прекратить запись

sudo umount <точка_монтирования>

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

Не запускать на оригинале:

ntfsfix
ntfsclone без режима rescue
chkdsk /f
chkdsk /r
badblocks
длительный SMART self-test

3. Зафиксировать состояние

sudo smartctl -x /dev/sda > /mnt/healthy/smart-sda.txt
journalctl -k -b --no-pager > /mnt/healthy/kernel-storage.txt

4. Подготовить исправный носитель

df -hT /mnt/recovery

Свободного места должно хватать на полный размер исходного диска.

5. Снять первый образ

sudo ddrescue -n \
  /dev/sda \
  /mnt/recovery/sda.img \
  /mnt/recovery/sda.map

Map-файл обязателен.

6. Второй проход выполнять только при стабильном диске

sudo ddrescue -d -r3 \
  /dev/sda \
  /mnt/recovery/sda.img \
  /mnt/recovery/sda.map

Не выполнять, если HDD:

  • щёлкает;
  • исчезает;
  • перегревается;
  • резко замедляется;
  • создаёт новые ошибки.

7. Отключить оригинал

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

8. Подключить образ

sudo losetup -Pf --show /mnt/recovery/sda.img

Пример:

/dev/loop0
lsblk -f /dev/loop0

Пример NTFS-раздела:

/dev/loop0p2

9. Сначала извлечь данные

Попытаться подключить образ только для чтения:

sudo mount -t ntfs-3g -o ro \
  /dev/loop0p2 \
  /mnt/ntfs-copy

Если данные читаются, скопировать их на третий исправный носитель.

10. Исправлять только копию

sudo ntfsfix -n /dev/loop0p2
sudo ntfsfix /dev/loop0p2

После этого восстановить образ на отдельный исправный диск либо передать клон Windows и выполнить:

chkdsk D: /f

Для сброса унаследованного списка bad clusters после клонирования использовать отдельный алгоритм 9.

Исходный HDD в эксплуатацию не возвращать.

Алгоритм 3. NTFS на исправном SSD или NVMe

1. Определить устройство

lsblk -e 7 -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL

Примеры:

SATA SSD:       /dev/sda
NTFS-раздел:    /dev/sda2

NVMe namespace: /dev/nvme0n1
NTFS-раздел:    /dev/nvme0n1p2

2. Проверить состояние

SATA SSD:

sudo smartctl -x /dev/sda

NVMe:

sudo smartctl -x /dev/nvme0

При наличии nvme-cli:

sudo nvme smart-log /dev/nvme0

Продолжать разрешено, если:

SMART не сообщает FAILED
critical_warning = 0
media_errors = 0

3. Проверить журнал ядра

journalctl -k -b --no-pager | grep -Ei \
'I/O error|Buffer I/O|nvme|reset|timeout|NTFS|ntfs3'

4. Скопировать критичные данные

sudo rsync -aHAX --numeric-ids \
  <точка_монтирования>/ \
  <исправный_носитель>/

5. Отключить NTFS

sudo umount <точка_монтирования>

Проверить:

findmnt --source <устройство_NTFS>

6. Сохранить метаданные

sudo ntfsclone --metadata \
  --output /mnt/healthy/ntfs-ssd-metadata.img \
  <устройство_NTFS>

7. Выполнить Linux-этап

sudo ntfsfix -n <устройство_NTFS>
sudo ntfsfix <устройство_NTFS>

8. Выполнить Windows-этап

fsutil dirty query D:
chkdsk D: /f

Не использовать /r для обычной логической ошибки. /r выполняет полный поиск повреждённых секторов и не нужен, если SSD исправен и нет ошибок чтения.

9. Проверить результат

chkdsk D:

При повторных ошибках NTFS перенести данные и пересоздать файловую систему.

Алгоритм 4. NTFS на отказывающем SSD или NVMe

Применять при:

SMART FAILED
critical_warning != 0
media_errors > 0
I/O timeout
controller reset
аппаратный read-only
устройство исчезает

1. Определить источник

SATA SSD:

/dev/sda

NVMe namespace:

/dev/nvme0n1

Для образа NVMe использовать namespace, а не контроллер /dev/nvme0.

2. Прекратить запись

sudo umount <точка_монтирования>

Не запускать на исходнике:

ntfsfix
ntfsclone
chkdsk
fstrim
nvme device-self-test

3. Зафиксировать состояние

SATA SSD:

sudo smartctl -x /dev/sda > /mnt/healthy/smart-ssd.txt

NVMe:

sudo smartctl -x /dev/nvme0 > /mnt/healthy/smart-nvme.txt
journalctl -k -b --no-pager > /mnt/healthy/kernel-storage.txt

4. Создать образ

SATA SSD:

sudo ddrescue -n \
  /dev/sda \
  /mnt/recovery/ssd.img \
  /mnt/recovery/ssd.map

NVMe:

sudo ddrescue -n \
  /dev/nvme0n1 \
  /mnt/recovery/nvme.img \
  /mnt/recovery/nvme.map

Второй проход выполнять только при стабильном устройстве:

sudo ddrescue -d -r3 \
  <исходное_устройство> \
  <файл_образа> \
  <map-файл>

5. Подключить образ

sudo losetup -Pf --show <файл_образа>
lsblk -f /dev/loop0

6. Сначала скопировать данные

sudo mount -t ntfs-3g -o ro \
  /dev/loop0p2 \
  /mnt/ntfs-copy

Если монтирование невозможно, использовать алгоритм 17.

7. Ремонтировать только клон

sudo ntfsfix /dev/loop0p2

Затем восстановить образ на исправный диск и выполнить Windows chkdsk.

Отказывающий SSD или NVMe не возвращать в эксплуатацию.

Алгоритм 5. NTFS помечена dirty, но носитель исправен

Применять, если:

  • физический носитель исправен;
  • Windows не находится в гибернации;
  • NTFS не монтируется в rw;
  • сообщения указывают на dirty volume или незавершённый журнал.

1. Определить устройство

lsblk -f
findmnt --source <устройство_NTFS>

2. Убедиться, что NTFS не смонтирована

sudo umount <точка_монтирования>

3. Проверить предполагаемые действия

sudo ntfsfix -n <устройство_NTFS>

4. Выполнить ntfsfix

sudo ntfsfix <устройство_NTFS>

ntfsfix сбрасывает журнал и назначает проверку при следующем запуске Windows.

5. Не считать том вылеченным

Подключить только для чтения:

sudo mount -t ntfs-3g -o ro \
  <устройство_NTFS> \
  /mnt/ntfs-check

Если данные читаются, скопировать критичные файлы.

sudo umount /mnt/ntfs-check

6. Выполнить Windows-проверку

fsutil dirty query D:
chkdsk D: /f

7. Повторить проверку

chkdsk D:

Ожидается отсутствие ошибок.

Алгоритм 6. NTFS оставлена Windows в гибернации или Fast Startup

Признаки:

Windows is hibernated
The NTFS partition is in an unsafe state
Metadata kept in Windows cache
NTFS mounted read-only

1. Не выполнять ntfsfix

Гибернация не является обычной логической ошибкой NTFS.

ntfsfix не согласует Linux-изменения с сохранённым состоянием Windows.

2. Не удалять hiberfile

Не использовать:

remove_hiberfile

если существует хоть какая-то вероятность, что сохранённая Windows-сессия нужна.

3. При необходимости скопировать данные

Подключить только для чтения:

sudo mount -t ntfs-3g -o ro \
  <устройство_NTFS> \
  /mnt/ntfs-readonly

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

4. Загрузить Windows

Возобновить сохранённую сессию либо загрузить Windows штатно.

5. Полностью завершить работу Windows

В командной строке администратора отключить гибернацию и Fast Startup:

powercfg /h off

После этого выполнить полное завершение работы Windows, а не перезагрузку в гибернированное состояние.

6. Вернуться в ALT Linux

Проверить:

sudo mount -t ntfs-3g \
  <устройство_NTFS> \
  /mnt/ntfs-check

Если NTFS всё ещё dirty, выполнить алгоритм 5.

7. Если Windows больше не загружается

Не удалять hiberfile на единственном экземпляре данных.

Сначала:

  1. создать образ;
  2. скопировать доступные файлы read-only;
  3. работать с копией;
  4. только после сохранения данных решать вопрос об удалении hibernation file.

Алгоритм 7. NTFS не монтируется, а Windows временно недоступна

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

1. Определить устройство

lsblk -f

2. Проверить журнал

journalctl -k -b --no-pager | grep -Ei \
'NTFS|ntfs3|fuse|I/O error|reset|timeout'

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

3. Отключить NTFS

sudo umount <точка_монтирования>

4. Сохранить метаданные

sudo ntfsclone --metadata \
  --output /mnt/healthy/ntfs-before-fix.img \
  <устройство_NTFS>

5. Проверить без изменения

sudo ntfsfix -n <устройство_NTFS>

6. Выполнить базовое исправление

sudo ntfsfix <устройство_NTFS>

7. Подключить только для чтения

sudo mount -t ntfs-3g -o ro \
  <устройство_NTFS> \
  /mnt/ntfs-recovery

8. Скопировать данные

sudo rsync -aHAX --numeric-ids \
  /mnt/ntfs-recovery/ \
  /mnt/healthy/data-copy/

9. Отключить

sudo umount /mnt/ntfs-recovery

10. Дождаться Windows-этапа

Том нельзя считать полностью восстановленным, пока не выполнен:

chkdsk D: /f

Алгоритм 8. Повреждены MFT, индексы, bitmap или дескрипторы безопасности

Типовые сообщения:

MFT is corrupt
MFTMirr mismatch
Failed to load $MFT
Volume bitmap is incorrect
Index errors
Security descriptor errors
File record segment is unreadable

1. Проверить физический носитель

journalctl -k -b --no-pager | grep -Ei \
'I/O error|Buffer I/O|critical medium|reset|timeout'

Проверить SMART или NVMe health.

При аппаратной ошибке сначала создать образ.

2. Скопировать доступные данные

Если NTFS ещё читается, подключить её только для чтения:

sudo mount -t ntfs-3g -o ro \
  <устройство_NTFS> \
  /mnt/ntfs-recovery
sudo rsync -aHAX --numeric-ids \
  /mnt/ntfs-recovery/ \
  /mnt/healthy/data-copy/

3. Отключить NTFS

sudo umount /mnt/ntfs-recovery

4. Не пытаться лечить MFT через ntfsfix

ntfsfix не выполняет полноценную перестройку MFT, индексов и bitmap.

5. Подключить том к Windows

Если данные критичны, работать с клоном, а не с единственным оригиналом.

6. Выполнить Windows-проверку без исправления

chkdsk D:

Для работающей Windows можно использовать:

chkdsk D: /scan

7. Выполнить исправление

chkdsk D: /f

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

chkdsk D: /x /f

8. Проверить результат

chkdsk D:

Если код 3 сохраняется или ошибки возвращаются, восстановить данные из копии и пересоздать NTFS.

Алгоритм 9. NTFS перенесена с повреждённого диска на исправный

Применять после ddrescue, ntfsclone --rescue или аппаратного клонирования.

1. Не ремонтировать исходный диск

Все дальнейшие действия выполняются на исправном клоне.

2. Проверить клон в ALT Linux

lsblk -f
sudo ntfsfix -n <NTFS_на_клоне>

3. Очистить унаследованный список bad clusters

Только на исправном клоне:

sudo ntfsfix -b <NTFS_на_клоне>

Опция -b не восстанавливает потерянные данные. Она удаляет старый список плохих кластеров, относящийся к прежнему носителю.

4. Выполнить базовое исправление

sudo ntfsfix <NTFS_на_клоне>

5. Передать клон Windows

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

D:

6. Выполнить полное сканирование нового носителя

chkdsk D: /b

/b:

  • очищает список bad clusters;
  • повторно сканирует выделенные и свободные кластеры;
  • включает функции /r и /f.

Команда может выполняться очень долго.

7. Повторить обычную проверку

chkdsk D:

8. Проверить файлы

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

Алгоритм 10. NTFS заполнена и запись невозможна

Типовые ошибки:

No space left on device
Disk full
Insufficient disk space

1. Проверить заполнение

df -hT <точка_монтирования>

2. Найти крупные каталоги

sudo du -xhd1 <точка_монтирования> | sort -h

3. Проверить открытые удалённые файлы

sudo lsof +L1

4. Освободить место

Удалять только подтверждённо ненужные:

  • временные файлы;
  • старые копии;
  • кэш;
  • журналы приложений;
  • содержимое корзины.

Не удалять вручную системные метафайлы NTFS:

$MFT
$LogFile
$Bitmap
$Extend
System Volume Information

5. Проверить состояние NTFS

После освобождения места:

sync
df -hT <точка_монтирования>

Отключить NTFS:

sudo umount <точка_монтирования>
sudo ntfsfix -n <устройство_NTFS>

6. Выполнить Windows-проверку

Если заполнение сопровождалось сбоями записи:

chkdsk D: /f

7. Если свободное место отображается неправильно

Повреждение $Bitmap исправляется через:

chkdsk D: /f

Linux-инструменты не должны использоваться для ручной правки $Bitmap.

Алгоритм 11. NTFS поверх Linux Software RAID

1. Определить уровни

lsblk -e 7 -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS
cat /proc/mdstat
sudo mdadm --detail /dev/md0

Правильная Linux-цель:

/dev/md0

либо LV поверх /dev/md0.

Нельзя запускать ntfsfix на участниках:

/dev/sda1
/dev/sdb1

2. Проверить допустимость работы

Продолжать разрешено, если:

  • массив активен;
  • отсутствует dirty degraded;
  • допустимое число участников присутствует;
  • нет I/O-ошибок физических дисков;
  • recovery/resync завершён или выполняется штатно.

3. Если RAID деградирован

Для RAID1/10:

  1. прекратить запись;
  2. скопировать данные;
  3. заменить неисправный участник;
  4. дождаться recovery;
  5. проверить массив;
  6. только затем работать с NTFS.

Для RAID5/6 в состоянии dirty degraded:

  • не запускать ntfsfix;
  • не передавать том Windows;
  • не собирать массив с --force без отдельного плана;
  • сначала получить стабильный логический образ массива.

4. Отключить NTFS

sudo umount <точка_монтирования>

5. Сохранить состояние

cat /proc/mdstat > /mnt/healthy/mdstat-before.txt
sudo mdadm --detail /dev/md0 \
  > /mnt/healthy/md0-before.txt
sudo ntfsclone --metadata \
  --output /mnt/healthy/ntfs-mdraid-metadata.img \
  <устройство_NTFS>

6. Выполнить Linux-этап

sudo ntfsfix -n <устройство_NTFS>
sudo ntfsfix <устройство_NTFS>

7. Выполнить Windows-этап

Windows должна получать тот же собранный логический том, а не отдельный участник массива.

Если Windows не может видеть Linux mdraid напрямую:

  1. создать образ логического /dev/md0;
  2. восстановить образ на отдельный исправный диск;
  3. запустить chkdsk на клоне.

8. Проверить оба уровня

cat /proc/mdstat
sudo mdadm --detail /dev/md0

В Windows:

chkdsk D:

Алгоритм 12. NTFS поверх LVM

1. Определить уровни

lsblk -e 7 -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS
sudo pvs
sudo vgs
sudo lvs -a -o \
lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent,devices

Правильная цель:

/dev/mapper/<VG>-<LV>

Нельзя запускать ntfsfix на PV.

2. Проверить LVM

Убедиться, что:

  • все PV присутствуют;
  • VG не partial;
  • LV не partial;
  • thin pool не заполнен;
  • нижний диск, RAID или Multipath стабилен.

Критично:

Data% = 100
Meta% = 100

Переполнение thin pool не исправляется ntfsfix или chkdsk.

3. Если LVM partial

Не запускать ремонт NTFS.

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

4. Сохранить конфигурацию LVM

sudo vgcfgbackup -f \
  /mnt/healthy/<VG>-before.conf \
  <VG>

5. Отключить NTFS

sudo umount <точка_монтирования>

6. Сохранить метаданные NTFS

sudo ntfsclone --metadata \
  --output /mnt/healthy/ntfs-lvm-metadata.img \
  /dev/mapper/<VG>-<LV>

7. Выполнить Linux-этап

sudo ntfsfix -n /dev/mapper/<VG>-<LV>
sudo ntfsfix /dev/mapper/<VG>-<LV>

8. Выполнить Windows-этап

Если Windows не видит LVM:

  1. клонировать LV на обычный раздел исправного диска;
  2. подключить клон Windows;
  3. выполнить chkdsk /f.

Не передавать Windows физические PV по отдельности.

Алгоритм 13. NTFS поверх Multipath или SAN LUN

1. Определить карту Multipath

sudo multipath -ll
lsblk -e 7 -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS

Правильная цель:

/dev/mapper/mpatha
/dev/mapper/<WWID>

либо LV поверх карты.

Нельзя использовать отдельные пути:

/dev/sda
/dev/sdb

Они могут представлять один LUN.

2. Проверить пути

systemctl is-active multipathd
sudo multipath -ll

Проблемные состояния:

failed
faulty
offline
all paths down
no usable paths

3. Проверить единственного владельца LUN

NTFS не должна быть одновременно подключена в rw на нескольких независимых хостах.

Предупреждение

Тут требуется проверка (отсутствия активного read-write подключения этого LUN на других серверах и корректного владельца ресурса на стороне кластера или СХД).

4. Проверить SAN

Предупреждение

Тут требуется проверка (состояния HBA, SAN-коммутаторов, портов СХД, контроллеров СХД и доступности LUN по каждому пути).

Если потеряны все пути, NTFS не ремонтировать.

5. Скопировать данные

Если NTFS читается:

sudo rsync -aHAX --numeric-ids \
  <точка_монтирования>/ \
  <исправный_носитель>/

6. Отключить ресурс

sudo umount <точка_монтирования>

Остановить приложение или кластерный ресурс, способный подключить том обратно.

7. Сохранить состояние

sudo multipath -ll > /mnt/healthy/multipath-before.txt
sudo ntfsclone --metadata \
  --output /mnt/healthy/ntfs-san-metadata.img \
  <карта_или_LV>

8. Выполнить Linux-этап

sudo ntfsfix -n <карта_или_LV>
sudo ntfsfix <карта_или_LV>

9. Выполнить Windows-этап

Windows должна получать единый LUN через штатный Windows MPIO, а не отдельный путь.

Предупреждение

Тут требуется проверка (корректной настройки Windows MPIO и того, что Windows видит LUN как один логический диск).

В Windows:

chkdsk D: /f

10. Проверить пути после ремонта

sudo multipath -ll
journalctl -k -b --no-pager | grep -Ei \
'multipath|scsi|timeout|offline|I/O error|NTFS'

Алгоритм 14. Каталог подключён по NFS

NFS-клиент не видит локальное устройство NTFS сервера.

1. Подтвердить NFS

findmnt --target <каталог>

Пример:

SOURCE=server:/export/data
FSTYPE=nfs4

2. Не запускать NTFS-инструменты на клиенте

Нельзя выполнять для NFS-каталога:

ntfsfix
ntfsclone
chkdsk

3. Проверить доступность

ls -la <каталог>
df -hT <каталог>
journalctl -k -b --no-pager | grep -Ei \
'nfs|server not responding|stale file handle|I/O error'

4. Если данные читаются

sudo rsync -aHAX --numeric-ids \
  <каталог>/ \
  <локальный_исправный_носитель>/

5. Если ресурс недоступен

Предупреждение

Тут требуется проверка (состояния локальной файловой системы, физического носителя, RAID, LVM и журналов ядра на NFS-сервере).

На NFS-сервере может использоваться любая ФС. Наличие NFS не означает наличие NTFS.

6. Серверный ремонт

Если серверный экспорт расположен на NTFS:

  1. остановить запись клиентов;
  2. закрыть экспорт;
  3. определить нижний уровень;
  4. скопировать данные;
  5. отключить NTFS;
  6. выполнить Linux-этап;
  7. выполнить Windows chkdsk на томе или его клоне;
  8. вернуть экспорт.

Алгоритм 15. Каталог подключён по SMB или DFS

SMB/DFS является сетевым доступом к файлам. NTFS обычно находится на Windows-сервере, но может отсутствовать вовсе.

1. Подтвердить CIFS

findmnt --target <каталог>

Пример:

SOURCE=//domain.local/dfs
FSTYPE=cifs

2. Не запускать локальные инструменты NTFS

Клиент ALT Linux не видит серверный том.

Нельзя применять:

ntfsfix
ntfsclone
chkdsk

к точке монтирования CIFS.

3. Проверить доступность

ls -la <каталог>
df -hT <каталог>
journalctl -k -b --no-pager | grep -Ei \
'CIFS|SMB|DFS|reconnect|server|I/O error'

4. Если данные читаются

sudo rsync -aHAX \
  <каталог>/ \
  <локальный_исправный_носитель>/

Не гарантируется полное сохранение Windows ACL, Alternate Data Streams и серверных атрибутов при обычном копировании в Linux.

5. Если DFS или SMB недоступны

Предупреждение

Тут требуется проверка (доступности DFS Namespace, конечного SMB-сервера, целевого ресурса и локальной файловой системы на сервере).

6. Если конечный сервер Windows использует NTFS

На сервере:

  1. остановить доступ к шару;
  2. убедиться, что том не используется;
  3. проверить физический диск, RAID или MPIO;
  4. выполнить:
    chkdsk D: /scan
    
  5. назначить исправление:
    chkdsk D: /f
    
  6. проверить журнал Chkdsk/Wininit;
  7. вернуть SMB-ресурс.

Клиент ALT Linux выполнить этот ремонт не может.

Алгоритм 16. ntfsfix не помог или полноценный ремонт невозможен

Применять, если:

  • ntfsfix завершается ошибкой;
  • NTFS не монтируется после ntfsfix;
  • Windows chkdsk возвращает код 3;
  • повреждены критические метаданные;
  • ошибки повторяются после ремонта;
  • носитель нестабилен;
  • нет возможности получить Windows.

1. Прекратить повторные циклы ntfsfix

Повторное сбрасывание журнала не восстанавливает MFT и пользовательские данные.

2. Проверить нижний уровень

journalctl -k -b --no-pager | grep -Ei \
'I/O error|Buffer I/O|critical medium|reset|timeout|offline'

Проверить:

HDD/SSD
NVMe
RAID
LVM
Multipath

3. Создать полный образ

При физических ошибках:

sudo ddrescue -n \
  <исходное_устройство> \
  /mnt/recovery/ntfs.img \
  /mnt/recovery/ntfs.map

4. Сохранить metadata image

Если NTFS читается на уровне ntfs-3g:

sudo ntfsclone --metadata \
  --ignore-fs-check \
  --output /mnt/healthy/ntfs-failed-metadata.img \
  <копия_NTFS>

Не отправлять metadata image третьим лицам без оценки: имена файлов сохраняются.

5. Сохранить информацию

sudo ntfsinfo -m <копия_NTFS> \
  > /mnt/healthy/ntfs-info.txt

6. Извлечь доступные данные

Использовать алгоритм 17.

7. Признать обычный ремонт исчерпанным

Если Windows chkdsk не может исправить ошибки или NTFS повторно повреждается:

  1. извлечь максимум данных;
  2. заменить неисправный носитель;
  3. создать новую NTFS;
  4. восстановить данные из копии или резервной копии.

Алгоритм 17. Извлечение данных без ремонта NTFS

Применять, если изменение метаданных опасно или NTFS не монтируется.

1. Работать с копией

При нестабильном носителе создать образ через ddrescue.

Подключить образ:

sudo losetup -Pf --show /mnt/recovery/ntfs.img

2. Попытаться read-only монтирование

sudo mount -t ntfs-3g -o ro \
  <копия_NTFS> \
  /mnt/ntfs-recovery

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

sudo rsync -aHAX --numeric-ids \
  --ignore-errors \
  /mnt/ntfs-recovery/ \
  /mnt/restored/

3. Просмотреть каталог без монтирования

sudo ntfsls -l -p / <копия_NTFS>

Просмотреть другой каталог:

sudo ntfsls -l -p '/Users' <копия_NTFS>

4. Извлечь отдельный файл

sudo ntfscat \
  <копия_NTFS> \
  '/путь/к/файлу' \
  > /mnt/restored/файл

Проверить размер и содержимое полученного файла.

5. Создать клон NTFS

Для исправного источника:

sudo ntfsclone \
  --output /mnt/recovery/ntfs-clone.img \
  <устройство_NTFS>

Для источника с отдельными ошибками чтения лучше использовать ddrescue.

ntfsclone --rescue существует, но не заменяет map-файл и поэтапную работу GNU ddrescue с физически нестабильным диском.

6. Проверить извлечённые данные

Проверить:

  • документы;
  • архивы;
  • фотографии;
  • видео;
  • базы данных;
  • виртуальные диски;
  • контрольные суммы, если известны.

Чистая структура NTFS не гарантирует, что содержимое файла не попало в нечитаемый сектор.

Проверка после восстановления

После любого успешного алгоритма выполнить полный контроль.

1. Проверить нижний уровень

HDD/SSD:

sudo smartctl -x <диск>

NVMe:

sudo smartctl -x /dev/nvme0

RAID:

cat /proc/mdstat
sudo mdadm --detail /dev/md0

LVM:

sudo pvs
sudo vgs
sudo lvs -a -o +devices

Multipath:

sudo multipath -ll

2. Проверить в Windows

fsutil dirty query D:
chkdsk D:

Ожидается:

dirty bit не установлен
код завершения 0
ошибки не найдены

3. Проверить журнал CHKDSK

В PowerShell от имени администратора:

Get-WinEvent -FilterHashTable @{logname="Application"} |
  Where-Object {$_.ProviderName -match "chkdsk|wininit"} |
  Format-List TimeCreated,Message

4. Проверить данные

Проверить:

  • основные каталоги;
  • документы;
  • архивы;
  • приложения;
  • базы данных;
  • права доступа;
  • Alternate Data Streams;
  • найденные файлы и каталоги;
  • резервное копирование.

5. Вернуть в ALT Linux

Windows должна быть полностью выключена без гибернации и Fast Startup.

Подключить сначала только для чтения:

sudo mount -t ntfs-3g -o ro \
  <устройство_NTFS> \
  /mnt/ntfs-check

Проверить журнал:

journalctl -k -b -n 200 --no-pager

После успешной проверки отключить:

sudo umount /mnt/ntfs-check

6. Решить судьбу тома

NTFS следует пересоздать на исправном носителе, если:

  • применялось восстановление после bad sectors;
  • CHKDSK удалял множество записей;
  • повреждалась MFT;
  • файлы регулярно переходят в found.000;
  • ошибки повторяются;
  • носитель проявлял аппаратную деградацию;
  • том был повреждён после нескольких аварий питания.

Источники