Форматирование

Форматирование — это процесс записи специальных отметок на магнитную поверхность для разделения дорожек и секторов. До форматирования поверхность диска состоит из различных магнитных сигналов. При форматировании эти сигналы упорядочиваются, создавая дорожки и сектора. В деталях процесс сложнее, и это выходит за рамки этой книги. Главное, что диск нельзя использовать до его форматирования.

В MS-DOS форматирование также включает создание файловой системы. Особенно это актуально при работе с гибкими дисками. Если разграничивать эти процессы, то на низком уровне происходит форматирование, а на высоком — создание файловой системы. В UNIX (и в этой книге) будут использоваться понятия "форматирование" и "формирование файловой системы".

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

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

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

Для форматирования дискет служит программа fdformat(8). В качестве параметра указывается файл устройства. Например, для форматирования обычной дискеты 3.5 дюйма высокой плотности в первом приводе используется команда:

ttyp5 root ~  $ fdformat /dev/fd0H1440
Double-sided,  80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting  ... done
Verifying  ... done
ttyp5 root ~ $

Если используется автоматическое устройство (например, /dev/fd0), параметры этого устройства нужно задать через программу setfdprm(8). Для аналогичного результата выполняются следующие команды:

ttyp5 root ~  $ setfdprm /dev/fd0 1440/1440
ttyp5 root ~  $ fdformat /dev/fd0
Double-sided,  80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting  ... done
Verifying  ... done
Double-sided,  80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting  ... done
Verifying  ... done
ttyp5 root ~ $

Чаще всего проще указать конкретный файл устройства, соответствующий типу форматируемого диска.

Программа fdformat также используется для обнаружения плохих блоков. Если проблемы не критичны (например, загрязненные головки или плохой контакт в разъеме контроллера), программа продолжает работу. Но серьезные ошибки прерывают процесс. Ошибки выводятся на терминал или, при использовании syslog, в файл /usr/adm/messages. Пример:

ttyp5 root ~  $ fdformat /dev/fd0H1440
Double-sided,  80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting  ... done
Verifying  ... read: Unknown error
ttyp5 root ~ $

Для поиска плохих блоков на любом диске или разделе используется команда badblocks(8). Она не форматирует диск, поэтому можно проверять даже существующие файловые системы. Пример:

ttyp5 root ~  $ badblocks /dev/fd0H1440
718
719
ttyp5 root ~ $

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

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