Similar presentations:
Внешняя память
1. Внешняя память
К внешней памяти относятся устройства, позволяющие автономно сохраняютинформацию для последующего ее использования независимо от того, включена или
выключена ЭВМ. Эти устройства могут использовать различные физические принципы
хранения информации — магнитный, оптический, электронный.
По методу доступа к информации устройства внешней памяти разделяются на
устройства с прямым (непосредственным) и последовательным доступом. Особенностью
внешней памяти является то, что ее устройства оперируют блоками информации, а не
байтами или словами как оперативная память. Блоки обычно имеют фиксированный
размер, кратный степени числа 2, но в некоторых случаях у устройств с последовательным
доступом размер блока может быть и переменным.
Прямой доступ (Direct Access) подразумевает возможность обращения к блокам
по их адресам в произвольном порядке. Устройствами с прямым доступом являются
дисковые накопители (HDD), твердотельные накопители (SSD), флэш устройства.
В устройствах с последовательным доступом (Sequential Access ), типичными
представителями которых являются накопители на магнитной ленте каждый блок
информации тоже может иметь свой адрес, но для обращения к нему устройство
хранения должно сначала найти некоторый маркер начала ленты ( тома ), после чего
последовательным холостым чтением блок за блоком дойти до требуемого места и
только тогда производить сами операции обмена данными .
2. Внешняя память
Современный HDD состоит из двух компонентов : печатная плата игерметичный корпус (гермоблок), внутри которого и находятся магнитные диски.
Вся электроника, за исключением предусилителей, располагается на печатной
плате, а вся механика внутри гермоблока. Винчестер состоит из четырех главных
элементов - пакета дисковых пластин, вращающихся на одной оси, головок
чтения -записи, позиционера (устройства , «наводящего» головки на
нужную
дорожку) и контроллера, обеспечивающего
согласованное управление всеми
элементами диска и передачу данных между ним и компьютером.
Гермоблок служит для защиты и крепления магнитных дисков (пластин) —
носителей информации. Данные хранятся на пластинах в виде концентрических
дорожек, каждая из которых делится на секторы, содержащие данные ( обычно
размер сектора составляет 512 байт ) и коды коррекции ошибок.
Количество секторов на дорожке в современных дисках зависит от
длины дорожки, то есть на внешних дорожках секторов больше, а на
внутренних меньше. Совокупность дорожек, находящихся под головками в определенном положении на всех пластинах диска, называется цилиндром.
3. Внешняя память
СекторДорожка
Головка
записи/чтения
По ряду
технологических причин не
вся магнитная поверхность дисков
задействована под хранение данных, а только та часть, которая располагается на
средних радиусах. Эта часть называется рабочей зоной.
Винчестеру приходится читать данные с поверхности. Для этого он должен знать,
где в настоящий момент находятся головки и куда ему необходимо их переместить. С
этой целью на поверхности дисков записана специальная информация (сервоинформация),
уникальная для каждой дорожки и каждого сектора с данными , представляющая
собой « адрес» сектора. В винчестерах сервоинформация хранится на той же
поверхности, на которой хранятся данные.
4. Внешняя память
Сервоинформация расположена на каждой дорожке каждой поверхности.Участки с записанной
сервоинформацией (wedges — « клин») расположены
равномерно по всей поверхности, как спицы колеса . На каждую дорожку
приходится по одинаковое число участков с этой информацией . Таким образом, на
несколько подряд идущих сек-торов приходится один « клин», состоящий из
четырех полей. Для разделения полей используется временная синхронизация.
Каждому сектору ставится в соответствие его дескриптор . Дескриптор
содержит, в частности, следующие поля : поле четности , номер « клина » ( после
которого располагается сектор и время, за которое сектор должен подойти под
головку после того, как был обнаружен нужный «клин»), а также два поля для «
счетчика разрыва».
Схема поиска нужного сектора следующая : контроллер выясняет « клин»,
после которого находится нужный сектор, затем его значение сравнивается с
внутренним
счетчиком
форматтера,
который
отслеживает
текущую
сервоинформацию. При совпадении контроллер отсчитывает промежуток времени,
указанный в поле времени дескриптора, и начинает читать данные с
поверхности.
Итак, информация на дисках записывается и считывается секторами, причем
каждый сектор имеет определенную структуру (формат). В начале каждого сектора
имеется заголовок, за которым следует поле данных и поле контрольного кода . В
заголовке имеется поле идентификатора, которое включает номер цилиндра ,
головки и собственно сектора. В этом же идентификаторе может содержаться и
пометка о дефектности сектора.
5. Внешняя память
Достоверность поляидентификатора
проверяется
с помощью
контрольного кода заголовка. Заголовки секторов записываются только во время
операции низкоуровневого форматирования, причем для всего трека сразу.
При обращении к сектору по чтению или записи заголовок только
считывается. Поле данных сектора отделено от заголовка небольшой зоной,
необходимой для того, чтобы при операции записи головка могла успеть
переключиться с режима чтения (заголовка) в режим записи ( данных).
Завершает сектор контрольный код поля данных — СRC (Cyclic Redundancy
Check — циклический избыточный контроль) или ЕСC (Error Checking and
Correcting — обнаружение и коррекция
ошибок). CRC-код позволяет только
обнаруживать ошибки, а ЕСС -код позволяет исправлять ошибки небольшой
кратности. В межсекторных промежутках может размещаться и сервоинформация.
Допустимое количество секторов определяется допустимой плотностью
изменения магнитного потока, длиной трека и алгоритмом кодирования данных.
Длина трека определяется его диаметром и, естественно, внешние треки дисков
длиннее внутренних .
6. Внешняя память
В жестких дисков в качестве важного средства повышения скоростисчитывания данных использовался параметр Interleave (чередование), или
Interleave- фактор. При вращении диска головка полностью считывает 512- байтный
сектор и посылает данные в контроллер , откуда они передаются процессору.
Тем временем диск продолжает вращаться, предлагая головке следующий сектор,
а контроллер
еще
занят обменом
данных с процессором. Для чтения
следующего сектора необходимо ждать следующего оборота диска.
Диски организованы так, что сектора располагаются не последовательно, а
в другом порядке, определяемом Interleave- фактором
В этом случае , при позиционировании
головки, контроллер имеет
достаточно времени для передачи
информации без лишнего оборота
диска.
7. Внешняя память
В контроллерах всех современных HDD для организации непрерывногочтения секторов данные считываются из нескольких идущих подряд секторов и
запоминаются в буфере, откуда впоследствии они могут быть извлечены, то есть
при меняется
упреждающее чтение ( Read Look Ahead). Кроме
того, для
повышения производительности винчестеров, используются следующие методы:
Кэширование операций записи. Предположим, компьютеру необходимо что - либо
записать на винчестер. Для этого он сначала передает запрос на запись, а
затем и сами данные, которые необходимо записать. Жесткий диск
без
кэширования операций записи принимает эти данные в память, ищет нужный
сектор и записывает в него данные. Винчестер с кэшированием операций записи
считает данные в кэш и немедленно сообщит компьютеру о завершении
операции записи , позволяя ему заниматься другими задачами, и лишь после
этого проведет фактическую запись данных на диск.
Адаптивная сегментация кэш - памяти. Итак, принимаемые или передаваемые
данные хранятся в кэш – памяти диска. При статической сегментации кэш память разделяется на фиксированное число независимых частей — сегментов.
8. Внешняя память
Предположим, что таких частей две. Пусть винчестеру необходимо прочитатьданные из сектора 1, затем записать другие данные в сектор 155. При чтении в
первый сегмент попадет сектор 1 и следующий за ним сектор 2. После этого
винчестеру будет необходимо записать данные в сектор 155. Эти данные займут
второй сегмент кэш - памяти, и теперь любая операция чтения или записи
вызовет вытеснение из сегмента хранящихся там данных.
Чтобы этого не происходило, в большинстве винчестеров реализован алгоритм
адаптивной сегментации, то есть число сегментов и их размер под управлением
микропрограммы становятся динамически изменяемыми, позволяя эффективнее
использовать кэш - память .
При интенсивном использовании жестких дисков, записанная на них
информация часто оказывается фрагментированной, что уменьшает
скорость
чтения /записи при обращении к HDD. В этом случае для повышения
быстродействия нужно использовать специальные программы дефрагментации. С
накопителями SSD и флэш это делать бесполезно и даже вредно.
9. Внешняя память
Основные характеристики и логическая структура жестких дисковПервой важнейшей характеристикой любого жесткого диска является его
емкость, то есть фактически количество информации, которое на него можно
записать. При этом следует учитывать, что различают два типа емкости :
• Форматированная емкость
(Formatted Capacity) представляет собой объем
хранимой полезной информации, то есть сумму полей данных всех доступных
секторов.
• Неформатированная
емкость ( Unformatted Capacity ) представляет
собой
максимальное количество бит, записываемых на всех треках диска, включая и
служебную информацию ( заголовки секторов , контрольные коды полей данных).
Сюда же следует отнести свободное пространство, зарезервированное для переноса
дефектных секторов .
Соотношение форматированной и неформатированной емкости определяется
форматом трека ( размером сектора), но, поскольку для пользователя свободы
выбора формата нет, практический интерес представляет только форматированная
емкость диска, которая указывается для стандартного размера сектора (512 байт ).
10. Внешняя память
Емкость HDD в прямом режиме определяется формулой: C * H * S * 512, гдеC — число цилиндров (цилиндром называется количество дорожек равного
радиуса, находящихся на разных пластинах диска), H — число головок записи
/считывания, S — количество секторов на которые разбивается каждый цилиндр
и 512 — емкость сектора в байтах. Все эти параметры отражают физическую
структуру диска.
При работе операционной системы используется логическая адресация блоков.
В этом случае все сектора нумеруются подряд, начиная с сектора (0,0,1),
которому присваивается логический адрес 0, т. е. адрес CHS преобразуется в
число, используемое для нумерации секторов. Для доступа к диску необходимы
пересчитанные значения секторов, которое поддерживается в BIOS. При этом
логический адрес преобразуется в конкретный адрес CHS, используемого винчестера.
Второй важной характеристикой винчестера является быстродействие,
однако его невозможно определить только одной цифрой, поэтому для описания
скорости работы винчестера принято использовать несколько параметров :
• Скорость вращения магнитных дисков . Чем выше скорость вращения
дисков, тем быстрее с него можно считывать информацию и тем меньшее
время
необходимо ждать винчестеру, пока
нужный сектор
попадет под
считывающую головку.
11. Внешняя память
• Среднее время запаздывания — время, которое напрямую связано соскоростью вращения дисков и представляет собой среднее время ожидания
подхода сектора под головку при условии нахождения головки над нужной
дорожкой.
• Скорость чтения с магнитных дисков зависит от скорости вращения
дисков, методов записи и ряда других параметров .
• Скорость передачи данных из кэш - памяти винчестера в оперативную
память компьютера. В идеальном случае эта скорость должна быть выше, чем
скорость чтения с магнитных дисков. Зависит от тактовой частоты, на которой
работает шина, по которой передаются все данные, и от режима обмена ( кэш память винчестера — память компьютера ).
Для передачи данных между HDD и RAM используются два основных
режима передачи данных. Первым является режим, программного ввода/вывода
(Programmed Input/Output - PIO). В режиме PIO каждый байт информации с
жесткого диска сначала считывается центральным процессором и только потом
записывается в оперативную память .
12. Внешняя память
Режим прямого доступа к памяти (Direct Memory-Access, DMA) Ввод/выводданных в этом режиме осуществляется в оперативную память, минуя CPU. Этот
процесс происходит под управлением контроллера накопителя на жестких
дисках в паузах между обращениями CPU к оперативной памяти, что несколько
снижает скорость передачи данных, но экономит процессорное время. Для
реализации режимов PIO и DMA необходимы специальные
контроллеры и
драйверы.
Рассмотрим подробнее логическую организацию хранения информации на
жестких дисках. Каждый диск делится на дорожки и сектора, причем дорожка
однозначно определяется номером головки и порядковым номером на диске
относительно внешнего края. Сектора идентифицируются своим порядковым
номером относительно начала дорожки. Нумерация секторов на дорожке
начинается с единицы, а головок и цилиндров — с нуля. Количество секторов
может быть различным в зависимости от типа накопителя. Каждый сектор
содержит некоторую служебную информацию и данные. Обычно объем сектора
составляет 571 байт. В начале каждого сектора записывается заголовок ( Prefix
portion ), по которому определяется начало сектора и его номер, а в конце сектора
13. Внешняя память
(Suffix portion ) содержится контрольная сумма, необходимая для проверкицелостности данных. Между заголовком и заключением сектора находится
область данных объемом, как правило, 512 байт. Запись информации на дорожках
осуществляется блоками по 512 байт.
Число дисков, головок и дорожек
винчестера
устанавливается
изготовителем исходя
из
свойств и качества
дисков. Изменить эти
характеристики нельзя. Количество секторов на диске зависят от метода за писи, а плотность — от носителя : чем лучше материал диска, тем плотнее
могут быть записаны
данные. Общая
емкость в
значительной степени
ограничивается логической структурой дисков, так как требуется некоторая
дисковая память, необходимая для управления размещением данных. Описанное
форматирование диска называется низкоуровневым форматированием (Low Level
Format). Процедура низкоуровневого форматирования выполняется изготовителем
устройства, причем для различных моделей HDD существуют свои программы,
для проведения данной процедуры.
14. Внешняя память
Новый жесткий диск следует разбить на разделы, причем может быть неболее четырех разделов. Сравнительно недавно широко использовалось разбиение
на следующие разделы: первичный DOS ( Primary DOS), расширенный DOS
(Extended DOS) и не -DOS (Non DOS ).
При таком разбиении использовались операционные системы Wiтdows и
файловая
система FAT. Раздел
не -DOS предназначался
для установки
операционной системы
отличной от Windows. Разбиение производится
специальными утилитами, входящими в состав операционной системы, например
Fdisk (в Windows, Linux), или аналогичной им. Расширенный раздел DOS мог
отсутствовать или быть разбит на логические диски.
Далее на диске следует создать структуру для работы с файлами, то есть
выполнить так называемое форматирование высокого уровня. Данная операция
производится средствами ОС, либо утилитой, входящей в операционную систему,
например Format из Windows.
При использовании последней в каждый раздел заносится загрузочный
сектор тома (Volume Boot Sector, VBS), таблица размещения файлов (File Allocation
Table, FAT) и корневой каталог ( ROOT Directory).
15. Внешняя память
Структуру данных на диске после проведенияуровня можно представить схемой:
форматирования высокого
Таблица разделов ( РТ — Partition table ) состоит из четырех разделов ( отсюда и
ограничения на их количество). Операционные системы Windows используют
только два первых раздела, в которых содержится информация о головках ,
дорожках и секторах раздела, общем количестве секторов в разделе, типе
файловой системы и т. п.
В первом секторе содержится также программа для загрузки ОС — Master
Boot Record, MBR.
Восстановить
стандартный
загрузчик можно командой
Fdisk/mbr. В загрузочном секторе тома ( VBS, Boot Record) содержится описание
файловой системы : размер кластера, размер, количество и тип FAT и др.
Корневой
каталог (ROOT Directory)
включает
описания файлов,
расположенных на диске: их имена, типы, даты создания и изменения, атрибуты,
размер и др. Кроме того , в него входит указатель на первый кластер файла.
16. Внешняя память
Каталоги в корневом каталоге описываются как файлы. Также корневой каталогсодержит указатель на первый кластер самого корневого каталога и на первый кластер
родительского каталога. В таблице размещения файлов (FAT) имеется информация о связях
между кластерами, в которые записан файл.
Сейчас как правило файловая система FAT используется на устройствах с небольшими
объемами дискового пространства – например на флэш устройствах. В операционной системе
Windows используется файловая система NTFS.
Файловая система NTFS
Раздел NTFS, теоретически, может быть почти какого угодно размера. Предел, конечно
есть, но его с запасом хватит на последующие сто лет развития вычислительной техники — при
любых темпах роста. Максимальный размер раздела NTFS в данный момент ограничен лишь
размерами жестких дисков.
NTFS делит все полезное место на кластеры — блоки данных, используемые
единовременно. NTFS поддерживает почти любые размеры кластеров — от 512 байт до 64
Кбайт, неким стандартом же считается кластер размером 4 Кбайт.
Диск NTFS условно делится на две части. Первые 12% диска отводятся под так
называемую MFT зону — пространство, в которое растет метафайл MFT. Запись какихлибо данных в эту область невозможна. MFT-зона всегда держится пустой — это
делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался
при своем росте.
17. Внешняя память
Остальные 88% диска представляют собой обычное пространство для хранения файлов.Свободное место диска включает в себя всё физически свободное место —
незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFTзоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона
просто сокращается (в текущих версиях операционных систем ровно в два раза),
освобождая таким образом место для записи файлов. При освобождении места в
обычной области MFT зона может снова расширится. При этом не исключена ситуация,
когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система
старалась оставить её свободной, но ничего не получилось. Жизнь продолжается…
Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.
18. Внешняя память
Структура MFT. Каждый элемент системы представляет собой файл — дажеслужебная информация. Самый главный файл на NTFS называется MFT, или Master File
Table — общая таблица файлов. Именно он размещается в MFT зоне и представляет
собой централизованный каталог всех остальных файлов диска, и, как не
парадоксально, себя самого.
MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая
запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16
файлов носят служебный характер и недоступны операционной системе — они
называются метафайлами, причем самый первый метафайл — сам MFT. Эти первые 16
элементов MFT — единственная часть диска, имеющая фиксированное положение.
Интересно, что вторая копия первых трех записей, для надежности — они очень важны
— хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и
любой другой файл, в произвольных местах диска — восстановить его положение
можно с помощью его самого, «зацепившись» за самую основу — за первый элемент
MFT.
19. Внешняя память
Метафайлы. Первые 16 файлов NTFS (метафайлы) носят служебный характер. Каждыйиз них отвечает за какой-либо аспект работы системы. Преимущество настолько
модульного подхода заключается в поразительной гибкости — например, на FAT-е
физическое повреждение в самой области FAT фатально для функционирования всего
диска, а NTFS может сместить, даже фрагментировать по диску, все свои служебные
области, обойдя любые неисправности поверхности — кроме первых 16 элементов
MFT.
Метафайлы находятся корневом каталоге NTFS диска — они начинаются с
символа имени «$», хотя получить какую-либо информацию о них стандартными
средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер
— можно узнать, например, сколько операционная система тратит на каталогизацию
всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены
используемые в данный момент метафайлы и их назначение.
20. Внешняя память
$MFTсам MFT
$MFTmirr
копия первых 16 записей MFT, размещенная посередине
диска
$LogFile
файл поддержки журналирования
$Volume
служебная информация — метка тома, версия файловой
системы, т. д.
$AttrDef
список стандартных атрибутов файлов на томе
$.
корневой каталог
$Bitmap
карта свободного места тома
$Boot
загрузочный сектор (если раздел загрузочный)
$Quota
файл, в котором записаны права пользователей на
использование дискового пространства
$Upcase
файл — таблица соответствия заглавных и прописных
букв в имен файлов на текущем томе. Нужен в основном
потому, что в NTFS имена файлов записываются в Unicode,
что составляет 65 тысяч различных символов, искать
большие и малые эквиваленты которых очень
нетривиально.
21. Внешняя память
Файлы и потокиИтак, у системы есть файлы — и ничего кроме файлов. Что включает в себя это понятие
на NTFS?
•Прежде всего, обязательный элемент — запись в MFT, ведь все файлы диска
упоминаются в MFT. В этом месте хранится вся информация о файле, за исключением
собственно данных. Имя файла, размер, положение на диске отдельных фрагментов, и
т. д. Если для информации не хватает одной записи MFT, то используются несколько,
причем не обязательно подряд.
•Опциональный элемент — потоки данных файла. Может показаться странным
определение «опциональный», но, тем не менее, ничего странного тут нет. Во-первых,
файл может не иметь данных — в таком случае на него не расходуется свободное место
самого диска. Во-вторых, файл может иметь не очень большой размер. Тогда идет в ход
довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от
основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт,
обычно не имеют своего «физического» воплощения в основной файловой области —
все данные такого файла хранятся в одном месте — в MFT.
22. Внешняя память
Каждый файл на NTFS имеет несколько абстрактное строение — у него нет кактаковых данных, а есть потоки (streams). Один из потоков и носит привычный нам
смысл — данные файла. Но большинство атрибутов файла — тоже потоки! Таким
образом, получается, что базовая сущность у файла только одна — номер в MFT, а всё
остальное опционально. Данная абстракция может использоваться для создания
довольно удобных вещей — например, файлу можно «прилепить» еще один поток,
записав в него любые данные — например, информацию об авторе и содержании файла.
Эти дополнительные потоки не видны стандартными средствами: наблюдаемый
размер файла — это лишь размер основного потока, который содержит традиционные
данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого
освободится 1 Гбайт свободного места — просто потому, что какая-нибудь хитрая
программа или технология прилепила в нему дополнительный поток (альтернативные
данные) гигабайтового размера.
Но на самом деле в текущий момент потоки практически не используются, так
что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Ну и
напоследок: имя файла может содержать любые символы, включая полый набор
национальных алфавитов, так как данные представлены в Unicode — 16-битном
представлении, которое дает 65535 разных символов. Максимальная длина имени файла
— 255 символов.
23. Внешняя память
КаталогиКаталог на NTFS представляет собой специфический файл, хранящий ссылки на другие
файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога
поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку
на элемент MFT, который уже предоставляет полную информацию об элементе
каталога.
Внутренняя структура каталога представляет собой бинарное дерево. Вот что это
означает: для поиска файла с данным именем в линейном каталоге, таком, например, как
у FAT-а, операционной системе приходится просматривать все элементы каталога, пока
она не найдет нужный. Бинарное же дерево располагает имена файлов таким образом,
чтобы поиск файла осуществлялся более быстрым способом — с помощью получения
двухзначных ответов на вопросы о положении файла.
Какую информацию можно получить, просто прочитав файл каталога? Ровно то,
что выдает команда dir. Для выполнения простейшей навигации по диску не нужно
лазить в MFT за каждым файлом, надо лишь читать самую общую информацию о
файлах из файлов каталогов. Главный каталог диска — корневой — ничем не
отличается об обычных каталогов, кроме специальной ссылки на него из начала
метафайла MFT.
24. Внешняя память
ЖурналированиеNTFS — отказоустойчивая система, которая вполне может привести себя в
корректное состояние при практически любых реальных сбоях. Любая современная
файловая система основана на таком понятии, как транзакция — действие,
совершаемое целиком и корректно или не совершаемое вообще. У NTFS просто не
бывает промежуточных (ошибочных или некорректных) состояний — квант изменения
данных не может быть поделен на до и после сбоя, принося разрушения и путаницу —
он либо совершен, либо отменен.
Пример 1: осуществляется запись данных на диск. Вдруг выясняется, что в то место,
куда мы только что решили записать очередную порцию данных, писать не удалось —
физическое повреждение поверхности. Поведение NTFS в этом случае довольно
логично: транзакция записи откатывается целиком — система осознает, что запись не
произведена. Место помечается как сбойное, а данные записываются в другое место —
начинается новая транзакция.
25. Внешняя память
Пример 2: Идет запись данных на диск. Вдруг отключается питание и системаперезагружается. На какой фазе остановилась запись, где есть данные, а где чушь? На
помощь приходит другой механизм системы — журнал транзакций.
Дело в том, что система, осознав свое желание писать на диск, пометила в
метафайле $LogFile это свое состояние. При перезагрузке этот файл изучается на
предмет наличия незавершенных транзакций, которые были прерваны аварией и
результат которых непредсказуем — все эти транзакции отменяются: место, в которое
осуществлялась запись, помечается снова как свободное, индексы и элементы MFT
приводятся в с состояние, в котором они были до сбоя, и система в целом остается
стабильна.
Ну а если ошибка произошла при записи в журнал? Тоже ничего страшного:
транзакция либо еще и не начиналась (идет только попытка записать намерения её
произвести), либо уже закончилась — то есть идет попытка записать, что транзакция на
самом деле уже выполнена. В последнем случае при следующей загрузке система сама
вполне разберется, что на самом деле всё и так записано корректно, и не обратит
внимания на «незаконченную» транзакцию.
26. Внешняя память
Важно понимать, однако, что система восстановления NTFS гарантируеткорректность файловой системы, а не ваших данных. Если вы производили запись на
диск и получили аварию — ваши данные могут и не записаться. Чудес не бывает.
Сжатие
Файлы NTFS имеют один довольно полезный атрибут — «сжатый». Дело в том,
что NTFS имеет встроенную поддержку сжатия. Любой файл или каталог в
индивидуальном порядке может хранится на диске в сжатом виде — этот процесс
совершенно прозрачен для приложений.
Сжатие файлов имеет очень высокую скорость и только одно большое
отрицательное свойство — огромная виртуальная фрагментация сжатых файлов,
которая, правда, никому особо не мешает. Сжатие осуществляется блоками по 16
кластеров и использует так называемые «виртуальные кластеры» — опять же предельно
гибкое решение, позволяющее добиться интересных эффектов — например, половина
файла может быть сжата, а половина — нет. Это достигается благодаря тому, что
хранение информации о компрессированности определенных фрагментов очень похоже
на обычную фрагментацию файлов.
27. Внешняя память
Типичная запись физической раскладки для реального, несжатого, файла:кластеры файла с 1 по 43-й хранятся в кластерах диска начиная с 400-го
кластеры файла с 44 по 52-й хранятся в кластерах диска начиная с 8530-го…
Физическая раскладка типичного сжатого файла:
кластеры файла с 1 по 9-й хранятся в кластерах диска начиная с 400-го
кластеры файла с 10 по 16-й нигде не хранятся
кластеры файла с 17 по 18-й хранятся в кластерах диска начиная с 409-го
кластеры файла с 19 по 36-й нигде не хранятся
Видно, что сжатый файл имеет «виртуальные» кластеры, реальной информации в
которых нет. Как только система видит такие виртуальные кластеры, она тут же
понимает, что данные предыдущего блока, кратного 16-ти, должны быть разжаты, а
получившиеся данные как раз заполнят виртуальные кластеры — вот, по сути, и весь
алгоритм.
28. Внешняя память
БезопасностьNTFS содержит множество средств разграничения прав объектов. Система прав
достаточно далека от идеала и представляет собой хоть и жесткий, но не всегда
логичный набор характеристик.
Права файловой системы NTFS неразрывно связаны с самой системой — то есть они,
вообще говоря, необязательны к соблюдению другой системой, если ей дать физический
доступ к диску. Для предотвращения физического доступа в Windows всё же ввели
стандартную возможность.
29. Внешняя память
Файловые системы в LinuxОС Linux предоставляет выбор еще на стадии установки: в ядро системы
встроены разные файловые системы (ФС). При этом пользователь должен выбрать ту,
что отвечает его требованиям и задачам. Отличается от Windows и иерархическое
устройство самих ФС, и структура каталогов.
Linux поддерживает деление жесткого диска на разделы. Для подсчета и
определения физических границ используется специальная таблица разделов — GPT
или MBR. Она содержит метку и номер раздела, а также адреса физического
расположения точек начала и конца раздела.
В Linux на каждый раздел можно установить свою ФС, которая отвечает за
порядок и способ организации информации. В основе файловых систем лежит набор
правил, определяющий, где и каким образом хранятся данные. Следующий «слой» ФС
— практический (технический) способ организации информации на каждом конкретном
типе носителя.
ФС Linux — пространство раздела, поделенное на блоки определенного размера.
Он определяется кратностью размеру сектора. Соответственно, это могут быть 1024,
2048, 4096 или 8192 байт. Важно помнить, что размер каждого блока известен
изначально, ограничен максимальным размером ФС и зависит от требований, которые
выдвигает пользователь к каждому из блоков.
30. Внешняя память
Для обмена данными существует сразу два способа. Первый из них — виртуальнаяфайловая система (VFS). С помощью данного типа ФС происходит совместная работа
ядра и приложений, установленных в системе. VFS позволяет пользователю работать,
не учитывая особенности каждой конкретной ФС. Второй способ — драйверы
файловых систем. Именно они отвечают за связь между «железом» и софтом.
Файловая система в Linux определяет также организацию расположения файлов,
по сути представляя собой иерархическую структуру «дерева»: начинается с корневого
каталога «/» и разрастается ветвями в зависимости от работы системы.
31. Внешняя память
ФС также характерно понятие целостности: в такой системе изменения,внесенные в один файл, не приведут к изменению другого файла, не связанного с
первым. У всех данных есть собственная физическая память. В Linux целостность ФС
проверяется специальной командой — fsck.
Типы файлов условно можно разделить на
несколько групп. Некоторые из них такие
же, как и в ОС Windows, — текстовые
документы, медиа и изображения.
Отличия начинаются с каталогов, которые
являются отдельным типом файлов.
Жесткие диски относят к блочным
устройствам. Принтеры — к символьным.
К типам файлов относится каналы
межпроцессного взаимодействия — PIPE
(FIFO)
32. Внешняя память
В ФС каждый файл определяется конкретным индексом — inode (index node —«индексный дескриптор»). Индексный дескриптор — это структура данных. В этой
структуре хранится метаинформация о стандартных файлах, каталогах или других
объектах файловой системы, кроме непосредственно данных и имени. Каждый файл
ассоциирован с одним inode, хотя может иметь несколько имен в системе, каждое из
которых указывает на один и тот же inode.
Индексный дескриптор содержит информацию о расположении данных файла.
Поскольку дисковые блоки хранения данных файла в общем случае располагаются не
последовательно, inode, должен хранить физические адреса всех блоков,
принадлежащих данному файлу.
В индексном дескрипторе эта информация хранится в виде массива, каждый
элемент которого содержит физический адрес дискового блока, а индексом массива
является номер логического блока файла. Массив имеет фиксированный размер и
состоит из 13 элементов.
33. Внешняя память
Первые 10 элементов адресуют непосредственно блоки хранения данных файла.Одиннадцатый элемент адресует блок, в свою очередь содержащий адреса блоков
хранения данных файла. Двенадцатый элемент указывает на дисковый блок, также
хранящий адреса блоков, каждый из который адресует блок хранения данных файла. И,
наконец, тринадцатый элемент используется для тройной косвенной адресации, когда
для нахождения адреса блока хранения данных файла используются три
дополнительных блока.
34. Внешняя память
Такой подход позволяет при относительно небольшом фиксированном размереиндексного дескриптора поддерживать работу с файлами, размер которых может
изменяться от нескольких байтов до десятка мегабайтов. Для относительно небольших
файлов (до 10 Кбайт при размере блока 1024 байтов) используется прямая индексация,
обеспечивающая максимальную производительность. Для файлов, размер которых не
превышает 266 кбайт (10 кбайт + 256х1024), достаточно простой косвенной адресации.
Наконец, при использовании тройной косвенной адресации можно обеспечить доступ к
16777216 блокам (256х256х256).
Стандарты POSIX описывают поведение файловой системы как потомка традиционных
файловых систем UNIX — UFS. Регулярные файлы должны иметь следующие
атрибуты:
•длина файла в байтах;
•идентификатор (ID) устройства (это идентифицирует устройство, содержащее файл);
•ID пользователя, являющегося владельцем файла;
•ID группы файла;
•режим файла, определяющий какие пользователи могут считывать, записывать и
запускать файл;
35. Внешняя память
•Timestamp указывает дату последнего изменения инода (ctime, change time), последнеймодификации содержимого файла (mtime, modification time), и последнего доступа
(atime, access time);
•счетчик ссылок указывают количество жестких ссылок, указывающих на индексный
дескриптор;
•указатели на блоки диска, хранящие содержимое файла (подробнее...).
•Системный вызов stat считывает номер индексного дескриптора файла и некоторую
информацию из него.
Индексный дескриптор не содержит:
•имени файла, которое содержится в блоках хранения данных каталога;
•содержимого файла, которое размещено в блоках хранения данных.
36. Внешняя память
Структура дискового inodedi_mode
di_nlinks
di_uid, di_gid
di_size
di_atime
di_mtime
di_ctime
di_addr[13]
Тип файла, дополнительные атрибуты
выполнения и права доступа
Число ссылок на файл, т. е. количество
имен, которые имеет файл в файловой
системе
Идентификаторы владельцапользователя и владельца-группы.
Размер файла в байтах. Для специальных
файлов это поле содержит старший и
младший номер устройства.
Время последнего доступа к файлу.
Время последней модификации.
Время последней модификации inode
(кроме модификации полей di_atime,
di_mtime).
Массив адресов дисковых блоков
хранения данных.
37. Внешняя память
Поле di_mode хранит несколько атрибутов файла:• тип файла (IFREG - для обычных файлов, IFDIR - для каталогов, IFBLK или IFCHR
для специальных файлов блочных и символьных устройств соответственно);
• права доступа к файлу для трех классов пользователей и дополнительные атрибуты
выполнения (SUID, SGID и sticky bit).
Заметим, что в индексном дескрипторе отсутствует информация о времени
создания файла. Вместо этого inode хранит три значения времени: последнего доступа
(di_atime), время последней модификации содержимого файла (di_mtime) и время
последней модификации метаданных файла (di_ctime). В последнем случае не
учитываются модификации полей di_atime и di_mtinie. Таким образом, di_ctime
изменяется, когда изменяется размер файла, владелец, группа или число связей.
Некоторые файловые системы, например Ext3, создают все индексные
дескрипторы в момент создания файловой системы. Такой подход может быть не совсем
удачным, поскольку вы не сможете создавать новые файлы в случае, если все доступные
inode будут использованы, даже если на диске достаточно места. Чтобы избежать
подобных ограничений, можно использовать файловые системы вроде Ext4 и XFS,
которые создают индексные дескрипторы по мере необходимости.
informatics