На данный момент доступно большое количество программ для восстановления случано удаленных файлов и разделов на жестком диске или USB накопителе. Все эти программы основываются на том, что при удалении файла с файловой системы, его данные и метаданные продолжают хранится на физическом носителе, пока не будут перезаписаны новыми файлами. Программы восстановления удаленных файлов позволяют просканировать диск и найти удаленные файлы по сигнатурам на диске и при анализе неиспользуемых блоков диска. Однако классический подход восстановления файлов не работает с устройствами SSD (Solid State Drive) с поддержкой функции TRIM. Давайте разберемся почему.
Удаление файлов с SSD накопителя и команда TRIM
Процесс удаления файлов на SSD кардинально отличается от процесса удаления файлов на классическом жестком диске. При удалении файла ОС посылает на SSD устройство команду интерфейса ATA — TRIM, которая сообщает что эти данные не нужны. Устройство SSD помечает эти ячейки на удаление и в фоновом режиме обнуляет их (фоновый процесс сбора мусора). Это позволяет более быстро сохранять данные в свободные ячейки SSD и увеличивает срок службы устройства. Таким образом команда TRIM заставляет накопитель физически очищать неиспользуемые блоки данных.
В результате любая программа восстановления файлов видит в незанятых ячейках SSD только нули.
Получается, что если ваш SSD диск подключен к компьютеру через SATA интерфейс, то практически невозможно восстановить с него удаленные данные. Это относится и к SSD дискам с интерфейсом NVMe. Для таких устройств есть аналог команды TRIM, которая называется – Deallocate (является аналогом TRIM для ATA, поддерживается в Windows 8 и выше).
Как Windows определяет SSD диски?
Windows по-умолчанию включает поддержку команду TRIM для SSD дисков, которые подключены через интерфейс ATA/IDE/SATA/M.2/PCI Express (но не USB!) в режиме AHCI (бывает, что внутренние SSD диски некорректно отображаются как съемные устройства). Это необходимо для оптимизации работы твердотельных накопителей. Кроме того, TRIM используется только для файловых систем NTFS и REFS. При выполнении этих условий при удалении файла автоматически выполняется команда TRIM и фоновый процесс SSD практически сразу очищает ячейки.
Таким образом вы сможете восстановить удаленные файлы и разделы с SSD накопителя если:
- SSD накопитель подключен к компьютеру через USB или FireWire порт;
- У вас используется RAID массив из SSD (Windows не включает TRIM для такого устройства);
- У вас используется старые версии ОС: Windows Vista, Windows XP, MacOS до OS X 10.10.4 (в этих версиях TRIM не поддерживается);
- TRIM отключен на уровне ОС;
- Ваш SSD не поддерживает команды TRIM (возможно на старых моделях SSD);
- SSD диск отформатирован не файловой системе NTFS (например в FAT32, exFat и т.д).
Пример восстановления удаленных файлов с SSD накопителя
Рассмотрим особенности восстановления данных на SSD накопителе с помощью программы EaseUS Data Recovery Wizard Free. Бесплатная версия программы позволяет восстановить до 500 Мб удаленных файлов (либо до 2 Гб, если вы поделились ссылкой на программу в Facebook или Twitter). Но вы можете воспользоваться любой аналогичной программой для восстановления удаленных файлов или даже встроенной утилитой Windows File Recovery.
Итак, у меня к компьютеру подключен SSD диск. Проверим, что один из дисков (21 Гб), определяется как SSD с помощью команды PowerShell Get-PhysicalDisk:
Get-PhysicalDisk | Select Number, PhysicalLocation, MediaType, Size
Проверим, включена ли для него функция Trim:
fsutil behavior query DisableDeleteNotify
Следующая строка означает, что TRIM включен:
NTFS DisableDeleteNotify = 0 (Disabled) ReFS DisableDeleteNotify = 0 (Disabled)
Попробую удалить с SSD накопителя один файл и восстановить его с помощью EaseUS Data Recovery Wizard:
- Я скачал и установил бесплатную версию программы с сайта разработчиков.Для предотвращения случайной перезаписи удаленных блоков на диске, нельзя устанавливать программы восстановления данных на тот же диск, с которого вы хотите восстанавливать файлы!
- Теперь я удаляю произвольный файл на SSD накопителе;
- Запускаю утилиту восстановления, выполняю полное сканирование SSD диска. В моем случае утилита восстановления данных не нашла удаленный файл.
Теперь попробуем отключить поддержку TRIM в Windows с помощью команды:
fsutil behavior set DisableDeleteNotify 1
Если TRIM отключен успешно, вы увидите сообщение “NTFS DisableDeleteNotify = 1 (Enabled)”.
Можно отключить TRIM только для определенной файловой системы. Так:
fsutil behavior set disabledeletenotify NTFS 1
или так
fsutil behavior set disabledeletenotify ReFS 1
sudo trimforce disable
Я удаляю еще один файл с SSD накопителя и запускаю полное сканирование диска утилитой восстановления. Программа моментально находит удаленный файл и предложит восстановить его.
Выберите файл, который нужно восстановить и нажмите кнопку Recover. При восстановлении файла желательно указать другой диск, чтобы случайно не перезатереть метеданные на диске.
fsutil behavior set DisableDeleteNotify 0
Итак, мы убедилесь что при включенном TRIM нельзя восстановить удаленный файл с SSD диска. Не помогает даже поиск по файловым сигнатурам.
Таким образом, чтобы команда TRIM не применялась к SSD диску, вы можете:
- подключить SSD устройство через интерфейс USB, FireWire или Thunderbolt;
- Отключить TRIM на уровне ОС. Однако это сокращает срок службы SSD накопителя и уменьшает скорость записи на диск.