Частичное форматирование диска. Низкоуровневое форматирование жесткого диска и флешки: какие программы использовать


Для форматирования накопителя через проводник начиная с Windows 7 можно выбрать два варианта - быстрое (очистка оглавления) и полное форматирование:


При этом не понятно, в чем между ними различия - давайте в этом разберемся. Для начала - определение форматирования:

Форматирование - процесс, который заключается в создании главной загрузочной записи с таблицей разделов и (или) структур пустой файловой системы , установке загрузочного сектора и тому подобных действий, результатом которых является возможность использовать носитель в операционной системе для хранения программ и данных.

Как видно, про удаление данных тут нет ни слова - по сути форматирование лишь дает возможность системе корректно работать с диском и информации на нем. Примером форматирования без удаления данных можно считать смену файловой системы с HFS+ на APFS при прошивке iOS 10.3 - файловая система сменилась, но все данные остались на месте. Но это скорее исключение - обычно под процессом форматирования подразумевается очистка диска от данных.

Теперь, когда с самим понятием разобрались, перейдем к типам форматирования.

Быстрое форматирование

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

Плюсы такого подхода ясны - экономится время, но есть и минусы:

  1. Удаления файлов не происходит, поэтому их после быстрого форматирования (в случае с жестким диском, о SSD поговорим позже) можно восстановить (частично или полностью) с помощью специальных программ. Так что если вы собрались кому-то отдать свой диск - быстрое форматирование не лучший вариант.
  2. Быстрое форматирование не проверяет состояние накопителя, и если на нем были сбойные сектора - они останутся, что в будущем может привести к потере данных и (или) некорректной работе накопителя.
Полное форматирование

При полном форматировании происходит не только запись загрузочного сектора и пустой таблицы файловой системы, но и выполняется запись нулей во все сектора диска. К тому же происходит проверка всех секторов диска, и сбойные сектора помечаются особым способом и в дальнейшем не используются для записи данных, поэтому после полного форматирования объем диска может несколько уменьшиться. Так как по сути нужно заполнить весь диск нулями, процесс полного форматирования происходит очень долго, особенно на жестких дисках (для терабайтного диска он может занять до 2-3 часов).

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




В случае с SSD система форматирует диски иначе - для быстрого форматирования используется команда TRIM: при ее использовании контроллер SSD затирает все данные на накопителе и пересоздает список секторов. То есть для SSD быстрое форматирование выполняет по сути то же самое, что для HDD - полное. Поэтому при быстром форматировании SSD о восстановлении данных можно забыть.

Выполнять полное форматирование SSD во-первых становится не нужным (так как быстрое и так все стирает), а во-вторых это может даже навредить SSD - он будет работать медленнее. Это происходит из-за того, что принципы работы HDD и SSD сильно различаются: в случае с последними запись во все ячейки нулей будет означать, что ячейки не пусты - они заняты нулями. И для последующей записи чего-либо в эти ячейки контроллеру SSD придется не записывать в них новую информацию, а перезаписывать (то есть сначала удалять нули, а потом уже записывать новую информацию) - это сильно снижает скорость работы SSD, бывает даже до скоростей обычных жестких дисков.

Какой тип форматирования выбрать

В итоге можно составить простенький алгоритм: если накопитель используете только вы, и он работает без сбоев - используйте быстрое форматирование. Если накопитель сбоит, или же вы хотите отдать его другому человеку - используйте полное форматирование (за исключением SSD - для него в любом случае используйте только быстрое форматирование).

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

К счастью, в большинстве случаев возможно полное восстановление HDD , и даже после такой пугающей многих пользователей операции, как форматирование диска.

Что происходит при форматировании диска?

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

Как известно, в операционной системе Windows существует два варианта форматирования: быстрое и полное. Существует весьма распространенный миф, который гласит, что при после полного форматирования диска данные восстановить невозможно, потому что Windows физически стирает информацию на нем. Действительно, все на первый взгляд логично: раз полное форматирование занимает больше времени, значит… Если вы думали так же, знайте: никакого «затирания» информации не происходит, и восстановление диска после полного форматирования ничем не отличается от случаев быстрого форматирвоания.

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

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

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

Самостоятельное восстановление диска после форматирования

К счастью, в некоторых случаях можно восстановить данные и самостоятельно. Для этого существует множество специальных программ. Вот несколько достаточно популярных программных решений для восстановления диска после форматирования:

  • EasyRecovery;
  • GetDataBack;
  • R-Studio;
  • UFS Explorer;
  • R.Saver.

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

Методика восстановления данных после форматирования следующая:

  1. исключить запись данных на отформатированный диск. Запомните: восстановление диска после форматирования будем тем успешнее, чем раньше вы это сделаете. Дело в том, что даже если вы сами ничего не записывали на отформатированный дисковый раздел, это могла сделать операционной система, которая постоянно обращается к диску;
  2. найти еще один диск большего размера;
  3. загрузиться с LiveCD, содержащего одну или несколько программ для восстановления данных, и провести сканирование и восстановление информации.

Имеет смысл попробовать несколько программ для восстановления диска после случайного форматирования, потому что результаты их работы несколько различаются: файлы, которые не обнаружила, к примеру, программа GetDataBack, может найти EasyRecovery, и наоборот.

Кстати, процесс восстановления данных занимает длительное время - все зависит от объема диска, и может занять весь день, так что запаситесь терпением.

Что делать, если нужные вам данные восстановить не удается?

Допустим, вы перепробовали множество программ, но либо не получили никакого результата, либо результат восстановления диска после форматирования вас не устраивает: например, восстановились не все данные. Что делать? Неужели это конец? Не спешите отчаиваться…

