Специальная область жесткого диска где хранится информация о нахождении каталогов
Для работы с жестким диском его для начала необходимо как-то разметить, чтобы операционная система могла понять в какие области диска можно записывать информацию. Поскольку жесткие диски имеют большой объем, их пространство обычно разбивают на несколько частей — разделов диска. Каждому такому разделу может быть присвоена своя буква логического диска (для систем семейства Windows) и работать с ним можно, как будто это независимый диск в системе.
Способов разбиения дисков на разделы на сегодняшний день существует два. Первый способ — использовать MBR. Этот способ применялся еще чуть ли не с появления жестких дисков и работает с любыми операционными системами. Второй способ — использовать новую систему разметки — GPT. Этот способ поддерживается только современными операционными системами, поскольку он еще относительно молод.
Структура MBR
До недавнего времени структура MBR использовалась на всех персональных компьютерах для того, чтобы можно было разделить один большой физический жесткий диск (HDD) на несколько логических частей — разделы диска (partition). В настоящее время MBR активно вытесняется новой структурой разделения дисков на разделы — GPT (GUID Partition Table). Однако MBR используется еще довольно широко, так что посмотрим что она из себя представляет.
MBR всегда находится в первом секторе жесткого диска. При загрузке компьютера, BIOS считывает этот сектор с диска в память по адресу 0000:7C00h и передает ему управление.
Итак, первая секция структуры MBR — это секция с исполняемым кодом, который и будет руководить дальнейшей загрузкой. Размер этой секции может быть максимум 440 байт. Далее идут 4 байта, отведенные на идентификацию диска. В операционных системах, где идентификация не используется, это место может занимать исполняемый код. То же самое касается и последующих 2 байт.
Начиная со смещения 01BEh находится сама таблица разделов жесткого диска. Таблица состоит из 4 записей (по одной на каждый возможный раздел диска) размером 16 байт.
Структура записи для одного раздела:
Первым байтом в этой структуре является признак активности раздела. Этот признак определяет с какого раздела следует продолжить загрузку. Может быть только один активный раздел, иначе загрузка продолжена не будет.
Следующие три байта — это так называемые CHS-координаты первого сектора раздела.
По смещению 04h находится код типа раздела. Именно по этому типу можно определить что находится в данном разделе, какая файловая система на нем и т.п. Список зарезервированных типов разделов можно посмотреть, например, в википедии по ссылке Типы разделов.
После типа раздела идут 3 байта, определяющие CHS-координаты последнего сектора раздела.
CHS-координаты сектора расшифровываются как Cylinder Head Sector и соответственно обозначают номер цилиндра (дорожки), номер головки (поверхности) и номер сектора. Цилиндры и головки нумеруются с нуля, сектор нумеруется с единицы. Таким образом CHS=0/0/1 означает первый сектор на нулевом цилиндре на нулевой головке. Именно здесь находится сектор MBR.
Все разделы диска, за исключением первого, обычно начинаются с нулевой головки и первого сектора какого-либо цилиндра. То есть их адрес будет N/0/1. Первый раздел диска начинается с головки 1, то есть по адресу 0/1/1. Это все из-за того, что на нулевой головке место уже занято сектором MBR. Таким образом, между сектором MBR и началом первого раздела всегда есть дополнителььные неиспользуемые 62 сектора. Некоторые загрузчики ОС используют их для своих нужд.
Интересен формат хранения номера цилиндра и сектора в структуре записи раздела. Номер цилиндра и номер сектора делят между собой два байта, но не поровну, а как 10:6. То есть на номер сектора приходится младшие 6 бит младшего байта, что позволяет задавать номера секторов от 1 до 63. А на номер цилиндра отведено 10 бит — 8 бит старшего байта и оставшиеся 2 бита от младшего байта: «CCCCCCCC CCSSSSSS», причем в младшем байте находятся старшие биты номера цилиндра.
Проблема с CHS-координатами состоит в том, что с помощью такой записи можно адресовать максимум 8 Гб диска. В эпоху DOS это было приемлемо, однако довольно скоро этого перестало хватать. Для решения этой проблемы была разработана система адресации LBA (Logical Block Addressing), которая использовала плоскую 32-битную нумерацию секторов диска. Это позволило адресовать диски размером до 2Тб. Позже разрядность LBA увеличили до 48 бит, однако MBR эти изменения не затронули. В нем по-прежнему осталась 32-битная адресация секторов.
Итак, в настоящее время повсеместно используется LBA-адресация для секторов на диске и в структуре записи раздела адрес его первого сектора прописывается по смещению 08h, а размер раздела — по смещению 0Ch.
Для дисков размером до 8Гб (когда адресация по CHS еще возможна) поля структуры с CHS-координатами и LBA-адресации должны соответствовать друг другу по значению (корректно конвертироваться из одного формата в другой). У дисков размером более 8Гб значения всех трех байт CHS-координат должны быть равны FFh (для головки допускается также значение FEh).
В конце структуры MBR всегда находится сигнатура AA55h. Она в какой-то степени позволяет проверить, что сектор MBR не поврежден и содержит необходимые данные.
Структура MBR
До недавнего времени структура MBR использовалась на всех персональных компьютерах для того, чтобы можно было разделить один большой физический жесткий диск (HDD) на несколько логических частей — разделы диска (partition). В настоящее время MBR активно вытесняется новой структурой разделения дисков на разделы — GPT (GUID Partition Table). Однако MBR используется еще довольно широко, так что посмотрим что она из себя представляет.
MBR всегда находится в первом секторе жесткого диска. При загрузке компьютера, BIOS считывает этот сектор с диска в память по адресу 0000:7C00h и передает ему управление.
Итак, первая секция структуры MBR — это секция с исполняемым кодом, который и будет руководить дальнейшей загрузкой. Размер этой секции может быть максимум 440 байт. Далее идут 4 байта, отведенные на идентификацию диска. В операционных системах, где идентификация не используется, это место может занимать исполняемый код. То же самое касается и последующих 2 байт.
Начиная со смещения 01BEh находится сама таблица разделов жесткого диска. Таблица состоит из 4 записей (по одной на каждый возможный раздел диска) размером 16 байт.
Структура записи для одного раздела:
Первым байтом в этой структуре является признак активности раздела. Этот признак определяет с какого раздела следует продолжить загрузку. Может быть только один активный раздел, иначе загрузка продолжена не будет.
Следующие три байта — это так называемые CHS-координаты первого сектора раздела.
По смещению 04h находится код типа раздела. Именно по этому типу можно определить что находится в данном разделе, какая файловая система на нем и т.п. Список зарезервированных типов разделов можно посмотреть, например, в википедии по ссылке Типы разделов.
После типа раздела идут 3 байта, определяющие CHS-координаты последнего сектора раздела.
CHS-координаты сектора расшифровываются как Cylinder Head Sector и соответственно обозначают номер цилиндра (дорожки), номер головки (поверхности) и номер сектора. Цилиндры и головки нумеруются с нуля, сектор нумеруется с единицы. Таким образом CHS=0/0/1 означает первый сектор на нулевом цилиндре на нулевой головке. Именно здесь находится сектор MBR.
Все разделы диска, за исключением первого, обычно начинаются с нулевой головки и первого сектора какого-либо цилиндра. То есть их адрес будет N/0/1. Первый раздел диска начинается с головки 1, то есть по адресу 0/1/1. Это все из-за того, что на нулевой головке место уже занято сектором MBR. Таким образом, между сектором MBR и началом первого раздела всегда есть дополнителььные неиспользуемые 62 сектора. Некоторые загрузчики ОС используют их для своих нужд.
Интересен формат хранения номера цилиндра и сектора в структуре записи раздела. Номер цилиндра и номер сектора делят между собой два байта, но не поровну, а как 10:6. То есть на номер сектора приходится младшие 6 бит младшего байта, что позволяет задавать номера секторов от 1 до 63. А на номер цилиндра отведено 10 бит — 8 бит старшего байта и оставшиеся 2 бита от младшего байта: «CCCCCCCC CCSSSSSS», причем в младшем байте находятся старшие биты номера цилиндра.
Проблема с CHS-координатами состоит в том, что с помощью такой записи можно адресовать максимум 8 Гб диска. В эпоху DOS это было приемлемо, однако довольно скоро этого перестало хватать. Для решения этой проблемы была разработана система адресации LBA (Logical Block Addressing), которая использовала плоскую 32-битную нумерацию секторов диска. Это позволило адресовать диски размером до 2Тб. Позже разрядность LBA увеличили до 48 бит, однако MBR эти изменения не затронули. В нем по-прежнему осталась 32-битная адресация секторов.
Итак, в настоящее время повсеместно используется LBA-адресация для секторов на диске и в структуре записи раздела адрес его первого сектора прописывается по смещению 08h, а размер раздела — по смещению 0Ch.
Для дисков размером до 8Гб (когда адресация по CHS еще возможна) поля структуры с CHS-координатами и LBA-адресации должны соответствовать друг другу по значению (корректно конвертироваться из одного формата в другой). У дисков размером более 8Гб значения всех трех байт CHS-координат должны быть равны FFh (для головки допускается также значение FEh).
В конце структуры MBR всегда находится сигнатура AA55h. Она в какой-то степени позволяет проверить, что сектор MBR не поврежден и содержит необходимые данные.
Расширенные разделы
Разделы, отмеченные в таблице типом 05h и 0Fh, это так называемые расширенные разделы. С их помощью можно создавать больше разделов на диске, чем это позволяет MBR. На самом деле расширенных разделов несколько больше, например есть разделы с типами C5h, 15h, 1Fh, 91h, 9Bh, 85h. В основном все эти типы разделов использовались в свое время различными операционными системами (такими как например OS/2, DR-DOS, FreeDOS) с одной и той же целью — увеличить количество разделов на диске. Однако со временем различные форматы отпали и остались только разделы с типами 05h и 0Fh. Единственное исключение — это тип 85h. Он до сих пор может использоваться в Linux для формирования второй цепочки логических дисков, скрытых от других операционных систем. Разделы с типом 05h используются для дисков менее 8Гб (где еще возможна адресация через CHS), а тип 0Fh используется для дисков больше 8Гб (и используется LBA-адресация).
В первом секторе расширенного раздела находится структура EBR (Extended Boot Record). Она во многом схожа со структурой MBR, но имеет следующие отличия:
- В EBR нет исполняемого кода. Некоторые загрузчики могут его туда записывать, но обычно это место заполнено нулями
- Сигнатуры диска и два неиспользуемых байта должны быть заполнены нулями
- В таблице разделов могут быть заполнены только две первых записи. Остальные две записи должны быть заполнены нулями
В отличие от MBR, где позволяется создавать не более четырёх разделов, структура EBR позволяет организовать список логических разделов, ограниченный лишь размером раздела-контейнера (того самого, который с типом 05h или 0Fh). Для организации такого списка используется следующий формат записей: первая запись в таблице разделов EBR указывает на логический раздел, связанный с данным EBR, а вторая запись указывает на следующий в списке раздел EBR. Если данный логический раздел является последним в списке, то вторая запись в таблице разделов EBR должна быть заполнена нулями.
Формат записей разделов в EBR аналогичен формату записи в структуре MBR, однако логически немного отличается.
Признак активности раздела для разделов структуры EBR всегда будет 0, так как загрузка осуществлялась только с основных разделов диска. Координаты CHS, с которых начинается раздел используются, если не задействована LBA-адресация, также как и в структуре MBR.
А вот поля, где в режиме LBA-адресации должны находиться номер начального сектора и количество секторов раздела, в структуре EBR используются несколько иначе.
Для первой записи таблицы разделов EBR в поле начального сектора раздела (смещение 08h) записывается расстояние в секторах между текущим сектором EBR и началом логического раздела, на который ссылается запись. В поле количества секторов раздела (смещение 0Ch) в этом случае пишется размер этого логического раздела в секторах.
Для второй записи таблицы разделов EBR в поле начального сектора раздела записывается расстояние между сектором самой первой EBR и сектором следующей EBR в списке. В поле количества секторов раздела в этом случае пишется размер области диска от сектора этой следующей структуры EBR и до конца логического раздела, относящегося к этой структуре.
Таким образом, первая запись таблицы разделов описывает как найти, и какой размер занимает текущий логический раздел, а вторая запись описывает как найти, и какой размер занимает следующий EBR в списке, вместе со своим разделом.
You spin me right round, baby
Механический накопитель на жёстких дисках (hard disk drive, HDD) был стандартом систем хранения для компьютеров по всему миру в течение более 30 лет, но лежащие в его основе технологии намного старше.
Первый коммерческий HDD компания IBM выпустила в 1956 году, его ёмкость составляла аж 3,75 МБ. И в целом, за все эти годы общая структура накопителя не сильно изменилась. В нём по-прежнему есть диски, которые используют для хранения данных намагниченность, и есть устройства для чтения/записи этих данных. Изменился же, и очень сильно, объём данных, который можно на них хранить.
В 1987 году можно было купить HDD на 20 МБ примерно за 350 долларов; сегодня за такие же деньги можно купить 14 ТБ: в 700 000 раз больший объём.
Мы рассмотрим устройство не совсем такого размера, но тоже достойное по современным меркам: 3,5-дюймовый HDD Seagate Barracuda 3 TB, в частности, модель ST3000DM001, печально известную своим высоким процентом сбоев и вызванных этим юридических процессов. Изучаемый нами накопитель уже мёртв, поэтому это будет больше похоже на аутопсию, чем на урок анатомии.
Перевернув накопитель, мы видим печатную плату и несколько разъёмов. Разъём в верхней части платы используется для двигателя, вращающего диски, а нижние три (слева направо) — это контакты под перемычки, позволяющие настраивать накопитель под определённые конфигурации, разъём данных SATA (Serial ATA) и разъём питания SATA.
Serial ATA впервые появился в 2000 году. В настольных компьютерах это стандартная система, используемая для подключения приводов к остальной части компьютера. Спецификация формата претерпела множество ревизий, и сейчас мы пользуемся версией 3.4. Наш труп жёсткого диска имеет более старую версию, но различие заключается только в одном контакте в разъёме питания.
В подключениях передачи данных для приёма и получения данных используется дифференцированный сигнал: контакты A+ и A- используются для передачи инструкций и данных в жёсткий диск, а контакты B — для получения этих сигналов. Подобное использование спаренных проводников значительно снижает влияние на сигнал электрического шума, то есть устройство может работать быстрее.
Если говорить о питании, то мы видим, что в разъёме есть по паре контактов каждого напряжения (+3.3, +5 и +12V); однако большинство из них не используется, потому что HDD не требуется много питания. Эта конкретная модель Seagate при активной нагрузке использует менее 10 Вт. Контакты, помеченные как PC, используются для precharge: эта функция позволяет вытаскивать и подключать жёсткий диск, пока компьютер продолжает работать (это называется горячей заменой (hot swapping)).
Контакт с меткой PWDIS позволяет удалённо перезагружать (remote reset) жёсткий диск, но эта функция поддерживается только с версии SATA 3.3, поэтому в моём диске это просто ещё одна линия питания +3.3V. А последний контакт, помеченный как SSU, просто сообщает компьютеру, поддерживает ли жёсткий диск технологию последовательной раскрутки шпинделей staggered spin up.
Перед тем, как компьютер сможет их использовать, диски внутри устройства (которые мы скоро увидим), должны раскрутиться до полной скорости. Но если в машине установлено много жёстких дисков, то внезапный одновременный запрос питания может навредить системе. Постепенная раскрутка шпинделей полностью устраняет возможность таких проблем, но при этом перед получением полного доступа к HDD придётся подождать несколько секунд.
Сняв печатную плату, можно увидеть, как она соединяется с компонентами внутри устройства. HDD не герметичны, за исключением устройств с очень большими ёмкостями — в них вместо воздуха используется гелий, потому что он намного менее плотный и создаёт меньше проблем в накопителях с большим количеством дисков. С другой стороны, не стоит и подвергать обычные накопители открытому воздействию окружающей среды.
Благодаря использованию таких разъёмов минимизируется количество входных точек, через которые внутрь накопителя могут попасть грязь и пыль; в металлическом корпусе есть отверстие (большая белая точка в левом нижнем углу изображения), позволяющее сохранять внутри давление окружающей среды.
Теперь, когда печатная плата снята, давайте посмотрим, что находится внутри. Тут есть четыре основных чипа:
- LSI B64002: чип основного контроллера, обрабатывающий инструкции, передающий потоки данных внутрь и наружу, корректирующий ошибки и т.п.
- Samsung K4T51163QJ: 64 МБ DDR2 SDRAM с тактовой частотой 800 МГц, используемые для кэширования данных
- Smooth MCKXL: управляет двигателем, крутящим диски
- Winbond 25Q40BWS05: 500 КБ последовательной флеш-памяти, используемой для хранения встроенного ПО накопителя (немного похожего на BIOS компьютера)
Открыть накопитель просто, достаточно открутить несколько болтов Torx и вуаля! Мы внутри…
Учитывая, что он занимает основную часть устройства, наше внимание сразу привлекает большой металлический круг; несложно понять, почему накопители называются дисковыми. Правильно их называть пластинами; они изготавливаются из стекла или алюминия и покрываются несколькими слоями различных материалов. Этот накопитель на 3 ТБ имеет три пластины, то есть на каждой стороне одной пластины должно храниться 500 ГБ.
Изображение довольно пыльное, такие грязные пластины не соответствуют точности проектирования и производства, необходимого для их изготовления. В нашем примере HDD сам алюминиевый диск имеет толщину 0,04 дюйма (1 мм), но отполирован до такой степени, что средняя высота отклонений на поверхности меньше 0,000001 дюйма (примерно 30 нм).
Базовый слой имеет глубину всего 0,0004 дюйма (10 микронов) и состоит из нескольких слоёв материалов, нанесённых на металл. Нанесение выполняется при помощи химического никелирования с последующим вакуумным напылением, подготавливающих диск для основных магнитных материалов, используемых для хранения цифровых данных.
Этот материал обычно является сложным кобальтовым сплавом и составлен из концентрических кругов, каждый из которых примерно 0,00001 дюйма (примерно 250 нм) в ширину и 0,000001 дюйма (25 нм) в глубину. На микроуровне сплавы металлов образуют зёрна, похожие на мыльные пузыри на поверхности воды.
Каждое зерно обладает собственным магнитным полем, но его можно преобразовать в заданном направлении. Группирование таких полей приводит к возникновению битов данных (0 и 1). Если вы хотите подробнее узнать об этой теме, то прочитайте этот документ Йельского университета. Последними покрытиями становятся слой углерода для защиты, а потом полимер для снижения контактного трения. Вместе их толщина составляет не больше 0,0000005 дюйма (12 нм).
Скоро мы увидим, почему пластины должны изготавливаться с такими строгими допусками, но всё-таки удивительно осознавать, что всего за 15 долларов можно стать гордым владельцем устройства, изготовленного с нанометровой точностью!
Однако давайте снова вернёмся к самому HDD и посмотрим, что же в нём есть ещё.
Жёлтым цветом показана металлическая крышка, надёжно крепящая пластину к электродвигателю привода шпинделя — электроприводу, вращающему диски. В этом HDD они вращаются с частотой 7200 rpm (оборотов/мин), но в других моделях могут работать медленнее. Медленные накопители имеют пониженный шум и энергопотребление, но и меньшую скорость, а более быстрые накопители могут достигать скорости 15 000 rpm.
Чтобы снизить урон, наносимый пылью и влагой воздуха, используется фильтр рециркуляции (зелёный квадрат), собирающий мелкие частицы и удерживающий их внутри. Воздух, перемещаемый вращением пластин, обеспечивает постоянный поток через фильтр. Над дисками и рядом с фильтром есть один из трёх разделителей пластин: помогающих снижать вибрации и поддерживать как можно более равномерный поток воздуха.
В левой верхней части изображения синим квадратом указан один из двух постоянных стержневых магнитов. Они обеспечивают магнитное поле, необходимое для перемещения компонента, указанного красным цветом. Давайте отделим эти детали, чтобы видеть их лучше.
То, что выглядит как белый пластырь — это ещё один фильтр, только он очищает частицы и газы, попадающие снаружи через отверстие, которое мы видели выше. Металлические шипы — это рычаги перемещения головок, на которых находятся головки чтения-записи жёсткого диска. Они с огромной скоростью движутся по поверхности пластин (верхней и нижней).
Посмотрите это видео, созданное The Slow Mo Guys, чтобы увидеть, насколько они быстрые:
В конструкции не используется чего-то вроде шагового электродвигателя; для перемещения рычагов по соленоиду в основании рычагов проводится электрический ток.
Обобщённо их называют звуковыми катушками, потому что они используют тот же принцип, который применяется в динамиках и микрофонах для перемещения мембран. Ток генерирует вокруг них магнитное поле, которое реагирует на поле, созданное стержневыми постоянными магнитами.
Не забывайте, что дорожки данных крошечны, поэтому позиционирование рычагов должно быть чрезвычайно точным, как и всё остальное в накопителе. У некоторых жёстких дисков есть многоступенчатые рычаги, которые вносят небольшие изменения в направление только одной части целого рычага.
В некоторых жёстких дисках дорожки данных накладываются друг на друга. Эта технология называется черепичной магнитной записью (shingled magnetic recording), и её требования к точности и позиционированию (то есть к попаданию постоянно в одну точку) ещё строже.
На самом конце рычагов есть очень чувствительные головки чтения-записи. В нашем HDD содержится 3 пластины и 6 головок, и каждая из них плавает над диском при его вращении. Для этого головки подвешены на сверхтонких полосках металла.
И здесь мы можем увидеть, почему умер наш анатомический образец — по крайней мере одна из головок разболталась, и что бы ни вызвало изначальный повреждение, оно также погнуло один из рычагов. Весь компонент головки настолько мал, что, как видно ниже, очень сложно получить её качественный снимок обычной камерой.
Однако мы можем разобрать отдельные части. Серый блок — это специально изготовленная деталь под названием «слайдер»: когда диск вращается под ним, поток воздуха создаёт подъёмную силу, поднимая головку от поверхности. И когда мы говорим «поднимает», то имеем в виду зазор шириной всего 0,0000002 дюйма или меньше 5 нм.
Чуть дальше, и головки не смогут распознавать изменения магнитных полей дорожки; если бы головки лежали на поверхности, то просто поцарапали бы покрытие. Именно поэтому нужно фильтровать воздух внутри корпуса накопителя: пыль и влага на поверхности диска просто сломают головки.
Крошечный металлический «шест» на конце головки помогает с общей аэродинамикой. Однако чтобы увидеть части, выполняющие чтение и запись, нам нужна фотография получше.
На этом изображении другого жёсткого диска устройства чтения и записи находятся под всеми электрическими соединениями. Запись выполняется системой тонкоплёночной индуктивности (thin film induction, TFI), а чтение — туннельным магнеторезистивным устройством (tunneling magnetoresistive device, TMR).
Создаваемые TMR сигналы очень слабы и перед отправкой должны проходить через усилитель для повышения уровней. Отвечающий за это чип находится рядом с основанием рычагов на изображении ниже.
Как сказано во введении к статье, механические компоненты и принцип работы жёсткого диска почти не изменились за многие годы. Больше всего совершенствовалась технология магнитных дорожек и головок чтения-записи, создавая всё более узкие и плотные дорожки, что в конечном итоге приводило к увеличению объёма хранимой информации.
Однако механические жёсткие диски имеют очевидные ограничения скорости. На перемещение рычагов в нужное положение требуется время, а если данные разбросаны по разным дорожкам на различных пластинах, то на поиски битов накопитель будет тратить довольно много микросекунд.
Прежде чем переходить к другому типу накопителей, давайте укажем ориентировочные показатели скорости типичного HDD. Мы использовали бенчмарк CrystalDiskMark для оценки жёсткого диска WD 3.5" 5400 RPM 2 TB:
В первых двух строчках указано количество МБ в секунду при выполнении последовательных (длинный, непрерывный список) и случайных (переходы по всему накопителю) чтения и записи. В следующей строке показано значение IOPS, то есть количество операций ввода-вывода, выполняемых каждую секунду. В последней строке показана средняя задержка (время в микросекундах) между передачей операции чтения или записи и получением значений данных.
В общем случае мы стремимся к тому, чтобы значения в первых трёх строчках были как можно больше, а в последней строчке — как можно меньше. Не беспокойтесь о самих числах, мы просто используем их для сравнения, когда будем рассматривать другой тип накопителя: твердотельный накопитель.
Структура GPT
В современных компьютерах на смену BIOS пришла новая спецификация UEFI, а вместе с ней и новое устройство разделов на жестком диске — GUID Partition Table (GPT). В этой структуре были учтены все недостатки и ограничения, накладываемые MBR, и разработана она была с большим запасом на будущее.
Кроме того, в отличие от MBR, структура GPT хранит на диске две своих копии, одну в начале диска, а другую в конце. Таким образом, в случае повреждения основной структуры, будет возможность восстановить ее из сохраненной копии.
Рассмотрим теперь устройство структуры GPT подробнее. Вся структура GPT на жестком диске состоит из 6 частей:
LBA-адрес | Размер (секторов) | Назначение |
LBA 0 | 1 | Защитный MBR-сектор |
LBA 1 | 1 | Первичный GPT-заголовок |
LBA 2 | 32 | Таблица разделов диска |
LBA 34 | NN | Содержимое разделов диска |
LBA -34 | 32 | Копия таблицы разделов диска |
LBA -2 | 1 | Копия GPT-заголовка |
Защитный MBR-сектор
Первый сектор на диске (с адресом LBA 0) — это все тот же MBR-сектор. Он оставлен для совместимости со старым программным обеспечением и предназначен для защиты GPT-структуры от случайных повреждений при работе программ, которым про GPT ничего не известно. Для таких программ структура разделов будет выглядеть как один раздел, занимающий все место на жестком диске.
Структура этого сектора ничем не отличается от обычного сектора MBR. В его таблице разделов дожна быть создана единственная запись с типом раздела 0xEE. Раздел должен начинаться с адреса LBA 1 и иметь размер 0xFFFFFFFF. В полях для CHS-адресации раздел соответственно должен начинаться с адреса 0/0/2 (сектор 1 занят под саму MBR) и иметь конечный CHS-адрес FF/FF/FF. Признак активного раздела должен иметь значение 0 (неактивный).
При работе компьютера с UEFI, данный MBR-сектор просто игнорируется и никакой код в нем также не выполняется.
Первичный GPT-заголовок
Этот заголовочный сектор содержит в себе данные о всех LBA-адресах, использующихся для разметки диска на разделы.
Структура GPT-заголовка:
Смещение (байт) | Размер поля (байт) | Пример заполнения | Название и описание поля |
0x00 | 8 байт | 45 46 49 20 50 41 52 54 | Сигнатура заголовка. Используется для идентификации всех EFI-совместимых GPT-заголовков. Должно содержать значение 45 46 49 20 50 41 52 54, что в виде текста расшифровывается как "EFI PART". |
0x08 | 4 байта | 00 00 01 00 | Версия формата заголовка (не спецификации UEFI). Сейчас используется версия заголовка 1.0 |
0x0C | 4 байта | 5C 00 00 00 | Размер заголовка GPT в байтах. Имеет значение 0x5C (92 байта) |
0x10 | 4 байта | 27 6D 9F C9 | Контрольная сумма GPT-заголовка (по адресам от 0x00 до 0x5C). Алгоритм контрольной суммы — CRC32. При подсчёте контрольной суммы начальное значение этого поля принимается равным нулю. |
0x14 | 4 байта | 00 00 00 00 | Зарезервировано. Должно иметь значение 0 |
0x18 | 8 байт | 01 00 00 00 00 00 00 00 | Адрес сектора, содержащего первичный GPT-заголовок. Всегда имеет значение LBA 1. |
0x20 | 8 байт | 37 C8 11 01 00 00 00 00 | Адрес сектора, содержащего копию GPT-заголовка. Всегда имеет значение адреса последнего сектора на диске. |
0x28 | 8 байт | 22 00 00 00 00 00 00 00 | Адрес сектора с которого начинаются разделы на диске. Иными словами — адрес первого раздела диска |
0x30 | 8 байт | 17 C8 11 01 00 00 00 00 | Адрес последнего сектора диска, отведенного под разделы |
0x38 | 16 байт | 00 A2 DA 98 9F 79 C0 01 A1 F4 04 62 2F D5 EC 6D | GUID диска. Содержит уникальный идентификатор, выданный диску и GPT-заголовку при разметке |
0x48 | 8 байт | 02 00 00 00 00 00 00 00 | Адрес начала таблицы разделов |
0x50 | 4 байта | 80 00 00 00 | Максимальное число разделов, которое может содержать таблица |
0x54 | 4 байта | 80 00 00 00 | Размер записи для раздела |
0x58 | 4 байта | 27 C3 F3 85 | Контрольная сумма таблицы разделов. Алгоритм контрольной суммы — CRC32 |
0x5C | 420 байт | 0 | Зарезервировано. Должно быть заполнено нулями |
Система UEFI проверяет корректность GPT-заголовка, используя контрольный суммы, вычисляемые по алгоритму CRC32. Если первичный заголовок поврежден, то проверяется контрольная сумма копии заголовка. Если контрольная сумма копии заголовка правильная, то эта копия используется для восстановления информации в первичном заголовке. Восстановление также происходит и в обратную сторону — если первичный заголовок корректный, а копия неверна, то копия восстанавливается по данным из первичного заголовка. Если же обе копии заголовка повреждены, то диск становится недоступным для работы.
У таблицы разделов дополнительно существует своя контрольная сумма, которая записывается в заголовке по смещению 0x58. При изменении данных в таблице разделов, эта сумма рассчитывается заново и обновляется в первичном заголовке и в его копии, а затем рассчитывается и обновляется контрольная сумма самих GPT-заголовков.
Таблица разделов диска
Следующей частью структуры GPT является собственно таблица разделов. В настоящее время операционные системы Windows и Linux используют одинаковый формат таблицы разделов — максимум 128 разделов, на каждую запись раздела выделяется по 128 байт, соответственно вся таблица разделов займет 128*128=16384 байт, или 32 сектора диска.
Структура жесткого диска
В диске, предназначенном для хранения информации, применяются магнитные материалы. Компьютерные данные хранятся в отдельных намагниченных областях жесткого диска. Каждая такая область называется сектором. В каждом секторе содержится определенное количество байт. Секторы, как правило, объединяются в группы, называемые кластерами. Секторы и кластеры образуют дорожки. Общее представление о диске:
Размещение данных на диске
Также важным обстоятельством является способ, которым персональный компьютер оберегает эти дорожки от изменений. Это обеспечивается применением дорожек каталогов, содержащих информацию о каждом файле - его размере, месте расположения и т.п.
Байты, из которых состоит файл, не обязательно находятся в смежных секторах. Они могут находиться в любом месте жесткого диска. Поэтому в них должна храниться информация о расположении следующего сектора.
Разбрасывать данные, содержащиеся в файле, по произвольно расположенным местам на жестком диске неэффективно. Результатом такого расположения будет замедление работы. Поэтому имеет смысл время от времени дефрагментировать диск, применяя утилиты дефрагментации. При дефрагментации все данные, принадлежащие одному файлу, объединяются в одной непрерывной области данных.
Интересный аспект хранения файлов на жестком диске: когда файл на жестком диске удаляется, данные, хранившиеся в этом файле, остаются на диске, но вся информация о нем удаляется из каталога. Теперь секторы, в которых хранился файл, становятся доступными для использования, поскольку воспринимаются системой как свободные. Новые данные записываются поверх старых, но отдельная процедура удаления данных не выполняется.
Итак, у нас есть секторы, содержащие все данные определенного "удаленного" файла, но информация в дорожке каталога о нем отсутствует.
Специальные утилиты, например Norton UnЕrase, могут обнаружить секторы, принадлежащие удаленным файлам и отобразить их содержимое на экране - и даже превращать их в файлы, которые могут использовать соответствующие приложения. Это относится как к файлам, хранящимся на жестких дисках, так и к файлам на дискетах.
Даже если некоторые из секторов удаленного файла заполнены данными из других, записанных поверх него файлов, все еще возможно просмотреть остаток файла при помощи утилиты восстановления. Она отыщет удаленные файлы, оставшиеся на жестком диске, а затем определит местонахождение всех существующих секторов, содержащих данные из этого файла. Вы сможете просмотреть всю доступную информацию, а затем сохранить ее в новом файле.
Если вы редко работаете на компьютере и не создаете новые файлы больших размеров, то остатки удаленных файлов (или значительные их части) могут оставаться на диске в течение длительного периода времени. Но даже при интенсивной ежедневной работе на ПК, учитывая, что емкость современных винчестеров огромна, некоторые файлы и их части могут уцелеть.
Все повреждения делятся на две категории - логические и физические. Статистика говорит о том, что физические причины потери данных (отказ Аппаратуры, стихийные бедствия и т.д.) составляют 45 % от общего числа, а остальные 55 % - результат разрушительной деятельности программ и вирусов или ошибки пользователей (35 %). И если с физическими повреждениями все более или менее понятно (либо работает, либо не работает), то повреждений логических структур файловой системы существует достаточно много, и чем совершеннее файловая система, тем сложнее решать ее проблемы вручную. Мы не будем касаться высокопроизводительных систем HPFS и NTFS (принципы их работы - тема для отдельного разговора), а остановимся на стандартной системе - FAT. Разновидностей FAT несколько, но их объединяет одно - линейная структура организации дискового пространства. Естественно, повреждение каждого элемента этой структуры влечет за собой те или иные последствия. Особенности повреждений FAT мы обсудим позже, а пока разберемся с процессом загрузки.
Главная загрузочная запись (MBR, Master Boot Record) является первым сектором жесткого диска и представляет собой программу, которая управляет дальнейшей загрузкой операционной системы после передачи ей управления, от BIOS. Соответственно, если сама программа отсутствует, то и загрузка системы производиться не будет. К счастью, эта программа в большинстве случаев стандартна, поэтому восстановить ее не составляет труда, если не использовалась какая-то специфическая программа загрузки или защиты диска. В конце этого сектора расположена таблица разделов жесткого диска. В этой таблице находятся сведения о размерах, местоположении и назначении разделов. По стандарту их не более четырех. Соответственно, потеря данных в этом месте грозит потерей местоположения и размерности разделов, а восстановление возможно ручным или программным поиском начальных структур разделов.
Итак, после того как программа MBR считала необходимые сведения, управление передается программе, записанной в первом секторе активного раздела (Boot-record). Кстати, на дискетах Boot-record располагается первым (MBR на дискетах отсутствует) и также содержит программу, собственно загружающую систему. На дискете эта область, а также системные фалы прописываются системной командой sys.
Файловая система FAT состоит из следующих элементов: Boot-Sector, зарезервированные сектора, две копии таблицы FAT, расположенные одна за другой, корневой каталог и область данных. Повреждение таблиц FAT имеет самые печальные последствия, т.к. именно они и являются теми жизненно важными схемами расположения файлов. Повреждение одной из этих таблиц не фатально, т.к. обычно дублирующиеся данные можно взять из резервной таблицы, а если повреждены обе, то вся область данных является морем информации без каких-либо указателей. Единственное, что может спасти в восстановлении структур данных - сохраненные копии FAT специальными программами-реаниматорами.
Корневой каталог является основным и содержит все ссылки на каталоги следующего уровня, а также на файлы, находящиеся в нем. Его повреждение сопровождается появлением странных директорий и файлов. Вероятность восстановления искаженных данных в нем велика, однако логическая структура директорий, а также многие файлы могут быть потеряны безвозвратно.
Далее расположена область данных, в которой, кроме данных, находятся каталоги следующего уровня. Их повреждения локальны и при желании легко излечиваются стандартными средствами WINDOWS или Norton Disk Doctor из пакета Norton Utilities.
Возможны ситуации, когда, удалив файл, в корзине вы его не обнаруживаете. Скорее всего, он оказался слишком большим и просто туда не поместился, или, возможно, включена функция прямого стирания. В любом случае, как только вы заметили, что удалили нужный файл, надо сразу остановить работу всех программ. А если никакие запущенные процессы не проявляют активности, то, при возможности, лучше сразу нажать два раза Ctrl-Alt-Del и перезагрузить систему. Объяснения такой жесткой реакции кроются в механизме удаления файлов. Вы не замечали, что удаляются файлы намного быстрее, чем записываются? Дело в том, что при записи файла в таблице размещения производится поиск свободных элементов (кластеров), и согласно им файл располагается на диске, а указатель на первый используемый элемент таблицы находится в записи, определяющей файл в директории. Запись о файле содержит не только его имя и атрибуты, но и данные о стартовом секторе на диске, принадлежащем ему. Удаление файла происходит следующим образом - освобождается цепочка в таблице размещения файлов, а вместо первой буквы имени файла ставится специальный знак, говорящий о том, что элемент свободен.
Фактически, сами данные не удаляются. Для восстановления файла необходимо всего лишь указать первую букву и восстановить последовательность цепочки таблицы размещения файлов. Если диск фрагментирован, то сделать это гораздо сложнее, т.к. части файла окажутся разбросанными по диску, а собирать их - занятие трудоемкое. Соответственно, после того, как цепочка FAT освобождается, ее элементы становятся доступными, и на ее место можно записать другие файлы. Вот почему вероятность восстановления удаленных файлов со временем уменьшается. Для многозадачных операционных систем, тем более для системы Windows, это особенно актуально, т.к. многие операции записи производятся в отложенном режиме, и к тому же большинство пользователей используют файл подкачки (swap-file) динамического размера. Это вдвойне неэффективно: во-первых, из-за постоянного изменения объема файла подкачки он все больше фрагментируется, т.е. при доступе к нему считывающей головке приходится совершать лишние перемещения, что в свою очередь сказывается на производительности. А во-вторых, его увеличение сопровождайся захватом свободных элементов в FAT, а ведь именно они могут оказаться теми участками удаленных файлов, которые еще можно было восстановить. Кстати, программ восстановления, использующих вышеописанный метод, очень много, а некоторые из них даже поставляются вместе с операционными системами.
Таким образом, любой, кто захочет восстановить данные, которые вы удалили, имеет шанс это сделать. Как это предотвратить? Следует использовать специальные программы, которые удаляют не только заголовок файла, но и стирают все данные в использованных секторах. Информацию, стертую таким образом, восстановить уже невозможно. Из пакета нортоновских утилит этим занимается программа WipeInfo.
Все дисковое пространство винчестера состоит из двух частей:
· Небольшой системной области, доступной пользователю при помощи специальных утилит только на стадии создания логической структуры диска или ее изменении;
· Пользовательской области данных.
В самом начале диска (в секторе 0/0/1) находится РТ (Partition Table) - таблица разделов и MBR (Master Boot Record) - главная загрузочная запись.
На следующем треке в первом секторе (секторах, начиная с 0/1/1) расположена ВА (Boot Area) - загрузочная область операционной системы и BR (Boot Record) - загрузочная запись ОС.
Далее на этом же треке расположена 1-я копия FAT (File Allocation Table) - таблица размещения файлов. Сразу за ней - 2-я копия FAT. Размер копии FAT (в секторах) определяется размером раздела диска
После 2-й копии FAT расположены сектора ROOT (Root directory) - корневого каталога, за которыми начинается DA (Data Area) - область данных.
РТ - состоит из 4-х строк, описывающих четыре возможных системных раздела диска (винчестер может обеспечить загрузку до четырех различных операционных систем). Описание каждого раздела диска содержит информацию о типе файловой системы, признаке того, что раздел является загрузочным, о первых и последних головках, дорожках, секторах раздела, количестве секторов смещения начала раздела от начала диска и об общем количестве секторов в разделе.
MBR - находится в том же секторе, что и РТ. Данные в MBR представляют собой машинный код процессора, необходимый для дальнейшей загрузки операционной системы (обнаружение текущего активного системного/загрузочного раздела и передачи ему управления по дальнейшей загрузке системы). В последних двух байтах сектора MBR находится сигнатура 55ААh, которую BIOS может использовать как маску при поиске РТ и MBR.
В соответствии с таблицей разделов, в начале каждого раздела создается загрузочный сектор раздела (boot record), содержащий сведения о файловой системе раздела (название и версия ОС, логические параметры диска, название и параметры файловой системы, размер кластера, длина корневого каталога, общее количество кластеров и т.п.) и программу начальной загрузки.
Программа начальной загрузки должна обнаружить наличие в корневом каталоге раздела файлов поддержки (ntldr, osloader, ntdetect и др.), необходимых для дальнейшей загрузки системы, и передать управление операционной системе.
FAT32 обеспечивает определение местонахождения всех файлов раздела диска в его кластерах. Создается две копии FAT – совпадение копий позволяет судить о целостности таблицы и восстанавливать ее в случае повреждения. Первая строка FAT содержит дескриптор носителя (F8h для жесткого диска). Следующие несколько байт описывают тип FAT, за ними идет сама таблица. FAT создается при форматировании.
Таблица состоит из 32-битных элементов, содержащих либо номер следующего кластера файла, либо специальные коды-признаки: конец файла, пустой кластер, испорченный кластер. Количество элементов FAT соответствует количеству кластеров раздела диска. Из этих элементов образуются цепочки номеров кластеров, описывающих расположение файлов на диске.
ROOT - корневой каталог диска. Содержит записи, описывающие файлы (дескрипторы файлов) в корневом каталоге. Такая запись по структуре очень похожа на строку проводника Windows и описывает имя, тип, дату создания, размер, атрибуты файла и т.п., а также содержит указатель на первый кластер файла.
Каталоги представляют собой сектора, идентичные по структуре корневому каталогу. Каталог, кроме описаний файлов, в самом начале содержит две записи, первая из которых содержит указатель на первый кластер самого каталога, вторая - на первый кластер родительского каталога.
После Root Directory начинается собственно область файлов, где и хранятся все пользовательские данные: операционная система, прикладные и системные программы и файлы, файлы документов.
Файловые системы
Жесткие диски поступают с завода-изготовителя уже отформатированными. Все программы так называемого низкоуровнего форматирования на самом деле не выполняют физического форматирования (разметки) жесткого диска, а только полностью уничтожают содержимое диска (что часто тоже требуется). Различные операционные системы же своими программами форматирования создают лишь логическую структуру диска.
В настоящее время в IBM PC настольных компьютерах наиболее распространены 2 файловые системы - NTFS и FAT32.
FAT32 поддерживает меньшие размеры кластеров, что позволяет более эффективно использовать дисковое пространство.
Файловая система NTFS - улучшенная файловая система, обеспечивающая уровень быстродействия и безопасности, а также дополнительные возможности, недоступные ни в одной версии файловой системы FAT. Например, для обеспечения целостности данных тома в файловой системе NTFS используются стандартные технологии записи и восстановления транзакций. В случае сбоя компьютера целостность файловой системы восстанавливается с помощью файла журнала NTFS и данных о контрольных точках. В операционных системах Windows 2000 и Windows XP файловая система NTFS также обеспечивает такие дополнительные возможности, как разрешения для файлов и папок, шифрование, дисковые квоты и сжатие.
Технология SMART
Идея SMART (Self-Monitoring Analysis and Reporting Technology - технология самоанализа и информирования) заключается в создании механизма предсказания возможного выхода из строя жесткого диска и предотвращения тем самым потери данных. SMART была предложена фирмами COMPAQ и IBM и используется в программе BIOS и в ряде программ под Windows.
Для анализа надежности жесткого диска используются две группы параметров (здесь и далее подразумевается жесткий диск, поддерживающий SMART технологию). Первая характеризует параметры естественного старения жесткого диска:
· количество циклов включения/выключения (старт/стоп);
· количество оборотов двигателя за время работы;
· количество перемещений головок.
Вторая группа параметров уже информирует о текущем состоянии качества накопителя. К этим параметрам относятся:
· высота головки над поверхностью диска;
· скорость обмена данными между дисками и кэш-памятью на диске;
· количество переназначений плохих секторов (когда вместо испорченного сектора подставляется свободный исправный);
· количество ошибок поиска;
· количество операций перекалибровки;
· скорость поиска данных на диске.
Значения всех параметров (как и собственное программное обеспечение накопителя), как правило, хранятся на специальных дорожках диска, невидимых со стороны компьютера или, что бывает значительно реже, в энергонезависимой памяти.
Производители жестких дисков присваивают граничные значения (thresholds) всем параметрам. Если хотя бы один параметр ушел за граничные значения, то накопитель желательно заменить. Механизм наблюдения за накопителем может быть встроен в операционную систему или реализован в виде программы мониторинга диска. Основная идея таких программ - проверка через каждые, например, восемь часов работы поверхности всего диска, выявление секторов, которые могут стать плохими, и перенос информации на резервные нормальные области диска. Понятно, что все эти операции выполняются в паузах (которые составляют до 90% времени работы диска) и никак не снижают производительность компьютера.
Например, фирма Quantum создала для серии своих жестких дисков Fireball технологию Data Protection System (DPS), которая содержит программу диагностики, позволяющую выявить возможные дефекты и во многих случаях устранить их.
Жесткий диск компьютера (винчестер) является одним из самых сложных, хрупких и дорогих устройств компьютера. Говоря о его стоимости, прежде всего, имеется ввиду не цена самого устройства, а ущерб от его утраты (информация, записанная на жестком диске почти всегда дороже самого устройства).
Жесткий диск – единственное логическое устройство, которое является механическим, то есть имеет движущиеся части. Существует мнение о том, что пора бы отходить от этой идеологии и внедрять полностью электронные устройства хранения. Однако, этого пока не происходит, и на то есть несколько причин. Во-первых, способ организации хранения и доступа к данным в жестких дисках уже внедрен, и ненужно ничего изобретать заново. Во-вторых, механическая идеология практически не накладывает ограничения на количество записываемой информации [7] .
Самым главным недостатком жесткого диска является его хрупкость, что зачастую является критическим фактором. Во-вторых, механические детали предоставляют конечное, весьма длительное время доступа к хранимой информации, измеряемое в миллисекундном диапазоне, что связано с самой особенностью доступа к данным на жестком диске (магнитная головка должна считать данные на заданной области, а для этого ее необходимо позиционировать над этой областью, на перемещения уходит время).
Кластеры и секторы
В предыдущем параграфе говорилось о том, что каждый файл, хранящийся на жестком диске, имеет свой собственный логический адрес. Начинается этот адрес с латинской буквы, обозначающий устройство. Заметим, что один физический жесткий диск может содержать несколько логических жестких дисков, при этом каждое логическое устройство живет как бы «своей жизнью». Каждый логический диск будет иметь свою букву.
Очевидно, что на жестком диске файлы и папки хранятся совершенно не так, как мы это видим на экране. На экране монитора, открыв одну из папок, мы видим ее содержимое. Открыв следующую из представленных папок, мы видим ее содержимое и т.д. Жесткий диск не предоставляет возможности «что-нибудь открывать», чтобы увидеть его содержимое, поскольку физически диск это и есть диск.
Физически жесткий диск – несколько стеклянных или пластиковых пластин, покрытых с двух сторон ферромагнитным слоем. Компьютер, как известно, работает только с дискретными данными, поэтому всю поверхность следует разделить на участки. Схематично, поверхность диска разделена диаметрами, образующими геометрические сектора, и концентрическими окружностями. Схематично это выглядит следующим образом:
Круг, который ограничивает каждая из концентрических окружностей называется цилиндром. Кольцо, образованное двумя ближайшими концентрическими окружностями называют дорожкой. Пересечение дорожки и геометрического сектора называется сектором (как это ни странно). [8] В дальнейшем будем использовать термин «сектор», обозначая именно данное пересечение.
Таким образом можно указать адрес для каждого сектора, используя порядковый номер цилиндра и геометрического сектора, то есть произвести форматирование дискового пространства. Такое форматирование пластины диска называется форматированием низкого уровня и выполняется на заводе.
Сектор – минимальный физический объем диска, который может быть занят данными. Обычно эта величина в 512 байт. Интересно, что сектора, находящиеся ближе к центру, и сектора, находящиеся ближе к краю, хотя и различаются по площади, но имеют одинаковый объем. 512 байт – очень маленькая величина и запоминать адрес каждого сектора было бы слишком нерационально для дисков, имеющих объем в гигабайтных диапазонах. Поэтому при логической разметке жесткого диска на нем создаются более крупные логические участки – кластеры,объединяющие несколько секторов. Размер кластера зависит от объема жесткого диска, но может меняться пользователем при форматировании по своему усмотрению.
Следует помнить, что при большом размере кластера остаются т.н. «хвосты», то есть частично заполненные кластеры. Например, если файл состоит из 10 кластеров, то 9 из них заполнены полностью, а десятый записан всего лишь на половину, то все равно весь кластер считается заполненным. Именно из-за таких «хвостов» занимаемое файлом место на диске бывает больше, чем реальный размер файла.
С другой стороны, малый размер кластера приводит к большей фрагментацииданных, что снижает скорость обмена данными с жестким диском.
Записывая информацию на жесткий диск, компьютер не обязательно записывает весь файл целиком на соседние сектора. Напротив, запись происходит на любое свободное место на диске. Любой файл будет записан в любое свободное место, причем необязательно в свободное место должен помещаться весь файл. Файл будет разделен на несколько частей и записан на разные части жесткого диска – туда, где есть свободное место. Почему происходит именно так, очевидно, ведь при работе с компьютером некоторая информация удаляется, другая записывается. Любое освобожденное место должно быть пригодно для дальнейшей записи, даже самое маленькое. Это приводит к неизбежному побочному эффекту, называемому фрагментацией – явлении, при котором файл разбивается на множество отстоящих друг от друга частей – фрагментов. При чтении файла с диска его необходимо сначала собрать воедино, то есть прочесть все эти части. То есть, головке жесткого диска необходимо пробежаться по всем этим частям. Это приводит к значительной трате времени с одной стороны, и к преждевременному износу устройства с другой.
Для снижения побочных эффектов рекомендуется регулярно проводить дефрагментацию жесткого диска – сбор фрагментов каждого файла в одну область на жестком диске. В зависимости от интенсивности работы с жестким диском (частом удалении и записи) дефрагментацию рекомендуется проводить один раз в 2-6 месяцев.
Каким же образом секторы и кластеры превращаются в удобные для нас файлы и папки? Вопрос сводится только в сопоставлении физического адреса файла его логическому адресу. Эта роль отводится файловой системе. Файловая система– таблица, в которой логическому адресу файла ставится в соответствие его физический адрес. Напомним,
логический адрес файла – адрес файла в иерархической цепочке каталогов,
физический адрес файла – набор адресов кластеров, которые содержат фрагменты данного файла.
Таблица – это условное понятие, какой файловая система предстала бы для человека. На самом деле это тоже набор из нулей и единиц, располагающийся в центре жесткого диска. Файловая система имеет свой дубликат, который располагается также в центре диска для файловой системы FAT32 и в центре диска для файловой системы NTFS. Потерять файловую систему равносильно потере всей информации, хранящейся на жестком диске, ведь без нее любые данные – просто набор нулей и единиц.
Манипуляции с файлами тоже происходят в файловой системе. То есть, при перемещении данных из одной папки в другую не следует удалять эти данные с одного места на диске, чтобы затем записать в другое. Достаточно в файловой системе для определенного файла просто переписать его логический адрес (это не относится к перемещению данных с одного устройства на другое или с одного логического диска на другой). При удалении файла нет необходимости физически удалять файл, достаточно в поле имени файла заменить первую букву файла значком «$», что означает, что физические адреса, указанные в данной строке, свободны и на них можно записывать. Отсюда можно сделать вывод: удаленные с компьютера данные можно вернуть, если после удаления не происходила запись новых данных и не проводилась дефрагментация. Достаточно в файловой системе значок «$» заменить на любую букву. Существует огромное множество программ, которые позволяют это сделать, нет смысла их перечислять. Такие программы легко найти по ключевому слову «undelete» в названии.
Наиболее распространенные на сегодняшний день операционные системы NTFS и FAT32. Первая практически по всем показателям превосходит вторую, поэтому ее можно было бы рекомендовать, если бы не одно важное замечание – операционные системы, не принадлежащие семейству NT (Windows 98, Windows Me, DOS), не видят диски, отформатированные в файловой системе NTFS. Для этих ОС таких дисков просто не существует. Казалось бы, эти операционные системы уже устарели и редко где используются, но очень часто при сбое системы приходится ее восстанавливать именно с помощью MS DOS. Если системный раздел был отформатирован в NTFS, то восстановление может быть весьма затруднительно.
Некоторые возможности файловой системы NTFS
Файловая система NTFS предоставляет целый комплекс дополнительных возможностей, которые в FAT32 предоставляются только с помощью специальных программ.
Сжатие файлов и папок.Позволяет работать с архивированными файлами, как с обычными. Архивированные данные помечаются синим шрифтом.
Шифрование файлов и папок.Позволяет ограничивать чтение и копирование защищенных файлов.
Ограничение доступа к ресурсам.Позволяет некоторых пользователей отключать от доступа к некоторым папкам. Причем отказано в доступе может быть полностью, а может частично, например, пользователю можно производить только чтение.
Он магнитный. Он электрический. Он фотонный. Нет, это не новое супергеройское трио из вселенной Marvel. Речь идёт о хранении наших драгоценных цифровых данных. Нам нужно где-то их хранить, надёжно и стабильно, чтобы мы могли иметь к ним доступ и изменять за мгновение ока. Забудьте о Железном человеке и Торе — мы говорим о жёстких дисках!
Итак, давайте погрузимся в изучении анатомии устройств, которые мы сегодня используем для хранения миллиардов битов данных.
Читайте также: