Nodevice.su
[AD970x90]
ГлавнаяСтатьиУстройства хранения информацииЛогическая организация жесткого диска
Поиск по сайту:
пример: "ASUS dvd"









Фильтр файлов
Производитель:
Устройство:
Архив новостей:
« 04.2024
Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Последние новости

Наша кнопка


Размести на своем сайте HTML код с нашей кнопкой.

Статья "Логическая организация жесткого диска"

[AD1]

Логическая организация жесткого диска

 

Вы знаете, что такое MBR? Что такое основной и расширенный раздел диска? Что такое кластеры, как они могут быть \"потеряны\"? Как работает бут-вирус? Для чего нужен fdisk? Если нет, то вам будет полезно прочитать эту статью.

Немного о физической организации

Жесткий диск состоит из нескольких металлических пластин, головок чтения-записи и механизма их позиционирования, помещенных в герметичную коробку (банку). К нему прикреплена печатная плата с контроллером и буферной памятью (кэшем), которая посредством шлейфа (40 или 80 жил) соединяется с материнской платой или отдельным контроллером. Так вот, металлические пластины условно разбиты на концентрические дорожки, а дорожки разделены на сектора. Дорожки на равном расстоянии от центра на всех поверхностях пластин объединяются в цилиндры. Таким образом, для чтения определенного сектора данных (его емкость принята равной 512 байт) нужно 1) отвести головки на нужное расстояние от центра, то есть позиционировать на нужный цилиндр, 2) начать просмотр дорожки на нужной пластине, активировав нужную головку и 3) производить чтение всей информации до появления заголовка сектора, номер которого (содержится в этом заголовке) совпадает с нужным нам для операции чтения или записи. В соответствии с такой схемой метод нахождения нужной информации на жестком диске называется CHS-адресацией (Cylinder-Head-Sector).

BIOS (базовая система ввода-вывода) является набором системных подпрограмм (функций), среди которых есть и программа чтения-записи данных на жестком диске. Для получения содержимого одного сектора требуется указать его CHS-адрес. Число секторов, цилиндров и головок BIOS\'у должно быть известно, для этого и существует автодетект в Setup. Впрочем, информация о геометрии, используемая для работы функций доступа к диску, даже близко не соответствует реальной геометрии современного жесткого диска. У него 1-3 пластины, одна из которых может использоваться только с одной стороны, и 1-6 головок. Поэтому контроллер жесткого диска производит трансляцию поступающих адресов, такую же трансляцию производит и BIOS, работая по механизму LBA (Logical Block Addressing). Но это уже другая история.

В соответствии с идеологией MS-DOS жесткий диск может состоять из так называемых \"разделов\" - независимых областей диска, которые могут быть построены по схеме любой операционной системы, то есть использовать любую файловую систему. Таких разделов должно быть два - основной (Primary), с которого обычно осуществляется загрузка, и расширенный (Extended), который может быть разделен на несколько частей-подразделов (логических дисков). Таким образом, первый раздел диска самостоятелен, остальные объединяются в группу. Каждый раздел имеет принадлежность к той или иной файловой системе.

В рамках DOS (и основанных на этой же операционной системе Windows3.x/95/98/ME) существуют три файловых системы - FAT12, FAT16 и FAT32. Об их отличиях я упомяну ниже.

Системные сектора

Самый первый сектор любого жесткого диска имеет название Master Boot Record, MBR. Он состоит из двух частей - программы начального загрузчика и таблицы разделов (Disk Partition Table, DPT). DPT состоит из четырех записей, обозначающих адрес начала раздела, его размер в секторах, адрес конца и тип файловой системы. Конечно, используется только две записи - для основного и расширенного раздела, потому что каждый подраздел (логический диск) имеет такую же DPT с указанием адреса следующего подраздела. Задача загрузчика в MBR - дать возможность загрузки с нужного раздела (т.е. использовать несколько операционных систем). Стандартный загрузчик DOS предоставляет весьма ограниченный механизм выбора - загрузка возможна с того раздела, у которого установлен флаг активности таблице DPT.

Самый первый сектор раздела называется Boot Sector. В его составе также есть загрузочная программа и таблица BIOS Parameter Block, BPB. В этой таблице есть информация о местонахождении и размере другой важной области - таблицы размещения файлов, FAT. По своей сути FAT - это большой массив элементов, каждый элемент соответствует каждому кластеру. Кластер - блок секторов (от 8 до 128), элемент распределения всего дискового пространства раздела. Каждому файлу при его создании выделяется нужное число кластеров. Номер первого кластера заносится в каталог (директорий, папку), а соответствующий этому кластеру элемент FAT содержит номер второго кластера. Элемент FAT, соответствующий второму кластеру, содержит номер третьего кластера и т.д. Весь FAT состоит из таких цепочек (Chains).