Дело в том, что автоматический анализ данных на отформатированном диске общедоступными программами не всегда дает идеальные результаты, и в тяжелых случаях помочь может только опытный специалист, досконально знающий внутреннюю «кухню» файловых систем. Лучшие мастера по восстановлению данных имеют свои уникальные программные наработки, помогающие упростить процесс восстановления диска после форматирования.

Найти таких специалистов вы сможете, обратившись в службу восстановления данных на жестком диске El-Recovery. В большинстве случаев ваши данные будут спасены, а заплатите вы только за успешный результат - диагностика в El-Recovery совершенно бесплатна.

Форматирование диска


Между прочим, сделать это не так уж и просто.

Если вы хотите просто запустить программу Format, то можете конечно ограничиться фнкцией Shell. Например: x=Shell (format a:) И все...

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

Так вот эта статья как раз посвящена тому, как эти неприятности убрать.

Если вы не привередливый, то все может прекрасно решить одна единственная API функция WinExec, которая может исполнять различные проги под Windows и MS-DOS

Вот ее объявление:

Private Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, _
ByVal nCmdShow As Long) As Long

lpCmdLine - строка, содержащая путь к программе для исполнения
nCmdShow - число, говорящее о том, как надо выводить окно (свернутым, развернутым...)

Какие значения может принимать nCmdShow:

SW_HIDE - программа спрятана, действие передано другому окну
SW_MINIMIZED - программа минимизирована (висит на панели задач). Другое окно активно
SW_RESTORE - окно развернуто до своего начального размера и позиции
SW_SHOW - окно развернуто до своего текущего размера и позиции
SW_SHOWMAXIMIZED - окно максимизировано и активно
SW_SHOWMINIMIZED - окно свернуто и активно
SW_SHOWMINNOACTIVE - окно свернуто, но активное окно не меняется
SW_SHOWNA - окно отображается в своем текущем положении и размере, но активное окно
не меняется
SW_SHOWNOACTIVATE - окно отображается в самом недавнем своем положении, но активное
окно не меняется
SW_SHOWNORMAL - окно отображается в своем оригинальном размере и положении

Значения этих констант смотрите в ApiLoader"е.

Отработав, функция WinExec возвращает значение больше 32, если все было успешно, если произошла ошибка, то функция возвратит ее код от 0 до 32:

0 - не хватает памяти
2 - файл не найден
3 - путь не найден
5 - ошибка совместного доступа
6 - каждая задача требует раздельные сегменты данных
10-неправильная версия Windows
11-неправильный EXE файл
12-нельзя выполнить приложение OS/2
13-нельзя выполнить приложение DOS 4.0
14-неизвестный EXE тип
15-защищенный режим памяти не поддерживается Windows
18-нельзя загрузить приложение защищенного режима в реальном режиме

Не знаю, понадобятся ли вам эти ошибки, но если понадобятся, то вот они.

Параметр lpCmdLine должен указывать на приложение, которое будет выполняться. Если не указан полный путь, то Windows будет производить поиск в следующем порядке:

1. Текущая папка
2. Директория Windows
3. Системная директория Windows
4. Папка, в которой находится активная программа
5. Все директории, определенные в окружении PATH
6. Сетевые директории

Функция WinExec может выполнять приложения, работающие из-под Windows или из-под DOS, с расширениями EXE, COM и BAT. Также, могут быть выполнены экранные заставки (SCR) и программно-информационные файлы (PIF).

Но вернемся к нашей задаче: отформатировать дискету. В Windows входят несколько PIF-файлов, в том числе и DOSPRMT.PIF. Этот файл говорит, какой режим надо устанавливать для исполнения задачи, например, сколько памяти надо отводить под приложение MS-DOS. Воспользовавшись этим файлом, мы можем заставить Windows выполнить команду DOS - Format . Пробовать форматировать мы будем диск A, поэтому смотрите, что есть у вас и ставьте свою букву. (Можете, конечно C, но учтите, что процесс остановить будет нельзя:)

Итак, первую проблему мы решили: с помощью функции WinExec выполнили команду format a: и запустили ее в режиме WM_HIDE, то-есть спрятали. Причем, вы не увидите процесс форматирования даже при нажатии Ctrl-Alt-Del (C-A-D)!

Но как уже говорилось, это только первая часть. Теперь, как сделать так, чтобы нас не спрашивали про всякие метки тома, действительно ли форматировать и все такое. Тут, в дело вступает автоматизация. Объясняю принцип: создается временный файл, туда запихивается последовательность клавиш, которая нажимается при форматировании, а дальше, с помощью командной строки, содержимое файла передается процессу format. И все!

Только учтите, что если вы собираетесь форматировать жесткий диск, то последовательность клавиш там будет отличная, чем если вы форматируете флоппик.

Таким образом, командная строка приобретает вид:
format a: < c:\responce.tmp
где responce.tmp - это временный файл с набором клавиш.

Ну вот, теперь настало время для примера. Готовый проект можно сгрузить внизу этой страницы, а сейчас я поясню несколько моментов к примеру.

Пример показывает, как форматируется диск A. С первого взгляда, я понапихал туда слишком много объектов. Ну и в самом деле, зачем там таймер? А вот зачем: вы можете создать файл responce.tmp, вызвав WinExec, запустить процесс форматирования, а затем написать Kill "c:\responce.tmp" - и это буде неправильно! Почему? Потому что пока Format будет раскочегариваться, ваша программа успеет уже раз десять удалить файл с клавишами, ведь управление из нее никуда не девается.

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

Конечно, при таком подходе, возможны баги, и если вы придумаете что-нть получше, напишите мне. :-]

Ну а со строкой состояния, это уже конечно прибабмбасы...

Вот и все,
приятного программирования.