Если элемент FAT не связан ни в одну цепочку, и при этом не равен 0, он называется \"потерянным\" (Lost Cluster). \"Потеря\" кластеров происходит при перезагрузке в момент записи цепочки в FAT, например, при создании/изменении файла, когда операция записи прерывается. Конечно, это не самые страшные последствия неожиданной перезагрузки, но все же терять место на диске не очень хочется. Программисты из Microsoft хорошо знали о \"стабильности\" своей Windows, поэтому и запускается Scandisk автоматически.

Если файл впоследствии увеличивается в размерах, ему назначаются новые кластеры из числа свободных, причем чаще всего они находятся в другом месте диска. Цепочка \"перепрыгивает\" другие цепочки - вот вам и фрагментация, которую устраняют программы-дефрагментаторы, переносящие файлы так, чтобы их кластеры шли друг за другом по порядку.

Хотя система цепочек и является достаточно эффективной и простой, у нее есть недостатки. Во-первых, низкая надежность - при исчезновении одного элемента весь файл будет нечитаемым, а порча FAT означает потерю большого количества (если не всех) файлов. Для устранения этого недостатка существует две одинаковых копии FAT. Второе - если размер файла не кратен размеру кластера, образуется слек (Slack) - часть кластера, не занятая полезной информацией. Чем больше размер кластера, тем большая часть диска занята слеком. Для файла длиной 1 байт вы теряете весь кластер, а если он имеет большой размер (32 Кбайта, например), то потери на слек могут составлять 30-50% от общей емкости диска (кстати, проверить их можно программой Sandra - модуль Drive Information).

Размер элемента FAT дает название самой файловой системе. FAT12 имеет 12-битные элементы, которые позволяют организовать на диске около 4-х тысяч кластеров. FAT16 имеет 16-битные элементы, число кластеров - 65530. FAT32 - 32-битные элементы, около 4 млрд. кластеров. Чем больше на диске будет кластеров, тем меньше можно сделать размер самого кластера и тем самым меньше потерять места. По этому FAT12 используется только для гибких дисков, FAT16 - для дисков емкостью до 500 Мб (в принципе можно и до 2 Гб).

Начальная загрузка

Загрузка операционной системы происходит следующим образом:

  1. BIOS, после проведения первичной самодиагностики (POST, Power-On Self-Test), считывает самый первый сектор с того устройства, которое задано первым в Setup (Advanced Features, Boot Sequence или First Boot Device) и начинает его выполнение;
  2. Загрузчик, который был в этом секторе, просматривает свою таблицу разделов на предмет наличия активного (загрузочного) раздела, вычисляет адрес загрузочного сектора активного раздела, считывает и запускает этот сектор;
  3. Загрузчик из boot-сектора выполняет считывание и запуск файлов операционной системы; для DOS 7.1, входящей в состав Windows95/98, это всего один файл - IO.SYS;
  4. IO.SYS сначала просматривает файл CONFIG.SYS - ищет там загрузочное меню, устанавливает драйвера устройств, которые там могут быть заданы (кроме того, HIMEM.SYS, IFSHLP.SYS и SETVER.EXE загружаются в любом случае), после чего запускает обработчик командной строки COMMAND.COM;
  5. COMMAND.COM выполняет пакетный файл AUTOEXEC.BAT, после чего вызывает программу WIN.COM; впрочем, если подправить файл MSDOS.SYS (бывший компонент операционной системы, сейчас просто конфигурационный файл), COMMAND.COM не начнет загрузку Windows, перейдя в режим диалога.

Все эти операции происходят без участия программы кэширования дисковых операций (SMARTDRV.EXE - стандартная программа кэширования), поэтому происходит постоянное обращение к FAT за информацией о кластерах каждого файла. Значит, при проведении дефрагментации загрузочного раздела жесткого диска следует предусмотреть расположение перечисленных файлов как можно ближе к началу диска. Первым на диске должен быть файл подкачки WIN386.SWP, потом - директории (или каталоги, папки - кто как привык их называть), после них нужно располагать файлы, участвующие в загрузке. Конечно, стандартный Defrag этого не может, но есть много других хороших программ дефрагментации. Если вы еще не пользуетесь ими, подумайте, может быть, есть смысл установить Norton Utilities 2000, в составе которых имеется дефрагментатор Speed Disk.

Boot virus

Так называется разновидность вирусов, внедряющихся на одном из этапов начальной загрузки, обычно на самом первом. Boot-вирус записывает в MBR свой загрузчик вместо исходного. Тем самым вместо операционной системы первым загружается вирус. Он размещает в памяти свое тело, которое хранит в неиспользованных секторах, идущих после MBR, но до первого загрузочного сектора раздела. Перехватив обращения к дискам, вирус продолжает загрузку операционной системы. В случае обращения к дискете вирус изменит ее boot-сектор, заменив в нем программу-загрузчик. Если пользователь загрузится с такой дискеты, вирус получит управление и сразу же заразит MBR жесткого диска.

Если boot-вирус не умеет заражать файлы, обходясь только системными секторами, он не представляет большой опасности. Во-первых, заразиться можно только при загрузке с дискеты (или второго жесткого диска), во-вторых, можно просто включить \"Virus Warning\" в Setup - вы получите предупреждение о попытке вторжения в загрузочный сектор (вопреки распространенному мнению, эта опция должна выключаться только при инсталляции Windows), в-третьих, вылечить жесткий диск можно всего одной командой - \"fdisk /mbr\", которая записывает в MBR оригинальную программу-загрузчик.

Проблемы при загрузке

Нарушение процесса загрузки может произойти на любом из этапов. Чтобы определить причину и \"виновника\", нужно обратить внимание на появляющиеся сообщения:

  1. Если все сообщение - в верхнем регистре (т.е. заглавными буквами), то это BIOS не находит MBR на указанном ему в Setup устройстве, что свидетельствует об ошибке чтения либо об отсутствии признака системного сектора у первого сектора диска (т.е. диск не размечен). Чтобы убедиться, что с диском все нормально, нужно зайти в BIOS Setup и запустить Autodetect.
  2. Сообщения \"Invalid partition table\" и \"Error loading operating system\" принадлежат загрузчику из MBR; загрузочный сектор активного раздела либо не читается, либо его еще (или уже) нет;
  3. Сообщения \"Invalid system disk\" и \"Disk I/O error\" выдает загрузчик из boot-сектора, сообщая об отсутствии файлов операционной системы или об ошибке на диске.

Что делать в случаях, когда загрузка не происходит? Рассмотрим это по пунктам:

  1. Если проблема не связана с самим диском, нужно серьезно разбираться с тем, куда делись системные сектора. Обычным пользователям это не под силу.
  2. Во втором случае налицо либо нарушения таблицы DPT, либо разрушение загрузочного сектора. Лечить диск запуском NDD или Scandisk с дискеты я не рекомендую - можно все окончательно загубить и добавить работы тем, кто будет потом восстанавливать информацию на диске;
  3. В третьем случае системные файлы могли быть удалены или испорчены, можно попытаться исправить ситуацию загрузкой с дискеты и вводом команды \"sys c:\".

NDD, Scandisk, fdisk… Советы

Прежде всего, при возникновении серьезных проблем с системными секторами никогда не пользуйтесь программами диагностики NDD или Scandisk. Назначение таких программ - отыскание \"потерянных\" кластеров и \"отвязанных\" длинных имен, все остальное им не под силу.

Для \"ручной\" работы с диском обычно используется Diskedit из комплекта Norton Utilities - не потому что он самый продвинутый и удобный, а в силу привычки, так как Нортоновские утилиты существуют с незапамятных времен. Если вы не владеете глубокими знаниями о структуре и механизмах работы системных секторов и загрузчиков, вам лучше не пытаться экспериментировать с этой программой. Хотя иметь ее, безусловно, необходимо. Для чего - смотрите ниже.

А вот уметь пользоваться fdisk должен каждый. Как размечать ей диски - не тема этой статьи. Могу только дать одну подсказку. Если вы хотите выделить первый раздел диска исключительно под Windows, лучше задать ему размер 1-2 Гб и поставить туда FAT16 - быстрее будет грузиться, легче будет, в случае чего, восстанавливать. Известно, что fdisk по умолчанию устанавливает FAT32 на раздел больше 500 Мб. Чтобы \"переубедить\" его, выберите \"N\" в \"начальной заставке\" fdisk (там, где что-то говорится о поддержке больших разделов). Размечайте первый раздел (больше 2 Гб не получится), запускайте fdisk снова, выбрав уже \"Y\".

Еще один совет. После разметки и форматирования нового диска не поленитесь создать загрузочную дискету, на которую с помощью diskedit запишите MBR (Alt-A, Alt-W, выбрать имя файла), загрузочный сектор первого раздела (Alt-B, Alt-W, имя файла), diskedit, unerase, fdisk, sys, format, himem.sys, какой-нибудь русификатор (если DOS русифицирована). В случае сбоя такая дискета позволит сэкономить массу времени и нервов.

Теперь совет по восстановлению. Если вы умеете пользоваться diskedit\'ом, вы можете восстановить \"полетевший\" жесткий диск и без автоматических программ-восстановителей типа Tiramisu. Как найти начало раздела - понятно, по сигнатуре 55АА, причем в последних версиях diskedit можно искать по определенному смещению (в данном случае это \"510\"). Бут-сектор (если не стандарта FAT32, который занимает три сектора) можно взять у дискеты и вручную подобрать параметры. Восстановить FAT тоже возможно. Для этого нужно найти корневой каталог (искать нужно строку \"MSDOS \" или \"COMMAND COM\"), каждому файлу изменить первую букву названия на русскую \"х\" (код E5), после чего запустить unerase. Чем меньше фрагментация, тем выше шансы вернуть файлы к жизни, поэтому проводить дефрагментацию важных данных нужно как можно чаще.



Автор статьи: Макс Курмаз
Обсудить статью на форуме Версия для печати

Комментарии к статье:

К данной статье комментарии пока что отсутствуют.
Добавить комментарий
Ваше имя:
Ваш e-mail:
Введите код:
Ваше сообщение:
После модерации Ваш комментарий в течение двух дней будет добавлен на сайт

Статьи категории Устройства хранения информации

Cтраницы: Следущая 1 2 3 4 5 6 7 8 9 10 Следущая Последняя
Новые драйвера Топ DLL-файлов Топ мануалов Популярные запросы
Драйвер Intex IT-305WC Windows XP, 2000, 98, ME DLL-файл binkw32.dll Panasonic KX-TC 1481, 1484, 1486 W03
Драйвер Lapara LA-1300k-x5 Windows 7 DLL-файл xinput1_3.dll Pioneer DEH-P3600MP ASUS swd generic
Драйвер Lexmark X1290 Windows XP, 2000, 2003 DLL-файл Mss32.dll Becker AUDIO 10 ECE TYP 6021 PCI\VEN_13F6&DEV_0111&CC_0401
Драйвер HP ENVY m4 series Intel Management Engine Interface (MEI) Windows 8 64-bit DLL-файл OpenAL32.dll SONY XR-3750 aod250 vga
Драйвер HP ENVY m4 series IDT High-Definition (HD) Audio Driver Windows 8 64-bit DLL-файл MSCOMCTL.OCX Panasonic KX-TC 1401, 1405 aod250
Драйвер HP ENVY m4 series IDT High-Definition (HD) Audio Driver Windows 8 64-bit DLL-файл KERNEL32.DLL Panasonic KX-TC 1503 F159
Драйвер HP ENVY dv7 series 3D DriveGuard Windows 8 64-bit DLL-файл msvcr71.dll Pioneer DEH-P4650MP VIA VT1705
Драйвер HP ENVY dv7 series Intel Rapid Storage Technology Driver Windows 8 64-bit DLL-файл COMDLG32.OCX Dialon F10 Звуковой адаптер VIA VT1705 @ nVIDIA nForce 7025-6
Драйвер HP ENVY dv7 series Realtek Card Reader Driver Windows 8 64-bit DLL-файл binkw32.dll Pioneer DEH-P3630MP Msi
Драйвер HP ENVY dv7 series Ralink Bluetooth Software Driver Windows 8 64-bit DLL-файл d3dx9_30.dll APC BACK-UPS - 600 Realtek c655 @ nvidea nforce4
Драйвер HP ENVY dv7 series Realtek Local Area Network (LAN) Driver Windows 8 64-bit DLL-файл storm.dll Sony DCR-DVD105E Realtek c655
Драйвер HP ENVY dv7 series Intel Bluetooth Driver Windows 8 64-bit DLL-файл openal32.dll SONY CDX-F5500X Realtek c655
Драйвер HP ENVY dv7 series Qualcomm Atheros AR9000 Series Wireless LAN Driver Windows 8 64-bit DLL-файл msvcp71.dll APC SMART-UPS V/S - 1000 Realtek c655
Драйвер HP ENVY dv7 series Ralink 802.11 Wireless LAN Adapter Windows 8 64-bit DLL-файл lame_enc.dll Pioneer DEH-4050 Realtek c655
Драйвер HP ENVY dv7 series Ralink Bluetooth Software Driver Windows 8 64-bit DLL-файл COMCTL32.OCX Scher-Khan Magicar 5 149202