Файловые системы Windows — «Хакер»
Сегодня при инсталляции Windows 2000, или Windows XP перед тобой неизменно встает вопрос: «Какую файловую систему предпочесть — FAT 32 или NTFS?». И многие, решив, что «с FAT я уже знаком» останавливают свой выбор именно на FAT32. Да что далеко ходить — даже в X в одной из статей автор писал, что «при установке Win 2000 я оставил FAT32, потому что на ней система работает быстрее»… Что здесь неправильно? Да то, что быстрее она работать попросту не может… Так что тебе, чтобы не повторять подобных ошибок, было бы полезно хотя бы понимать «как все устроено». Надеюсь этот краткий обзор тебе поможет — мы рассмотрим FAT16, FAT32 и NTFS.(FAT16 полезно рассмотреть по той
причине, что от FAT32 ее отличает очень не многое и полезно эти отличия хотя бы знать).
FAT16
Файловая система FAT работает с единицами дискового пространства, называемыми кластер. Каждый кластер может включать один или несколько секторов жесткого диска (твой хард обычно разбит на сектора по 512 байт). Из чего следует, что минимальный размер кластера — 512 байт. Для хранения одного файла можно использовать один или несколько кластеров. Каждому кластеру диска в таблице FAT соответствует отдельная запись, которая либо указывает на следующий кластер файла, либо содержит метку конца файла. В составе каждого каталога хранятся имена входящих в него файлов. Вместе с именем файла хранится указатель на первый кластер этого файла. Помимо этого в каталоге хранится дата создания файла, его размер и атрибуты. Атрибуты могут указывать на то, что файл является скрытым, зарезервированным для использования операционной системой, требует архивирования (резервного копирования) или предназначен только для чтения.
Это теория, а теперь недостатки: ты никогда не задумывался, что значит «16» в названии файловой системы? А значат они то, что таблица размещения файлов FAT (File Allocation Table) идентифицирует записи, соответствующие дисковым кластерам, при помощи 16-разрядных чисел. Таким образом, в таблице можно разместить не более 65 536 записей (2 в 16-ой степени). А если учитывать то, что максимальный размер кластера — 32 Кбайта, то выходит, что максимальный раздел дискового тома — 2 Гбайта. У тебя логические диски на винте наверное ГОРАЗДО большего размера? Это недостаток номер «раз»(хотя надо отметить, что FAT32 этот недостаток почти что преодолела). Недостаток номер два — это то, что для хранения ВСЕХ файловых атрибутов система FAT использует всего 1 байт. Как ты думаешь много ли можно засунуть в один байт? Правильно именно по этой причине нельзя хранить ни сведения о праве доступа к файлу, ни о его владельце… Недостаток номер «три» кроется в том, что при использовании FAT больший размер дискового тома означает больший размер кластера, а одна из главных «невкусностей FAT» — это то, что один файл = как минимум один кластер. Пример: имеем размер кластера 32 Кбайта и файл размером в 2 Кбайта — в результате файл занимает весь кластер, т.е. мы теряем 30 Кбайт…Примерно тоже самое получится, если файл будет размером 34 Кбайта — тогда он займет два кластера и во втором мы опять потеряем 30 Кбайт… Недостатки номер «четыре и пять» — сведения о физическом расположении файлов хранятся в одном месте — таблице размещения файлов FAT, что: а) увеличивает вероятность повреждения и потери всей информации; б) снижает скорость поиска, т.к. для поиска определенного файла нужно обработать всю таблицу.
FAT32
Эта файловая система пришла на смену FAT16. Если ты внимательно читал предыдущий параграф, то уже понял, что ее отличие в том, что таблица размещения файлов FAT (File Allocation Table) идентифицирует записи, соответствующие дисковым кластерам, при помощи 32-разрядных чисел. В соответствии с этим максимальное количество записей становится равным 4 294 967 296 (2 в 32-ой степени). В связи с чем максимальный размер дискового тома существенно увеличивается (до 2 Тбайт). Однако это позволяет преодолеть лишь недостаток номер «раз», однако все остальные — увы остаются… И что особенно обидно для владельцев небольших винтов — нерациональное расходование дискового пространства… а также частые повреждения разнообразной природы и т.д. Скандиск у любителей FAT не знает, что такое отдых….
NTFS
Расшифровывается как New Technology File System — как ты наверное понял из названия — это круто и здорово… и причем это не только слова! По сравнению с FAT файловая система NTFS обладает куда более сложной структурой и куда более широкими
возможностями. В отличии от FAT, файловая система NTFS не хранит всю информацию о расположении файлов в одном месте. Вместо этого сведения о распределении дискового пространства между файлами сохраняются в составе специальных пакетов, которые могут располагаться в любом месте раздела
(помнишь недостаток «четыре» у системы FAT?). Структура каталогов NTFS также отличается от структуры каталогов FAT. Дисковые каталоги NTFS лучше приспособлены для осуществления поиска файлов, так как записи о файлах сохраняются с использованием бинарного дерева, а не простого линейного списка (как это было в FAT). Это означает, что для того, чтобы обнаружить файл, требуется проанализировать меньшее количество записей (теперь подумай прав ли автор, которого я упомянул вначале статьи). А если к этому еще прибавить возможность индексирования, то система будет просто летать!
Файловая система NTFS обладает встроенной поддержкой длинных имен и расширяемых файловых атрибутов. Благодаря этому разделы NTFS могут хранить информацию, связанную с защитой файлов (например, списки ACL), аудитом доступа к файлам, а также сведения, связанные с правами на владение файлами. (теперь, ты можешь поставишь запрет на доступ к каталогу с порнушкой для всех, кроме себя и тебя не
понадобиться для этого какие-либо дополнительные проги, которых так много расплодилось для Win9X c ее FAT32!)
Задание дисковой квоты — еще одна возможность NTFS, связанная с возможностью сохранения расширенного количества атрибутов файла. Заключается она в том, что определенному пользователю можно назначить определенный размер дискового пространства, который он может использовать для хранения своих файлов (ты наверно уже сталкивался с этим, если имел дело с каким
либо хостингом). Если же ты подобного опыта не имел, то объясняю: при попытке сохранения файла, система анализирует размер всех файлов, которые уже принадлежат тебе (ага, по тому самому атрибуту «владелец» о котором говорилось только что) и сравнивает с назначенной тебе дисковой квотой. Если остаток квоты достаточен для размещения этого файла, то будет выполнено сохранение, в противном случае тебя пошлет подальше сообщением «превышена дисковая квота». Какая польза от этого? Конечно ты не собираешься открывать на своем компе бесплатный хостинг… но вот не позволить младшему братишке забить весь винт своими
Если при использовании FAT самое лучшее на что ты мог рассчитывать — это то, что файл будет занимать на диске не более, чем собственный размер, то при использовании NTFS можешь об этом забыть! В NTFS минимальная единица равна сектору жесткого диска и один файл не означает один кластер! Помимо этого файловая система поддерживает атрибут, позволяющий осуществлять индивидуальную компрессию файлов и каталогов. Пример: У меня есть каталог размером 80 мегабайт. После компрессии он занимает на диске 30 мегабайт «c кепкой»…
Новые возможности NTFS5 и Windows 2000 позволяют
задействовать архитектуру открытых ключей
для шифрования файлов, каталогов или томов
с помощью EFS. Кроме того наверняка всех
порадует возможность монтирования. С
помощью данной фишки можно подсоединить
любой диск/хард в любое место файловой
системы — например папку C:\XXX\ назначить на
Ну и в довершение всего NTFS поддерживает ОЧЕНЬ большие диски — до 16 экзабайт. (экзабайт — это 1 073 741 824 Гигабайт). Простой пример: Если жесткий диск способен записать 1 мегабайт данных в секунду, то для того, чтобы записать один экзабайт (заметь один, а не шестнадцать), ему потребуется 1000 миллиардов секунд. В одном году 3 миллиона секунд. Следовательно, чтобы сохранить один экзабайт данных потребуется 300 000 лет… Я тут слышал, что собираются запустить корабль к ближайшей звезде — Альфа-Центавра. Предполагают, что он долетит туда за 200 лет…
Итак, если ты идешь в ногу со временем, то твой выбор — NTFS. Но не забывай, что за всеми ее «вкусностями» таится одна проблема — ее из под DOS не видно. Поэтому раньше те, кто боялся падения системы на NTFS не переходили. Но это было раньше! Теперь с приходом Windows 2000 появилась новая возможность — «консоль восстановления», которая позволить тебе получить доступ к разделу NTFS, даже если операционка повреждена. Установить сие чудо довольно просто: после установки ОСи, просто запусти программу установки заново с ключом «/cmdcons», после чего консоль восстановления добавится в меню выбора операционной системы.
Современные файловые системы:что выбрать для внешнего накопителя и почему
Было время, когда вопрос, вынесенный в заголовок статьи, просто не стоял перед пользователями. Несмотря на то что файловых систем было более одной еще до момента появления первых персоналок, выбора обычно не существовало. Просто потому, что разных несовместимых (или лишь частично совместимых) архитектур компьютеров было много, за каждой стояла конкретная фирма, использующая свою собственную операционную систему и имеющая собственные представления о том, «что такое хорошо и что такое плохо». Причем еще и носители данных применялись разные и друг с другом несовместимые. А если и совместимые аппаратно (например, НГМД использовались очень многими вычислительными системами, причем основные типоразмеры дисководов на аппаратном уровне были худо-бедно стандартизованы), то данные все организовывали по-своему. Более-менее совместимыми оказались ленточные накопители, поскольку так уж сложилось исторически, что еще со времен «больших» компьютеров именно они чаще всего применялись для обмена данными между системами различной архитектуры. Но единственными массовыми магнитофонами, которые использовались совместно с персоналками, оказались бытовые, а примитивность типичных компакт-кассет приводила к тому, что все производители, если уж их и использовали, пытались «выжать» из носителя максимум, причем все делали это разными способами.
Ситуация улучшилась лишь тогда, когда стало ясно, что линейка IBM PC (прародительница практически всех выживших на сегодняшний день архитектур ПЭВМ) постепенно становится стандартом де-факто в отрасли (и не только). Ну а когда на рынке появляется доминирующая архитектура, все остальные вынуждены это учитывать — из соображений выживания. Основным сменным носителем данных тогда являлись гибкие диски, так что достаточно быстро средством обеспечения совместимости оказались те их форматы, которые использовала компания IBM. Далеко не лучшие, надо заметить. Причем не только по аппаратуре, хотя и это тоже — несмотря на то что первые дисководы на 3,5″ появились в том же году, что и первые РС, и многие производители начали их использовать еще в первой половине 80-х годов, сама IBM перешла на этот конструктив лишь в 1987 году, а до того момента цеплялась за пятидюймовые дисководы, представленные на рынке еще в 1976 году. Однако и с точки зрения форматирования «оригинальные» разработки IBM уступали даже многим клонам ее компьютеров — в частности, компания на двухсторонних дискетах двойной плотности хранила лишь 360 Кбайт информации, в то время как конкуренты из них же без особых ухищрений выжимали и 600—720 Кбайт. Ну а уж о примитивности файловой системы FAT не рассуждал только ленивый. Хотя, вполне возможно, именно примитивность и стала второй причиной превращения «писюковых дискет» в стандарт — его было очень уж легко поддерживать. Пусть хотя бы только для чтения и в дополнение к собственному «продвинутому» варианту.
Впрочем, с точки зрения сегодняшнего дня все это имеет лишь историческую ценность. Дискеты давно уже перестали использоваться в качестве основного средства переноса информации, да и альтернативных линейке «х86-based» компьютеров на большинстве сегментов рынка не осталось. Однако нельзя сказать, что это полностью решило все проблемы. Дело в том, что на этой са́мой единственной стандартной платформе работает чуть ли не больше операционных систем, чем их было во времена, когда «расцветали все цветы». Даже если взять самое распространенное на рынке семейство, а именно Windows, то оно, строго говоря, неоднородно. Бо́льшая часть инсталляций приходится до сих пор на Windows XP — родом из начала века, но занимающую чуть ли не 2/3 рынка. Где-то четверть последнего приходится на современные версии Windows, а все оставшееся — на сборную солянку из сохранившихся компьютеров с системами, появившимися до Windows XP (их сейчас осталось мало, но все еще встречаются), различные версии MacOS и цельный букет UNIX-систем. Но даже если вам повезло никогда не сталкиваться в практической жизни ни с чем, кроме Windows XP, полностью это проблему не решает — некогда «компьютерные» технологии давно уже вышли за пределы этого рынка, активно вторгаясь в сферу бытовой электроники. Например, большинство сегодняшних видеоплееров умеет работать с USB-накопителями, а в фотоаппаратах или мобильных телефонах повсеместно применяются разнообразные карты памяти. И тут все оказывается просто только в том случае, если, например, карта используется исключительно в «своем» фотоаппарате — форматируем ее средствами камеры и навсегда забываем об этом вопросе 🙂 Однако если нам надо хотя бы обмениваться данными с компьютером, тут уже все не так очевидно…
Причина возникновения проблемы в том, что практически все современные операционные системы за редким исключением поддерживают не одну файловую систему (как это было 20-30 лет назад), а несколько. Причем степень их поддержки может быть совершенно разной. И иногда изменяемой при помощи дополнительных программ. Вариантов масса, поэтому мы не будем пытаться охватить их все в одной небольшой статье. Но достаточное количество базовой информации, дабы можно было понять «куда копать», все же попробуем дать. А для этого достаточно познакомиться с основными доступными файловыми системами, а также их достоинствами и недостатками.
FAT — старая, ограниченная, но вездесущая
Начнем мы со старейшей файловой системы, появившейся еще во времена MS DOS, но, тем не менее, до сих пор иногда встречающейся. К положительным особенностям системы относятся простота, компактность служебных областей и большой срок присутствия на рынке. В общем-то, первые два достоинства непосредственно вытекают из третьего — в 1980 году, когда система и появилась, компьютеры были столь «мощными», а носители информации столь «емкими», что ничего сложного использовать было просто нельзя. Впрочем, оригинальный вариант, а именно FAT12, уже давно вышел из широкого пользования вследствие того, что размер диска с этой системой не может превышать 32 МиБ. Хотя, конечно, к некоторым фотоаппаратам и даже видеокамерам до сих пор умудряются прилагать флэш-карту такого или даже меньшего размера, но полноценно использовать их в подобной комплектации все равно не выйдет.
А вот FAT16, появившаяся 23 года назад, уже интереснее, благо размер как файла, так и раздела доведен уже до 2 ГиБ (для тех, кто еще не успел привыкнуть к двоичным приставкам — это чуть больше двух гигабайт). Теоретически, емкость раздела может достигать и 4 ГиБ при использовании кластеров по 64 Кбайт, однако этот вариант не является стандартным, так что поддерживается далеко не везде. На компьютерах с таким разделом умеют работать системы начиная с Windows NT4 и более новыми этой линейки, но вот ни бытовая техника, ни большинство «альтернативных» систем с ними не совместимо. Таким образом, этот вариант можно считать полностью пригодным лишь для накопителей невысокой емкости. Последних у пользователей на руках достаточно много до сих пор, но «бал правят» не они. А вот во времена флэшек размером до гигабайта была FAT16 весьма актуальной ввиду, как раз, небольших потребностей в объеме для своих нужд. Так, например, на отформатированной под FAT16 флэшке на 128 МБ пользователю остаются доступными 128 621 744 байт, а если использовать FAT32 — 127 921 152 байт. С одной стороны, пустячок, а с другой — лет пять назад «лишние» 700 КБ на дороге не валялись. Недаром Microsoft не рекомендует использовать FAT32 на разделах менее 512 МБ, так что отформатировать их во что-то отличное от FAT16 можно только сторонними средствами.
Последняя все еще актуальная сфера применения этой системы — телефоны, плееры, фотоаппараты и прочая «бытовуха», рассчитанная на поддержку карт SD или microSD, но не поддерживающая SDHC (сейчас такое уже не выпускается, но еще используется). Стандартной файловой системой для этих карт является как раз FAT16, поэтому большинство таких устройств никаких других и не поддерживают. В данном случае крайне желательно форматировать карту исключительно в устройстве, но не делать этого на компьютере. Причина в том, что Windows XP (по крайней мере, про нее это известно точно) иногда умудряется при явном указании ФС отформатировать карту под FAT32, после чего тот же фотоаппарат может ее не увидеть и даже не предложить возможности переформатировать. Решать проблему приходится какой-нибудь альтернативной программой форматирования — снова на компьютере.
FAT32 — разумный компромисс между совместимостью и прочими характеристиками
В отличие от предшественницы, FAT32 сейчас является наиболее массовой системой для внешних накопителей. 90% флэшек и более половины ВЖД поступают с заводов отформатированными именно под нее. Причина? По совместимости она лишь немногим хуже FAT16 — «за кадром остаются» только слишком уж древние операционные системы. Изначально поддержка FAT32 появилась в августе 1996 года вместе с Windows 95 OSR2 — если кто-то ныне и использует более старую ОС на своем компьютере, то вряд ли он будет подключать к нему современный внешний накопитель 🙂 Причем в большинстве случаев — и не сможет.
Однако иногда использование FAT32 уже неудобно, из-за чего приходится использовать другие системы. Основным и самым существенным недостатком является то, что файлы не могут иметь размер более 4 ГиБ. Соответственно, хранить на накопителе образы DVD-дисков, очень большие архивы или некоторые фильмы — не выходит. Вернее, это можно сделать, но их приходится разбивать на части, а потом перед использованием «склеивать», что очень неудобно. Либо такое разбиение нужно предусмотреть заранее, что иногда делается, но далеко не всегда. Именно эта причина и вызывает необходимость использования других файловых систем — пусть имеющих меньшую поддержку со стороны оборудования, зато свободных от ограничения на размер файла. Судя по нашей конференции, кстати, эта проблема в последнее время стои́т достаточно остро — многие пользователи, купив внешний жесткий диск или флэшдрайв, буквально в первые же дни пытаются записать туда очень большой файл и… очень удивляются реакции системы, которая сообщает о недостатке места на носителе. А удивляться есть чему: по-хорошему, создатели ОС могли бы обрабатывать данную ситуацию более корректным образом — сообщая пользователю, что используемая файловая система непригодна для записи данного файла; а иначе все очень странно выглядит: свободного места десяток или даже сотня (а то и несколько сотен) гигабайт, а рапортуют о его нехватке при попытке записи файла размером всего 5-6 гигабайт. Мы, конечно, не думаем, что после публикации данной статьи соответствующие сообщения в форуме исчезнут, однако надеемся, что их, хотя бы, станет немного меньше 🙂
А вот размер тома, отформатированного под FAT32, теоретически может составлять до 8 ТиБ, что даже на сегодня очень много (не говоря уже о времени, когда система создавалась). Впрочем, не все так просто — компания Microsoft, скажем, считает, что тома более 32 ГиБ делать нежелательно. И не просто считает, а ввела соответствующие ограничения во встроенные программы форматирования Windows XP и более новых версий своей системы. Особенно печальный результат получается при попытке отформатировать, например, флэшку на 64 ГБ штатными средствами: для FAT32 (по мнению Microsoft) она слишком велика, а NTFS на сменных носителях (опять же — по мнению Microsoft) использовать не положено. Обе проблемы с легкостью решаются при помощи использования сторонних утилит форматирования. Так, например, простенькая консольная программа fat32format спокойно работает с томами до 2 ТБ (максимум для нединамических разделов Windows XP).
Не все гладко, кстати, и с Windows 98 или ME, несмотря на то что для них использование FAT32 безальтернативно. Дело в том, что некоторые встроенные в эти системы утилиты так и остались 16-разрядными. Ну а поскольку для таких программ максимальный размер адресуемого блока памяти равен примерно 16 МБ, то разделы, на которых таблица FAT имеет больший размер, им недоступны. В переводе на простой язык это означает невозможность полноценно использовать разделы больше ≈127,5 ГиБ (около 133 ГБ). Точнее, попробовать-то можно, но осторожно — не пытаясь «натравить» на такой раздел разнообразные дисковые утилиты: в лучшем случае (штатные средства) они просто не будут работать, а в худшем — могут и данные испортить. Либо, для страховки, можно просто разбивать накопители, которые планируется использовать и с Windows 9x, на разделы по сотне гигабайт. Заметим, что к внешним дискам эти ОС все равно более лояльны, чем к внутренним: получить под их управлением доступ к внутреннему винчестеру более чем на 137 ГБ — задача не совсем тривиальная, а вот для USB-накопителя бо́льшие объемы допустимы без особых проблем, за исключением неработоспособности дисковых утилит.
У других ОС таких проблем нет, да и описанные, в принципе, решаемы. Это и позволяет считать данную файловую систему оптимальной для тех случаев, когда требуется обеспечить максимальную совместимость внешнего накопителя со всем спектром компьютерной и бытовой техники. Особенно в тех случаях, когда хранение файлов размером более 4 ГБ не предполагается — тогда и заметных на практике недостатков не будет.
NTFS — быстрая, мощная, но избыточная
До последнего времени данная файловая система являлась единственным надежно работающим средством обойти «проблему больших файлов» на компьютерах под управлением Windows. Разумеется, не всякой версии Windows — линейка 9х в принципе не поддерживает NTFS, однако совместимость с этими системами важна уже, мягко говоря, не всем. Хуже то, что в бытовой технике поддержка NTFS встречается достаточно редко. Но в последнее время встречается. Кроме того, такие разделы поддерживают и компьютеры, работающие под управлением MacOS или Linux — как минимум, они умеют читать данные с таких разделов, а при установке специальных драйверов нередко начинает работать и функция записи. При помощи дополнительных драйверов, кстати, поддержку NTFS можно «прикрутить» и к Windows 98 или даже DOS.
Чем эта система хороша? Во-первых, ограничения как на размер тома, так и на размер файлов можно считать отсутствующими: и то, и другое может составлять до 16 экзабайт (для улучшения восприятия сообщим, что в одном экзабайте примерно миллион терабайт). Во-вторых, можно получить и более высокую скорость работы, особенно если попадаются каталоги, содержащие очень большое количество файлов — например, когда их несколько тысяч, разница в скорости работы FAT32 и NTFS заметна невооруженным глазом. В-третьих, эта система является более отказоустойчивой, как минимум из-за журналирования. В-четвертых, она способна работать с кластерами малого размера (точнее, не только способна, но и рассчитана на это), так что потери дискового пространства при хранении маленьких файлов у NTFS заметно меньше, чем у FAT32, не говоря уже об exFAT. В-пятых, достаточно удобной возможностью является встроенная поддержка сжатия данных. Разумеется, архивирование «на лету» куда менее эффективно, чем при помощи специальных программ-архиваторов с серьезными алгоритмами, но зато и выполняется прозрачным для пользователя образом, а при хранении хорошо сжимаемых данных дает заметный эффект. В общем, нет ничего удивительного, что на внутренних жестких дисках на данный момент NTFS является доминирующей системой.
Но на внешних у нее есть и недостатки. Самым безобидным из них является невозможность на практике получить многие преимущества системы. В частности, в настоящий момент редко кто переносит несжатые файлы: даже если говорить об офисных документах, то начиная с 2007 года они уже автоматически сжимаются при сохранении, а о фотографиях или видеофайлах и говорить нечего, так что встроенная поддержка сжатия оказывается не у дел (и даже чаще мешает, чем наоборот). Да и огромные количества файлов в каталоге встречаются редко — куда более типичным является десяток очень больших файлов. (Заодно это нивелирует и пользу от небольших кластеров.) Кроме того, улучшенная за счет кэширования производительность может оказаться палкой о двух концах — отформатированные под NTFS накопители крайне нежелательно отключать от компьютера, не воспользовавшись «Безопасным извлечением» или его аналогами. Все указанные неудобства свойственны для любых внешних накопителей, но для основанных на флэш-памяти есть и дополнительные. Во-первых, журналирование в данном случае рекомендуется отключать (поскольку ресурс массовых флэшек ограничен, так что «лишние» записи файлов им ни к чему). Во-вторых, быстродействие этих накопителей существенным образом зависит от выровненности всех структур ФС и кластеров по границам блоков стирания, что актуально и для FAT, но для NTFS, с ее небольшим размером кластера (а также любовью многих программ, в том числе и штатной утилиты форматирования Windows XP, смещать начало раздела на 63 сектора), может оказаться весьма критично. Да и вообще — как показывает опыт многих пользователей, наилучших скоростных результатов проще всего добиться, используя размер кластера в 32 Кбайт, т. е. не меньший, чем для FAT32.
Добавим к этому проблемы совместимости, после чего становится очевидным, что использование на сменных носителях именно NTFS чаще всего не слишком оправдано. Впрочем, как показано выше (и будет показано ниже), иногда этот вариант является безальтернативным.
exFAT — будущее флэш-накопителей и не только
В ситуации, когда FAT32 уже недостаточно, а NTFS — неоптимальна, неудивительно, что компания Microsoft в очередной раз (спустя 10 лет после появления FAT32) доработала FAT. Новая версия, получившая название exFAT, дебютировала в Windows CE 6, поскольку была наиболее актуальна для встроенных систем и бытовой техники, но позднее ее поддержка появилась и в настольных компьютерах. Чем новинка отличается от предыдущей версии?
Во-первых, снято ограничение на размер файла — подобно варианту «взрослых» систем, он может достигать 16 экзабайт. Во-вторых, увеличен размер кластера: если для предыдущих систем его приходилось удерживать в рамках 32 Кбайт (иногда применяя не всеми поддерживаемый вариант на 64 Кбайт), то в exFAT максимальный размер кластера составляет 32 МиБ, т. е. увеличился в 1024 раза. Разумеется, это крайне неудобно в случае файлов небольшого размера, однако они сейчас не слишком-то актуальны в качестве объекта транспортировки, зато размер таблицы размещения файлов удалось сократить соответствующим образом, а следовательно, снизились и требования к объему оперативной памяти для работы с томами большого размера. Естественно, для exFAT было отменено и волюнтаристское ограничение в 32 ГиБ для размера тома — не нужно оно более 🙂 Первыми, кто этим воспользовался, кстати, оказались производители SD-карт памяти, достаточно жестко завязывающиеся в стандартах именно на FAT. Для спецификаций версий SD 1.х стандартной была FAT16 (что и определяло максимальную емкость карты в 2 ГБ), версия 2.0 ориентируется на FAT32 (карты SDHC до 32 ГБ), а в новой версии 3.0 для карт большого объема стандартом является именно exFAT (соответственно, карты SDXC заметных с точки зрения практического использования ограничений по емкости не имеют).
Нельзя также сказать, что все улучшения были только количественными — нашлись и качественные. В частности, отменены ограничения на количество файлов в каталоге. Не то чтобы они сильно мешали ранее, но все же — теперь, например, производителям фотоаппарата вовсе необязательно раскладывать фотографии по папкам, а можно спокойненько все записывать в корень карты. Более существенное улучшение — появилась битовая карта свободного места, что при правильном использовании позволяет уменьшить фрагментацию (ранее подбор наиболее подходящего свободного куска дискового пространства тоже был возможен, но ценой активного использования для каждой операции ресурсов системы). Журналирования, естественно, в рамках новой системы нет — слишком проста она для этого, да и для флэш-накопителей (на которые exFAT в первую очередь и нацелена) данная операция нежелательна. Но и потенциальную возможность повышения отказоустойчивости предусмотрели — возможна поддержка транзакций (естественно, если это поддерживает хост-устройство).
В общем, системка получилась на диво хороша — есть все нужное и нет ничего ненужного. Почему же до сих пор приходится мучиться с выбором, а не перейти на exFAT повсеместно? А потому, что для внешнего накопителя, как уже не раз было сказано, совместимость является той еще «священной коровой» — что толку в характеристиках используемой вами на флэшке файловой системы, если вы этой флэшкой сможете воспользоваться лишь на каждом десятом компьютере? exFAT до сих пор находится как раз в подобном положении. Гарантированно ее использовать можно только на компьютерах, работающих под управлением Windows Vista с SP1, Windows Server 2008 и Windows Seven. Вроде бы поддержка есть и в MacOS X 10.6, но тут, вероятно, потребуется апдейт системы — кстати, очень может быть, что Apple бы и не стала поддерживать новую разработку Microsoft, однако в последнюю линейку компьютеров компания решила встроить картоводы с поддержкой карт SDXC, а это в обязательном порядке потребовало и совместимости с exFAT. Для Linux придется самостоятельно интегрировать драйвер (причем их два: нормальный поддерживает только чтение, а запись — лишь использующий FUSE). Пользователям Windows XP повезло чуть больше — еще в начале 2009 года на Windows Update появилось официальное обновление KB955704, добавляющее к системам с SP2 и SP3 поддержку exFAT, однако оно не относится к обязательным, так что найдется далеко не на всех компьютерах. С бытовой техникой все столь же грустно, как с предыдущими версиями Windows — счастливым исключением являются немногие современные устройства с поддержкой SDXC (им деваться некуда), однако в остальных до сих пор проще встретить поддержку NTFS, нежели exFAT.
Прочая экзотика, иногда полезная
Нравится это кому или нет, но на данный момент времени большинство персональных компьютеров (порядка 95%) работает под управлением одной из систем семейства Windows, причем в основном эта доля распределена между Windows XP, Vista и Seven. Соответственно, наиболее актуальным является выбор между перечисленными файловыми системами, ведь только они без особых ухищрений поддерживаются этой тройкой. Задумываться о чем-либо ином есть смысл только в том случае, когда совместимость с Windows вас в принципе не волнует: несмотря на то что для поддержки большинства «родных» для прочих ОС файловых систем есть и драйверы для Windows, на каждый компьютер их ставить — дело неблагодарное. Поэтому вне зависимости от достоинств и недостатков какой-нибудь ext3 использовать ее можно разве что в том случае, когда внешний накопитель эксплуатируется в качестве стационарного или близком к тому виде.
Единственное частичное исключение из правил — файловая система HFS+, традиционная для MacOS X. И дело даже не в каких-то ее особых качествах, а в том, что эта операционка имеет пусть и небольшую, но монолитную долю рынка (чего не скажешь о разных иногда несовместимых друг с другом «линуксах»). Кроме того, несмотря на малую распространенность в мировом масштабе, есть страны, где ниша MacOS вполне ощутима. Это и ставит HFS+ в привилегированное положение. Вплоть до того, что некоторые производители продают специальные версии внешних винчестеров «for Mac», отформатированных под HFS+ (а не FAT32 или NTFS, которые встречаются чаще) прямо на заводе. Из этого не следует ни непригодность для Mac прочих винчестеров, ни невозможность использовать «маковские» на других компьютерах. Более того — для обмена данными между Маком и прочими системами вообще удобнее применять FAT32, гарантированно работающую в большинстве случаев. В чем плюс именно HFS+? В том, что встроенная система резервного копирования и восстановления информации Time Machine совместима только с дисками с этой файловой системой. Таким образом, если вы используете накопитель для резервирования данных на Маке, выбора не остается. Ну а если иногда возникает и необходимость подключения этого внешнего устройства к другим компьютерам, вполне логичным действием будет установка на них специальных драйверов с поддержкой HFS+. Впрочем, не самым худшим вариантом окажется и разбиение диска на пару разделов — небольшой с FAT32 позволит обмениваться данными различным системам, а раздел HFS+ даст возможность ни в чем себе не отказывать при работе под MacOS X.
Иногда покупка специальной версии внешнего винчестера «для Маков» может быть оправдана и для пользователя Windows — как правило, все эти модели снабжены интерфейсом FireWire (иногда и FireWire-800) в дополнение к USB 2.0, что может оказаться полезным. C файловой системой проблем не будет — с точки зрения Windows, отформатированные под HFS+ винчестеры никакой структуры данных не содержат, так что просто создаем раздел (или разделы) и форматируем нужным нам образом.
FAQ вместо заключения
В принципе, приведенной выше информации, на наш взгляд, вполне достаточно для того, чтобы в любом случае определиться с правильным выбором файловой системы на внешнем накопителе, а также решить возможные возникающие проблемы. Однако для простоты использования мы решили основные (наиболее часто возникающие) вопросы вынести в отдельный материал. Часто задаваемые вопросы по использованию различных файловых систем на внешних накопителях
Файловая система NTFS
Операционные системы Microsoft семейства Windows NT нельзя представить без файловой системы NTFS — одной из самых сложных и удачных из существующих на данный момент файловых систем. Данная статья расскажет вам, в чем особенности и недостатки этой системы, на каких принципах основана организация информации, и как поддерживать систему в стабильном состоянии, какие возможности предлагает NTFS и как их можно использовать обычному пользователю.Часть 1. Физическая структура NTFS
Начнем с общих фактов. Раздел NTFS, теоретически, может быть почти какого угодно размера. Предел, конечно, есть, но я даже не буду указывать его, так как его с запасом хватит на последующие сто лет развития вычислительной техники — при любых темпах роста. Как обстоит с этим дело на практике? Почти так же. Максимальный размер раздела NTFS в данный момент ограничен лишь размерами жестких дисков. NT4, правда, будет испытывать проблемы при попытке установки на раздел, если хоть какая-нибудь его часть отступает более чем на 8 Гб от физического начала диска, но эта проблема касается лишь загрузочного раздела.
Лирическое отступление. Метод инсталляции NT4.0 на пустой диск довольно оригинален и может навести на неправильные мысли о возможностях NTFS. Если вы укажете программе установки, что желаете отформатировать диск в NTFS, максимальный размер, который она вам предложит, будет всего 4 Гб. Почему так мало, если размер раздела NTFS на самом деле практически неограничен? Дело в том, что установочная секция просто не знает этой файловой системы 🙂 Программа установки форматирует этот диск в обычный FAT, максимальный размер которого в NT составляет 4 Гбайт (с использованием не совсем стандартного огромного кластера 64 Кбайта), и на этот FAT устанавливает NT. А вот уже в процессе первой загрузки самой операционной системы (еще в установочной фазе) производится быстрое преобразование раздела в NTFS; так что пользователь ничего и не замечает, кроме странного «ограничения» на размер NTFS при установке. 🙂
Структура раздела — общий взгляд
Как и любая другая система, NTFS делит все полезное место на кластеры — блоки данных, используемые единовременно. NTFS поддерживает почти любые размеры кластеров — от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт. Никаких аномалий кластерной структуры NTFS не имеет, поэтому на эту, в общем-то, довольно банальную тему, сказать особо нечего.
Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону — пространство, в которое растет метафайл MFT (об этом ниже). Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой — это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов.
Свободное место диска, однако, включает в себя всё физически свободное место — незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается (в текущих версиях операционных систем ровно в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расширится. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система старалась оставить её свободной, но ничего не получилось. Жизнь продолжается… Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.
MFT и его структура
Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл — даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table — общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и, как не парадоксально, себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе — они называются метафайлами, причем самый первый метафайл — сам MFT. Эти первые 16 элементов MFT — единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности — они очень важны — хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска — восстановить его положение можно с помощью его самого, «зацепившись» за самую основу — за первый элемент MFT.
Метафайлы
Первые 16 файлов NTFS (метафайлы) носят служебный характер. Каждый из них отвечает за какой-либо аспект работы системы. Преимущество настолько модульного подхода заключается в поразительной гибкости — например, на FAT-е физическое повреждение в самой области FAT фатально для функционирования всего диска, а NTFS может сместить, даже фрагментировать по диску, все свои служебные области, обойдя любые неисправности поверхности — кроме первых 16 элементов MFT.
Метафайлы находятся корневом каталоге NTFS диска — они начинаются с символа имени «$», хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер — можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены используемые в данный момент метафайлы и их назначение.
$MFT | сам MFT |
$MFTmirr | копия первых 16 записей MFT, размещенная посередине диска |
$LogFile | файл поддержки журналирования (см. ниже) |
$Volume | служебная информация — метка тома, версия файловой системы, т. д. |
$AttrDef | список стандартных атрибутов файлов на томе |
$. | корневой каталог |
$Bitmap | карта свободного места тома |
$Boot | загрузочный сектор (если раздел загрузочный) |
$Quota | файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5) |
$Upcase | файл — таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально. |
Файлы и потоки
Итак, у системы есть файлы — и ничего кроме файлов. Что включает в себя это понятие на NTFS?
- Прежде всего, обязательный элемент — запись в MFT, ведь, как было сказано ранее, все файлы диска упоминаются в MFT. В этом месте хранится вся информация о файле, за исключением собственно данных. Имя файла, размер, положение на диске отдельных фрагментов, и т. д. Если для информации не хватает одной записи MFT, то используются несколько, причем не обязательно подряд.
- Опциональный элемент — потоки данных файла. Может показаться странным определение «опциональный», но, тем не менее, ничего странного тут нет. Во-первых, файл может не иметь данных — в таком случае на него не расходуется свободное место самого диска. Во-вторых, файл может иметь не очень большой размер. Тогда идет в ход довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт, обычно не имеют своего «физического» воплощения в основной файловой области — все данные такого файла хранятся в одном месте — в MFT.
Довольно интересно обстоит дело и с данными файла. Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение — у него нет как таковых данных, а есть потоки (streams). Один из потоков и носит привычный нам смысл — данные файла. Но большинство атрибутов файла — тоже потоки! Таким образом, получается, что базовая сущность у файла только одна — номер в MFT, а всё остальное опционально. Данная абстракция может использоваться для создания довольно удобных вещей — например, файлу можно «прилепить» еще один поток, записав в него любые данные — например, информацию об авторе и содержании файла, как это сделано в Windows 2000 (самая правая закладка в свойствах файла, просматриваемых из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами: наблюдаемый размер файла — это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого освободится 1 Гбайт свободного места — просто потому, что какая-нибудь хитрая программа или технология прилепила в нему дополнительный поток (альтернативные данные) гигабайтового размера. Но на самом деле в текущий момент потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто имейте в виду, что файл на NTFS — это более глубокое и глобальное понятие, чем можно себе вообразить просто просматривая каталоги диска. Ну и напоследок: имя файла может содержать любые символы, включая полый набор национальных алфавитов, так как данные представлены в Unicode — 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла — 255 символов.
Каталоги
Каталог на NTFS представляет собой специфический файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога. Внутренняя структура каталога представляет собой бинарное дерево. Вот что это означает: для поиска файла с данным именем в линейном каталоге, таком, например, как у FAT-а, операционной системе приходится просматривать все элементы каталога, пока она не найдет нужный.10 = 1024). Экономия времени поиска налицо. Не стоит, однако думать, что в традиционных системах (FAT) всё так запущено: во-первых, поддержание списка файлов в виде бинарного дерева довольно трудоемко, а во-вторых — даже FAT в исполнении современной системы (Windows2000 или Windows98) использует сходную оптимизацию поиска. Это просто еще один факт в вашу копилку знаний. Хочется также развеять распространенное заблуждение (которое я сам разделял совсем еще недавно) о том, что добавлять файл в каталог в виде дерева труднее, чем в линейный каталог: это достаточно сравнимые по времени операции — дело в том, что для того, чтобы добавить файл в каталог, нужно сначала убедится, что файла с таким именем там еще нет 🙂 — и вот тут-то в линейной системе у нас будут трудности с поиском файла, описанные выше, которые с лихвой компенсируют саму простоту добавления файла в каталог.
Какую информацию можно получить, просто прочитав файл каталога? Ровно то, что выдает команда dir. Для выполнения простейшей навигации по диску не нужно лазить в MFT за каждым файлом, надо лишь читать самую общую информацию о файлах из файлов каталогов. Главный каталог диска — корневой — ничем не отличается об обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.
Журналирование
NTFS — отказоустойчивая система, которая вполне может привести себя в корректное состояние при практически любых реальных сбоях. Любая современная файловая система основана на таком понятии, как транзакция — действие, совершаемое целиком и корректно или не совершаемое вообще. У NTFS просто не бывает промежуточных (ошибочных или некорректных) состояний — квант изменения данных не может быть поделен на до и после сбоя, принося разрушения и путаницу — он либо совершен, либо отменен.
Пример 1: осуществляется запись данных на диск. Вдруг выясняется, что в то место, куда мы только что решили записать очередную порцию данных, писать не удалось — физическое повреждение поверхности. Поведение NTFS в этом случае довольно логично: транзакция записи откатывается целиком — система осознает, что запись не произведена. Место помечается как сбойное, а данные записываются в другое место — начинается новая транзакция.
Пример 2: более сложный случай — идет запись данных на диск. Вдруг, бах — отключается питание и система перезагружается. На какой фазе остановилась запись, где есть данные, а где чушь? На помощь приходит другой механизм системы — журнал транзакций. Дело в том, что система, осознав свое желание писать на диск, пометила в метафайле $LogFile это свое состояние. При перезагрузке это файл изучается на предмет наличия незавершенных транзакций, которые были прерваны аварией и результат которых непредсказуем — все эти транзакции отменяются: место, в которое осуществлялась запись, помечается снова как свободное, индексы и элементы MFT приводятся в с состояние, в котором они были до сбоя, и система в целом остается стабильна. Ну а если ошибка произошла при записи в журнал? Тоже ничего страшного: транзакция либо еще и не начиналась (идет только попытка записать намерения её произвести), либо уже закончилась — то есть идет попытка записать, что транзакция на самом деле уже выполнена. В последнем случае при следующей загрузке система сама вполне разберется, что на самом деле всё и так записано корректно, и не обратит внимания на «незаконченную» транзакцию.
И все-таки помните, что журналирование — не абсолютная панацея, а лишь средство существенно сократить число ошибок и сбоев системы. Вряд ли рядовой пользователь NTFS хоть когда-нибудь заметит ошибку системы или вынужден будет запускать chkdsk — опыт показывает, что NTFS восстанавливается в полностью корректное состояние даже при сбоях в очень загруженные дисковой активностью моменты. Вы можете даже оптимизировать диск и в самый разгар этого процесса нажать reset — вероятность потерь данных даже в этом случае будет очень низка. Важно понимать, однако, что система восстановления NTFS гарантирует корректность файловой системы, а не ваших данных. Если вы производили запись на диск и получили аварию — ваши данные могут и не записаться. Чудес не бывает.
Сжатие
Файлы NTFS имеют один довольно полезный атрибут — «сжатый». Дело в том, что NTFS имеет встроенную поддержку сжатия дисков — то, для чего раньше приходилось использовать Stacker или DoubleSpace. Любой файл или каталог в индивидуальном порядке может хранится на диске в сжатом виде — этот процесс совершенно прозрачен для приложений. Сжатие файлов имеет очень высокую скорость и только одно большое отрицательное свойство — огромная виртуальная фрагментация сжатых файлов, которая, правда, никому особо не мешает. Сжатие осуществляется блоками по 16 кластеров и использует так называемые «виртуальные кластеры» — опять же предельно гибкое решение, позволяющее добиться интересных эффектов — например, половина файла может быть сжата, а половина — нет. Это достигается благодаря тому, что хранение информации о компрессированности определенных фрагментов очень похоже на обычную фрагментацию файлов: например, типичная запись физической раскладки для реального, несжатого, файла:
кластеры файла с 1 по 43-й хранятся в кластерах диска начиная с 400-го
кластеры файла с 44 по 52-й хранятся в кластерах диска начиная с 8530-го…
Физическая раскладка типичного сжатого файла:
кластеры файла с 1 по 9-й хранятся в кластерах диска начиная с 400-го
кластеры файла с 10 по 16-й нигде не хранятся
кластеры файла с 17 по 18-й хранятся в кластерах диска начиная с 409-го
кластеры файла с 19 по 36-й нигде не хранятся
Видно, что сжатый файл имеет «виртуальные» кластеры, реальной информации в которых нет. Как только система видит такие виртуальные кластеры, она тут же понимает, что данные предыдущего блока, кратного 16-ти, должны быть разжаты, а получившиеся данные как раз заполнят виртуальные кластеры — вот, по сути, и весь алгоритм.
Безопасность
NTFS содержит множество средств разграничения прав объектов — есть мнение, что это самая совершенная файловая система из всех ныне существующих. В теории это, без сомнения, так, но в текущих реализациях, к сожалению, система прав достаточно далека от идеала и представляет собой хоть и жесткий, но не всегда логичный набор характеристик. Права, назначаемые любому объекту и однозначно соблюдаемые системой, эволюционируют — крупные изменения и дополнения прав осуществлялись уже несколько раз и к Windows 2000 все-таки они пришли к достаточно разумному набору.
Права файловой системы NTFS неразрывно связаны с самой системой — то есть они, вообще говоря, необязательны к соблюдению другой системой, если ей дать физический доступ к диску. Для предотвращения физического доступа в Windows2000 (NT5) всё же ввели стандартную возможность — об этом см. ниже. Система прав в своем текущем состоянии достаточно сложна, и я сомневаюсь, что смогу сказать широкому читателю что-нибудь интересное и полезное ему в обычной жизни. Если вас интересует эта тема — вы найдете множество книг по сетевой архитектуре NT, в которых это описано более чем подробно.
На этом описание строение файловой системы можно закончить, осталось описать лишь некоторое количество просто практичных или оригинальных вещей.
Hard Links
Эта штука была в NTFS с незапамятных времен, но использовалась очень редко — и тем не менее: Hard Link — это когда один и тот же файл имеет два имени (несколько указателей файла-каталога или разных каталогов указывают на одну и ту же MFT запись). Допустим, один и тот же файл имеет имена 1.txt и 2.txt: если пользователь сотрет файл 1, останется файл 2. Если сотрет 2 — останется файл 1, то есть оба имени, с момента создания, совершенно равноправны. Файл физически стирается лишь тогда, когда будет удалено его последнее имя.
Symbolic Links (NT5)
Гораздо более практичная возможность, позволяющая делать виртуальные каталоги — ровно так же, как и виртуальные диски командой subst в DOSе. Применения достаточно разнообразны: во-первых, упрощение системы каталогов. Если вам не нравится каталог Documents and settingsAdministratorDocuments, вы можете прилинковать его в корневой каталог — система будет по прежнему общаться с каталогом с дремучим путем, а вы — с гораздо более коротким именем, полностью ему эквивалентным. Для создания таких связей можно воспользоваться программой junction (junction.zip, 15 Кб), которую написал известный специалист Mark Russinovich. Программа работает только в NT5 (Windows 2000), как и сама возможность.
Для удаления связи можно воспользоваться стандартной командой rd.
ВНИМАНИЕ: Попытка уделения связи с помощью проводника или других файловых менеджеров, не понимающих виртуальную природу каталога (например, FAR), приведет к удалению данных, на которые ссылается ссылка! Будьте осторожны.
Шифрование (NT5)
Полезная возможность для людей, которые беспокоятся за свои секреты — каждый файл или каталог может также быть зашифрован, что не даст возможность прочесть его другой инсталляцией NT. В сочетании со стандартным и практически непрошибаемым паролем на загрузку самой системы, эта возможность обеспечивает достаточную для большинства применений безопасность избранных вами важных данных.Часть 2. Особенности дефрагментации NTFS
Вернемся к одному достаточно интересному и важному моменту — фрагментации и дефрагментации NTFS. Дело в том, что ситуация, сложившаяся с этими двумя понятиями в настоящий момент, никак не может быть названа удовлетворительной. В самом начале утверждалось, что NTFS не подвержена фрагментации файлов. Это оказалось не совсем так, и утверждение сменили — NTFS препятствует фрагментации. Оказалось, что и это не совсем так. То есть она, конечно, препятствует, но толк от этого близок к нулю… Сейчас уже понятно, что NTFS — система, которая как никакая другая предрасположена к фрагментации, что бы ни утверждалось официально. Единственное что — логически она не очень от этого страдает. Все внутренние структуры построены таким образом, что фрагментация не мешает быстро находить фрагменты данных. Но от физического последствия фрагментации — лишних движений головок — она, конечно, не спасает. И поэтому — вперед и с песней.
К истокам проблемы
Как известно, система сильнее всего фрагментирует файлы когда свободное место кончается, когда приходится использовать мелкие дырки, оставшиеся от других файлов. Тут возникает первое свойство NTFS, которое прямо способствует серьезной фрагментации.
Диск NTFS поделен на две зоны. В начала диска идет MFT зона — зона, куда растет MFT, Master File Table. Зона занимает минимум 12% диска, и запись данных в эту зону невозможна. Это сделано для того, чтобы не фрагментировался хотя бы MFT. Но когда весь остальной диск заполняется — зона сокращается ровно в два раза :). И так далее. Таким образом мы имеем не один заход окончания диска, а несколько. В результате если NTFS работает при диске, заполненном на около 90% — фрагментация растет как бешенная.
Попутное следствие — диск, заполненный более чем на 88%, дефрагментировать почти невозможно — даже API дефрагментации не может перемещать данные в MFT зону. Может оказаться так, что у нас не будет свободного места для маневра.
Далее. NTFS работает себе и работает, и всё таки фрагментируется — даже в том случае, если свободное место далеко от истощения. Этому способствует странный алгоритм нахождения свободного места для записи файлов — второе серьезное упущение. Алгоритм действий при любой записи такой: берется какой-то определенный объем диска и заполняется файлом до упора. Причем по очень интересному алгоритму: сначала заполняются большие дырки, потом маленькие. Т.е. типичное распределение фрагментов файла по размеру на фрагментированной NTFS выглядит так (размеры фрагментов):
16 — 16 — 16 — 16 — 16 — [скачек назад] — 15 — 15 — 15 — [назад] — 14 — 14 — 14 …. 1 — 1 — 1 -1 — 1…
Так процесс идет до самых мелких дырок в 1 кластер, несмотря на то, что на диске наверняка есть и гораздо более большие куски свободного места.
Вспомните сжатые файлы — при активной перезаписи больших объемов сжатой информации на NTFS образуется гигантское количество «дырок» из-за перераспределения на диске сжатых объемов — если какой-либо участок файла стал сжиматься лучше или хуже, его приходится либо изымать из непрерывной цепочки и размещать в другом месте, либо стягивать в объеме, оставляя за собой дырку.
Смысл в сего этого вступления в пояснении того простого факта, что никак нельзя сказать, что NTFS препятствует фрагментации файлов. Наоборот, она с радостью их фрагментирует. Фрагментация NTFS через пол года работы доведет до искреннего удивления любого человека, знакомого с работой файловой системой. Поэтому приходится запускать дефрагментатор. Но на этом все наши проблемы не заканчиваются, а, увы, только начинаются.
Средства решения?
В NT существует стандартное API дефрагментации. Обладающее интересным ограничением для перемещения блоков файлов: за один раз можно перемещать не менее 16 кластеров (!), причем начинаться эти кластеры должны с позиции, кратной 16 кластерам в файле. В общем, операция осуществляется исключительно по 16 кластеров. Следствия:
- В дырку свободного места менее 16 кластеров нельзя ничего переместить (кроме сжатых файлов, но это неинтересные в данный момент тонкости).
- Файл, будучи перемещенный в другое место, оставляет после себя (на новом месте) «временно занятое место», дополняющее его по размеру до кратности 16 кластерам.
- При попытке как-то неправильно (»не кратно 16») переместить файл результат часто непредсказуем. Что-то округляется, что-то просто не перемещается… Тем не менее, всё место действия щедро рассыпается «временно занятым местом».
«Временно занятое место» служит для облегчения восстановления системы в случае аппаратного сбоя и освобождается через некоторое время, обычно где-то пол минуты.
Тем не менее, логично было бы использовать это API, раз он есть. Его и используют. Поэтому процесс стандартной дефрагментации, с поправками на ограниченность API, состоит из следующих фаз (не обязательно в этом порядке):
- Вынимание файлов из MFT зоны. Не специально — просто обратно туда их положить не представляется возможным 🙂 Безобидная фаза, и даже в чем то полезная.
- Дефрагментация файлов. Безусловно, полезный процесс, несколько, правда, осложняемый ограничениями кратности перемещений — файлы часто приходится перекладывать сильнее, чем это было бы логично сделать по уму.
- Дефрагментация MFT, виртуалки (pagefile.sys) и каталогов. Возможна через API только в Windows2000, иначе — при перезагрузке, отдельным процессом, как в старом Diskeeper-е.
- Складывание файлов ближе к началу — так называемая дефрагментация свободного места. Вот это — воистину страшный процесс.
Допустим, мы хотим положить файлы подряд в начало диска. Кладем один файл. Он оставляет хвост занятости дополнения до кратности 16. Кладем следующий — после хвоста, естественно. Через некоторое время, по освобождению хвоста, имеем дырку Таким образом, имеется два примерно равнозначных варианта. Первый — часто оптимизировать диск таким дефрагментатором, смиряясь при этом с дикой фрагментацией заново созданных файлов. Второй вариант — вообще ничего не трогать, и смириться с равномерной, но гораздо более слабой фрагментацией всех файлов на диске.
Пока есть всего один дефрагментатор, который игнорирует API дефрагментации и работает как-то более напрямую — Norton Speeddisk 5.0 для NT. Когда его пытаются сравнить со всеми остальными — Diskeeper, O&O defrag, т. д. — не упоминают этого главного, самого принципиального, отличия. Просто потому, что эта проблема тщательно скрывается, по крайней мере уж точно не афишируется на каждом шагу. Speeddisk — единственная на сегодняшний день программа, которая может оптимизировать диск полностью, не создавая маленьких незаполненных фрагментов свободного места. Стоит добавить также, что при помощи стандартного API невозможно дефрагментировать тома NTFS с кластером более 4 Кбайт, а SpeedDisk и это может.
К сожалению, в Windows 2000 поместили дефрагментатор, который работает через API, и, соответственно, плодит дырки Как некоторый вывод из всего этого: все остальные дефрагментаторы при одноразовом применении просто вредны. Если вы запускали его хоть раз — нужно запускать его потом хотя бы раз в месяц, чтобы избавится от фрагментации новоприбывающих файлов. В этом основная суть сложности дефрагментации NTFS теми средствами, которые сложились исторически.Часть 3. Что выбрать?
Любая из представленных ныне файловых систем уходит своими корнями в глубокое прошлое — еще к 80-м годам. Да, NTFS, как это не странно — очень старая система! Дело в том, что долгое время персональные компьютеры пользовались лишь операционной системой DOS, которой и обязана своим появлением FAT. Но параллельно разрабатывались и тихо существовали системы, нацеленные на будущее. Две таких системы, получившие всё же широкое признание — NTFS, созданная для операционной системы Windows NT 3.1 еще в незапамятные времена, и HPFS — верная спутница OS/2.
Внедрение новых систем шло трудно — еще в 95м году, с выходом Windows95, ни у кого не было и мыслей о том, что что-то нужно менять — FAT получил второе дыхание посредством налепленной сверху заплатки «длинные имена», реализация которых там хоть и близка к идеально возможной без изменения системы, но всё же довольно бестолкова. Но в последующие годы необходимость перемен назрела окончательно, поскольку естественные ограничения FAT стали давать о себе знать. FAT32, появившаяся в Windows 95 OSR2, просто сдвинула рамки — не изменив сути системы, которая просто не дает возможности организовать эффективную работу с большим количеством данных.
HPFS (High Performance File System), активно применяемая до сих пор пользователями OS/2, показала себя достаточно удачной системой, но и она имела существенные недостатки — полное отсутствие средств автоматической восстанавливаемости, излишнюю сложность организации данных и невысокую гибкость.
NTFS же долго не могла завоевать персональные компьютеры из-за того, что для организации эффективной работы с её структурами данных требовались значительные объемы памяти. Системы с 4 или 8 Мбайт (стандарт 95-96 годов) были просто неспособны получить хоть какой-либо плюс от NTFS, поэтому за ней закрепилась не очень правильная репутация медленной и громоздкой системы. На самом деле это не соответствует действительности — современные компьютерные системы с памятью более 64 Мб получают просто огромный прирост производительности от использования NTFS.
В данной таблице сведены воедино все существенные плюсы и минусы распространенных в наше время систем, таких как FAT32, FAT и NTFS. Вряд ли разумно обсуждать другие системы, так как в настоящее время 97% пользователей делают выбор между Windows98, Windows NT4.0 и Windows 2000 (NT5.0), а других вариантов там просто нет.
FAT | FAT32 | NTFS | |
Системы, её поддерживающие | DOS, Windows9Х, NT всех версий | Windows98, NT5 | NT4, NT5 |
Максимальный размер тома | 2 Гбайт | практически неограничен | практически неограничен |
Макс. число файлов на томе | примерно 65 тысяч | практически не ограничено | практически не ограничено |
Имя файла | с поддержкой длинных имен — 255 символов, системный набор символов | с поддержкой длинных имен — 255 символов, системный набор символов | 255 символов, любые символы любых алфавитов (65 тысяч разных начертаний) |
Возможные атрибуты файла | Базовый набор | Базовый набор | всё, что придет в голову производителям программного обеспечения |
Безопасность | нет | нет | да (начиная с NT5.0 встроена возможность физически шифровать данные) |
Сжатие | нет | нет | да |
Устойчивость к сбоям | средняя (система слишком проста и поэтому ломаться особо нечему :)) | плохая (средства оптимизации по скорости привели к появлению слабых по надежности мест) | полная — автоматическое восстановление системы при любых сбоях (не считая физические ошибки записи, когда пишется одно, а на самом деле записывается другое) |
Экономичность | минимальная (огромные размеры кластеров на больших дисках) | улучшена за счет уменьшения размеров кластеров | максимальна. Очень эффективная и разнообразная система хранения данных |
Быстродействие | высокое для малого числа файлов, но быстро уменьшается с появлением большого количества файлов в каталогах. результат — для слабо заполненных дисков — максимальное, для заполненных — плохое | полностью аналогично FAT, но на дисках большого размера (десятки гигабайт) начинаются серьезные проблемы с общей организацией данных | система не очень эффективна для малых и простых разделов (до 1 Гбайт), но работа с огромными массивами данных и внушительными каталогами организована как нельзя более эффективно и очень сильно превосходит по скорости другие системы |
Хотелось бы сказать, что если ваша операционная система — NT (Windows 2000), то использовать какую-либо файловую систему, отличную от NTFS — значит существенно ограничивать свое удобство и гибкость работы самой операционной системы. NT, а особенно Windows 2000, составляет с NTFS как бы две части единого целого — множество полезных возможностей NT напрямую завязано на физическую и логическую структуру файловой системы, и использовать там FAT или FAT32 имеет смысл лишь для совместимости — если у вас стоит задача читать эти диски из каких-либо других систем.
Хотелось бы выразить искреннюю признательность Андрею Шабалину, без которого эта статья просто не была бы написана, а даже будучи написанной, содержала бы много досадных неточностейПродолжение читайте в статье «Надежность дисковой системы NT»
Введение в файловые системы
В настоящее время компьютерный рынок предлагает огромное количество возможностей для хранения информации в цифровом виде. Существующие устройства хранения включают внутренние и внешние жесткие диски, карты памяти фото / видеокамер, USB-накопители, сложные системы RAID и другие. На них хранятся фрагменты данных в виде файлов, таких как документы, изображения, базы данных, сообщения электронной почты и т. Д.которые должны быть эффективно организованы на диске и легко извлечены при необходимости.
В следующей статье дается общий обзор файловой системы, основных средств управления данными в любом хранилище, а также описаны особенности различных типов файловых систем.
Что такое файловая система?
Любой компьютерный файл хранится на носителе с заданной емкостью. На самом деле каждое хранилище представляет собой линейное пространство для чтения или чтения и записи цифровой информации.Каждый байт информации в нем имеет свое смещение от начала хранения, известное как адрес , и ссылается на этот адрес. Хранилище может быть представлено в виде сетки с набором пронумерованных ячеек (каждая ячейка представляет собой один байт). Любой файл, сохраненный в хранилище, получает свои ячейки.
Обычно компьютерные запоминающие устройства используют пару из сектора и внутрисекторного смещения для ссылки на любой байт информации в запоминающем устройстве. Сектор — это группа байтов (обычно 512 байтов ), минимальная адресуемая единица физической памяти.
Чтобы опустить вторую часть адреса (внутрисекторное смещение), файлы обычно сохраняются , начиная с начала сектора , а занимают целые сектора (например.g .: 10-байтовый файл занимает весь сектор, 512-байтовый файл также занимает весь сектор, в то же время 514-байтовый файл занимает два целых сектора).
Каждый файл хранится в « неиспользуемых» секторах и может быть прочитан позже по его известной позиции и размеру. Однако как мы узнаем, какие сектора заняты, а какие свободны? Где хранятся размер, положение и имя файла? Именно за это отвечает файловая система .
В целом, файловая система представляет собой структурированное представление данных и набор метаданных , описывающих эти данные.Применяется к хранилищу во время операции форматирования. Файловая система служит для всего хранилища, а также является частью изолированного сегмента хранилища — раздела диска . Обычно файловая система оперирует блоками, , а не секторами. Блоки файловой системы — это группы секторов, которые оптимизируют адресацию хранилища. В современных файловых системах обычно используются блоки размером от 1 до 128 секторов (512-65536 байт). Файлы обычно хранятся в начале блока и занимают целые блоки.
Константа Операции записи / удаления в файловой системе вызывают ее фрагментацию . Таким образом, файлы не хранятся целиком, а разбиваются на фрагменты. Например, хранилище полностью занято файлами размером около 4 блоков каждый (например, коллекцией фотографий). Пользователь хочет сохранить файл, занимающий 8 блоков и, следовательно, удаляющий первый и последний файлы. Тем самым он освобождает пространство из 8 блоков, однако первый сегмент находится рядом с началом хранилища, а второй — в конце хранилища.В этом случае файл из 8 блоков разбивается на две части (по 4 блока на каждую) и занимает «дыры» в свободном пространстве. Информация об обоих фрагментах как частях единого файла хранится в файловой системе.
Помимо файлов пользователя, файловая система также содержит собственные параметры , (например, размер блока), дескрипторы файлов, (включая размер файла, расположение файла, его фрагменты и т. Д.), имена файлов и иерархия каталогов 900 13.Он также может хранить информацию о безопасности, , расширенные атрибуты, и другие параметры.
Чтобы соответствовать различным требованиям пользователей, таким как производительность, стабильность и надежность хранилища, было разработано множество файловых систем, которые могут более эффективно служить различным целям.
Файловые системы Windows
Microsoft Windows использует две основные файловые системы: NTFS, основной формат, используемый большинством современных версий этой ОС по умолчанию, и FAT , унаследованный от старой DOS и имеющий exFAT в качестве более позднего расширения.Кроме того, файловая система ReFS была разработана Microsoft как файловая система нового поколения для серверных компьютеров, начиная с Windows Server 2012.
FAT
FAT (таблица размещения файлов) — один из простейших типов файловых систем, который существует с 1980-х годов. Он состоит из сектора дескриптора файловой системы (загрузочный сектор или суперблок), , таблицы распределения блоков файловой системы (называемой таблицей размещения файлов) и простого пространства хранения для хранения файлов и папок.Файлы в FAT хранятся в каталогах. Каждый каталог представляет собой массив 32-байтовых записей , каждая из которых определяет файл или расширенные атрибуты файла (например, длинное имя файла). Запись файла атрибутирует первый блок файла. Любой следующий блок можно найти в таблице распределения блоков, используя его как связанный список.
Таблица распределения блоков содержит массив дескрипторов блоков. Значение z ero указывает, что блок не используется, а значение , отличное от нуля, , относится к следующему блоку файла или специальному значению для конца файла.
Числа в FAT12 , FAT16 , FAT32 обозначают количество битов, используемых для нумерации блока файловой системы. Это означает, что FAT12 может использовать до 4096 различных ссылок на блоки, а FAT16 и FAT32 могут использовать до 65536 и 4294967296 соответственно. Фактическое максимальное количество блоков еще меньше и зависит от реализации драйвера файловой системы.
FAT12 и FAT16 раньше применялись к старым гибким дискам и в настоящее время не находят широкого применения. FAT32 все еще широко используется для карт памяти и USB-накопителей . Система поддерживается смартфонами, цифровыми фотоаппаратами и другими портативными устройствами.
FAT32 может использоваться на Windows-совместимых внешних хранилищах или дисковых разделах с размером менее 32 ГБ ( Windows не может создать файловую систему FAT32 размером более 32 ГБ, хотя Linux поддерживает размер до 2 ТБ) и не позволяет создавать файлы размером более 4 ГБ .Для решения этой проблемы был введен exFAT , который не имеет каких-либо реальных ограничений в отношении размера файлов или разделов.
NTFS
NTFS (файловая система новой технологии) была представлена в 1993 году вместе с Windows NT и в настоящее время является наиболее распространенной файловой системой для компьютеров конечных пользователей на базе Windows. Большинство операционных систем семейства Windows Server также используют этот формат.
Файловая система довольно надежна благодаря журналированию и поддерживает множество функций, включая контроль доступа , , шифрование , и т. Д.Каждый файл в NTFS хранится как файловый дескриптор в таблице Master File и содержимое файла. Таблица основных файлов содержит записи со всей информацией о файлах: размер, размещение, имя и т. Д. Первые 16 записей основной таблицы файлов сохраняются для BitMap, в котором хранятся записи всех свободных и используемых кластеров, используемого журнала. для ведения журнала записей и BadClus, содержащего информацию о плохих кластерах. Первый и последний секторы файловой системы содержат настроек файловой системы (загрузочная запись или суперблок ).Эта файловая система использует значения 48 и 64 бит для ссылок на файлы, что позволяет поддерживать хранилища данных с чрезвычайно высокой емкостью.
ReFS
ReFS (Resilient File System) — последняя разработка Microsoft, представленная в Windows 8 и теперь доступная для Windows 10. Архитектура файловой системы полностью отличается от других файловых систем Windows и в основном организована в виде B + -дерева. . ReFS имеет высокую отказоустойчивость благодаря новым функциям, включенным в систему. А именно, Копирование при записи (CoW): никакие метаданные не изменяются без копирования; данные записываются не поверх существующих данных, а в новое дисковое пространство. При любых изменениях файла новая копия метаданных сохраняется в свободном пространстве хранения, а затем система создает ссылку от старых метаданных к более новым. Таким образом, система хранит значительное количество старых резервных копий в разных местах, обеспечивая легкое восстановление файлов, если это пространство хранения не будет перезаписано.
Подсказка: Информацию о перспективах восстановления данных файловых систем, используемых Windows, можно найти в статьях, посвященных особенностям восстановления данных в различных ОС и возможностям восстановления данных. Подробные инструкции и рекомендации можно найти в руководстве, посвященном восстановлению данных из Windows.
Файловые системы macOS
MacOS от Apple применяет две файловые системы: HFS + , расширение их собственной файловой системы HFS, используемой на старых компьютерах Macintosh, и недавно выпустила APFS .
HFS +
HFS + раньше была основной файловой системой для настольных продуктов Apple , включая компьютеры Mac, iPod, а также продукты Apple X Server, прежде чем она была заменена на APFS в macOS High Sierra. В серверных продуктах Advanced также используется файловая система Apple Xsan, кластерная файловая система , созданная на основе StorNext и CentraVision.
Файловая система HFS + использует B-деревья для размещения и поиска файлов.Тома делятся на сектора, обычно размером 512 байт, которые затем группируются в блоки распределения, количество которых зависит от размера всего тома. Информация о свободных и использованных блоках распределения хранится в файле распределения. Все блоки распределения, назначенные каждому файлу в качестве расширений, записываются в файл переполнения расширений. И, наконец, все атрибуты файла перечислены в файле Attributes. Надежность данных повышается за счет ведения журнала, что позволяет отслеживать все изменения в системе и быстро возвращать ее в рабочее состояние в случае непредвиденных событий.Среди других поддерживаемых функций — жесткие ссылки на каталоги, шифрование логических томов, контроль доступа, сжатие данных и т. Д.
APFS
Файловая система Apple предназначена для решения фундаментальных проблем, присущих ее предшественнице, и была разработана для эффективной работы с современными флэш-накопителями и твердотельными накопителями. Эта 64-битная файловая система использует метод копирования при записи для повышения производительности, который позволяет копировать каждый блок до того, как к нему будут применены изменения, и предлагает множество функций обеспечения целостности данных и экономии места.Все содержимое файла и метаданные о файлах, папках вместе с другими структурами APFS хранятся в контейнере APFS. Суперблок контейнера хранит информацию о количестве блоков в контейнере, размере блока и т. Д. Информация обо всех выделенных и свободных блоках контейнера управляется с помощью структур Bitmap. Каждый том в контейнере имеет свой собственный Volume Superblock , который предоставляет информацию об этом томе. Все файлы и папки тома записаны в B-Tree файлов и папок , а B-Tree Extents отвечает за экстенты — ссылки на содержимое файла (начало файла, его длина в блоках).
Подсказка: Подробности, связанные с возможностью восстановления данных из этих файловых систем, можно найти в статьях об особенностях восстановления данных в зависимости от операционной системы и шансах на восстановление данных. Если вас интересует практическая сторона процедуры, обратитесь к руководству по восстановлению данных из macOS.
Файловые системы Linux
Linux с открытым исходным кодом направлен на реализацию, тестирование и использование различных типов файловых систем.К наиболее популярным файловым системам Linux относятся:
Внешний
Ext2, Ext3, Ext4 — файловая система Linux « native «. Эта файловая система активно развивается и совершенствуется. Файловая система Ext3 — это просто расширение Ext2 , которое использует транзакционные операции записи файлов с журналом . Ext4 — это дальнейшее развитие Ext3, расширенное за счет поддержки оптимизированной информации о размещении файлов (экстентов) и расширенных атрибутов файлов.Эта файловая система часто используется как файловая система «корень » для большинства установок Linux.
ReiserFS
ReiserFS — альтернативная файловая система Linux для хранения огромного количества небольших файлов . Он имеет хорошие возможности поиска файлов и позволяет компактно размещать файлы, сохраняя хвосты файлов или небольшие файлы вместе с метаданными, чтобы не использовать большие блоки файловой системы для той же цели. Однако эта файловая система больше не получает активной поддержки.
XFS
XFS — файловая система, разработанная компанией SGI и изначально использовавшаяся для серверов IRIX компании. Теперь спецификации XFS реализованы в Linux. Файловая система XFS имеет отличную производительность и широко используется для хранения файлов.
JFS
JFS — файловая система, разработанная IBM для мощных вычислительных систем компании. JFS1 обычно означает JFS , JFS2 — второй выпуск.В настоящее время это файловая система с открытым исходным кодом , реализованная в большинстве современных версий Linux.
Btrfs
Btrfs — файловая система, разработанная Oracle и поддерживаемая основным ядром Linux с 2009 года. Файловая система нацелена на повышение надежности и масштабируемости, предлагая более высокую отказоустойчивость, более легкое администрирование и т. Д. Вместе с рядом дополнительных функций, но все еще не может считаться полностью стабильным.
Концепция « жестких ссылок », используемая в подобных операционных системах, делает большинство файловых систем Linux похожими в том смысле, что имя файла не рассматривается как атрибут файла, а скорее определяется как псевдоним для файла в определенном каталоге.Файловый объект может быть связан из многих мест , даже умножаться из одного и того же каталога под разными именами. Это может привести к серьезным и даже непреодолимым трудностям при восстановлении имен файлов после их удаления или повреждения файловой системы.
Подсказка: Информацию о возможности успешного восстановления данных из указанных файловых систем можно найти в статьях, описывающих особенности восстановления данных из различных операционных систем и возможности восстановления данных.Чтобы понять, как следует проводить процедуру, воспользуйтесь инструкцией по восстановлению данных из Linux.
Файловые системы BSD, Solaris, Unix
Наиболее распространенной файловой системой для этих операционных систем является UFS (файловая система Unix), также часто называемая FFS (быстрая файловая система).
В настоящее время UFS (в различных редакциях) поддерживается всеми операционными системами семейства Unix и является основной файловой системой ОС BSD и ОС Sun Solaris.Современные компьютерные технологии стремятся реализовать замену UFS в различных операционных системах ( ZFS для Solaris, JFS и производные файловые системы для Unix и т. Д.).
Подсказка: Информацию о вероятности успешного результата при восстановлении данных из этих файловых систем можно найти в статьях об особенностях восстановления данных для конкретных ОС и шансах восстановления данных. Сам процесс описан в инструкции, посвященной восстановлению данных из Unix, Solaris и BSD.
Кластерные файловые системы
Кластерные файловые системы используются в компьютерных кластерных системах. Эти файловые системы поддерживают распределенное хранилище.
Распределенные файловые системы включают:
ZFS — компания Sun « Zettabyte File System » — файловая система, разработанная для распределенных хранилищ ОС Sun Solaris.
Apple Xsan — разработка компании Apple файловых систем CentraVision и более поздних версий StorNext.
VMFS — «Файловая система виртуальной машины », разработанная компанией VMware для своего сервера VMware ESX.
GFS — Red Hat Linux « Глобальная файловая система ».
JFS1 — исходный (устаревший) дизайн файловой системы IBM JFS , используемой в старых системах хранения AIX.
Общие свойства этих файловых систем включают поддержку распределенных хранилищ, расширяемость и модульность.
Чтобы узнать о других технологиях, используемых для хранения и обработки данных, обратитесь к разделу технологий хранения.
Последнее обновление: 18 сентября 2020 г.
Рейтинг: 4.5-23 голосов Насколько полезна была эта статья?
локальных файловых систем (Windows) | Документы Microsoft
- 2 минуты на чтение
В этой статье
Файловая система позволяет приложениям сохранять и извлекать файлы на устройствах хранения. Файлы размещаются в иерархической структуре.Файловая система определяет соглашения об именах для файлов и формат для указания пути к файлу в древовидной структуре.
Каждая файловая система состоит из одного или нескольких драйверов и динамически подключаемых библиотек, которые определяют форматы данных и функции файловой системы. Файловые системы могут существовать на многих различных типах устройств хранения, включая жесткие диски, музыкальные автоматы, съемные оптические диски, устройства резервного копирования на магнитную ленту и карты памяти.
Все файловые системы, поддерживаемые Windows, имеют следующие компоненты хранения:
- Объемы.Том — это собрание каталогов и файлов.
- Справочники. Каталог представляет собой иерархический набор каталогов и файлов.
- Файлы. Файл представляет собой логическую группу связанных данных.
В этом разделе
Тема | Описание |
---|---|
Управление каталогом | Каталог — это иерархический набор каталогов и файлов.Единственное ограничение на количество файлов, которые могут содержаться в одном каталоге, — это физический размер диска, на котором он расположен. |
Управление дисками | Жесткий диск — это жесткий диск внутри компьютера, который хранит и обеспечивает относительно быстрый доступ к большим объемам данных. Это тип хранилища, наиболее часто используемый в Windows. Система также поддерживает съемные носители. |
Управление файлами | Файловый объект обеспечивает представление ресурса (либо физического устройства, либо ресурса, расположенного на физическом устройстве), которым может управлять система ввода-вывода. |
Транзакционная NTFS (TxF) | Транзакционная NTFS (TxF) позволяет выполнять файловые операции на томе файловой системы NTFS в транзакции. |
Управление объемом | Самый высокий уровень организации в файловой системе — это том . Файловая система находится на томе. |
Технический справочник FAT
Технологии файловых систем
Технический справочник NTFS
Файловые системыв операционной системе: структура, атрибуты, тип
- Home
Testing
- Back
- Agile Testing
- BugZilla
- Cucumber
- Database Testing
- Database Testing
- Database Testing
- Database Testing
- Назад
- JUnit
- LoadRunner
- Ручное тестирование
- Мобильное тестирование
- Mantis
- Почтальон
- QTP
- Назад
- Центр контроля качества SAP (Центр контроля качества
- )
- SoapUI
- Управление тестированием
- TestLink
SAP
- Назад 9031 5
- ABAP
- APO
- Начинающий
- Basis
- BODS
- BI
- BPC
- CO
- Назад
- CRM
- HRO3
- Crystal Reports FIC15
- QM
- Расчет заработной платы
- Назад
- PI / PO
- PP
- SD
- SAPUI5
- Безопасность
- Менеджер решений
- Successfactors Web
- SAP Tutorials
- Apache
- AngularJS
- ASP.Сеть
- C
- C #
- C ++
- CodeIgniter
- СУБД
- JavaScript
- Назад
- Java
- JSP
- Kotlin
- Linux 90DB
- Kotlin
- Мария MS SQL Access js
- Perl
- Назад
- PHP
- PL / SQL
- PostgreSQL
- Python
- ReactJS
- Ruby & Rails
- Scala Back
- SQL
- SQL
- SQL Server
- SQL
- UML
- VB.Net
- VBScript
- Веб-службы
- WPF
Обязательно учите!
- Назад
- Бухгалтерский учет
- Алгоритмы
- Android
- Блокчейн
- Бизнес-аналитик
- Создание веб-сайта
- Облачные вычисления
- COBOL
15
- Встроенные системы
- Проектирование
903
- Назад
- 903 903 Управление проектами Управление проектами Salesforce
- SEO
- Разработка программного обеспечения
- VBA
Big Data
- Назад
- AWS
- BigData
- Cassandra
- Cognos
- Хранилище данных
- DevOps
9015
- HBase
- DevOps Back
- HBase
- MongoDB
- NiFi
описать файловые системы — AWS CLI 1.18.216 Справочник команд
Описание файловой системы.
OwnerId -> (строка)
Учетная запись AWS, создавшая файловую систему. Если файловая система была создана пользователем IAM, родительская учетная запись, к которой принадлежит пользователь, является владельцем.
CreationToken -> (строка)
Непрозрачная строка, указанная в запросе.
FileSystemId -> (строка)
Идентификатор файловой системы, присвоенный Amazon EFS.
FileSystemArn -> (строка)
Имя ресурса Amazon (ARN) для файловой системы EFS в формате arn: aws: elasticfilesystem: * region *: * account-id *: file-system / * file-system-id * «. Пример с образцами данных: « arn: aws: elasticfilesystem: us-west-2: 1111333322228888: file-system / fs-01234567
CreationTime -> (отметка времени)
Время создания файловой системы в секундах (с 1970-01-01T00: 00: 00Z).
LifeCycleState -> (строка)
Этап жизненного цикла файловой системы.
Имя -> (строка)
В файловую систему можно добавлять теги, в том числе тег имени. Для получения дополнительной информации см. CreateFileSystem. Если в файловой системе есть тег имени, Amazon EFS возвращает значение в этом поле.
NumberOfMountTargets -> (целое число)
Текущее количество целей монтирования файловой системы. Дополнительные сведения см. В разделе CreateMountTarget.
SizeInBytes -> (структура)
Последний известный измеренный размер (в байтах) данных, хранящихся в файловой системе, в ее поле «Значение» и время, когда этот размер был определен в ее поле «Временная метка».Значение отметки времени — это целое число секунд, прошедших с 1970-01-01T00: 00: 00Z. Значение SizeInBytes не представляет размер согласованного моментального снимка файловой системы, но в конечном итоге является согласованным, если в файловую систему нет записи. То есть SizeInBytes представляет фактический размер только в том случае, если файловая система не изменялась в течение периода, превышающего пару часов. В противном случае значение не является точным размером файловой системы в любой момент времени.
Стоимость -> (длинный)
Последний известный измеренный размер (в байтах) данных, хранящихся в файловой системе.
Отметка времени -> (отметка времени)
Время, когда был определен размер данных, возвращаемых в поле «Значение». Значение представляет собой целое число секунд с 1970-01-01T00: 00: 00Z.
ValueInIA -> (длинный)
Последний известный измеренный размер (в байтах) данных, хранящихся в классе хранения нечастого доступа.
ValueInStandard -> (длинный)
Последний известный измеренный размер (в байтах) данных, хранящихся в классе хранения Standard.
PerformanceMode -> (строка)
Режим производительности файловой системы.
Зашифрованный -> (логический)
Логическое значение, которое, если оно истинно, указывает, что файловая система зашифрована.
KmsKeyId -> (строка)
Идентификатор главного ключа клиента (CMK) AWS Key Management Service (AWS KMS), который использовался для защиты зашифрованной файловой системы.
ThroughputMode -> (строка)
Режим пропускной способности файловой системы.Для вашей файловой системы можно выбрать один из двух режимов пропускной способности: пакетный и подготовленный. Если для параметра ThroughputMode установлено значение Provisioned, необходимо также установить значение для ProvisionedThroughPutInMibps. Вы можете уменьшить пропускную способность файловой системы в режиме Provisioned Throughput или переключаться между режимами пропускной способности, если с момента последнего уменьшения или изменения режима пропускной способности прошло более 24 часов.
ProvisionedThroughputInMibps -> (двойной)
Пропускная способность, измеряемая в МиБ / с, которую вы хотите выделить для файловой системы.Допустимые значения: 1-1024. Требуется, если для ThroughputMode задано значение Provisioned. Предел пропускной способности — 1024 Мбайт / с. Вы можете увеличить эти ограничения, обратившись в службу поддержки AWS. Дополнительные сведения см. В разделе «Ограничения Amazon EFS, которые можно увеличить» в Руководстве пользователя Amazon EFS.
Теги -> (список)
Теги, связанные с файловой системой, представленные в виде массива объектов Tag.
(строение)
Тег — это пара «ключ-значение». Допустимые символы: буквы, пробелы и числа, которые могут быть представлены в UTF-8, а также следующие символы: + — =._: /
Ключ -> (строка)
Ключ тега (String). Ключ не может начинаться с aws :.
Значение -> (строка)
Значение ключа тега.
Анатомия файловых систем флеш-памяти Linux
Опции и архитектуры
М.Тим Джонс
Опубликовано 20 мая 2008 г.
Твердотельные накопители сейчас в моде, но встроенные системы использовали твердотельные устройства для хранения на довольно долгое время.Вы найдете флеш-файл системы, используемые в персональных цифровых помощниках (КПК), мобильных телефонах, MP3-плеерах, цифровые фотоаппараты, USB-накопители (UFD) и даже портативные компьютеры. Во многих случаях файловые системы для коммерческих устройств могут быть индивидуальными и проприетарными, но они сталкиваются с теми же проблемами, о которых говорится ниже.
Еще в серии статей Тима о developerWorks
Файловые системы на основе Flash бывают самых разных форм. В этой статье исследуется пара файловых систем только для чтения, а также просматривает различные файлы для чтения / записи доступные сегодня системы и принципы их работы.Но сначала давайте исследуем вспышку устройства и проблемы, которые они создают.
Технологии флэш-памяти
Флэш-память, которая может иметь несколько различных технологий, является энергонезависимая память, означает, что ее содержимое сохраняется после источник питания удален. Для большой истории устройств флэш-памяти см. Похожие темы.
Два наиболее распространенных типа флеш-устройств определяются их соответствующими технологии: NOR и NAND.Флэш-память на основе NOR — это более старая технология, поддерживающая высокая производительность чтения за счет меньшей емкости. Предложения NAND flash более высокая емкость со значительно более высокой производительностью записи и стирания. NAND также требует гораздо более сложного интерфейса ввода / вывода (I / O).
Флэш-части обычно делятся на разделов, что позволяет использовать несколько одновременное выполнение операций (стирание одного раздела при чтении из еще один).Разделы далее делятся на блоков (обычно размером 64 или 128 КБ). Прошивка, использующая разделы, может дополнительно применять уникальное сегментирование к блокам — например, 512-байтовые сегменты в блоке, не включая метаданные.
Флэш-устройства имеют общее ограничение, которое требует управления устройством при по сравнению с другими устройствами хранения, такими как RAM-диски. Единственная операция записи на устройстве флэш-памяти разрешено изменение бита с единицы на ноль.Если необходима обратная операция, затем необходимо стереть блок (чтобы сбросить все биты в одно государство). Это означает, что другие допустимые данные внутри блока должны быть перемещены. чтобы это сохранялось. Флэш-память NOR обычно может быть запрограммирована побайтно, тогда как флэш-память NAND должна быть запрограммирована в многобайтовых пакетах (обычно 512 байтов).
Процесс стирания блока различается для двух типов памяти. Каждый требует специальной операции стирания, которая охватывает весь блок флеш-памяти объем памяти.Технология NOR требует предварительного шага, чтобы очистить все значения до нуля до начала операции стирания. Стирание — это специальная операция с флэш-устройство и может занять много времени. Стирание — это электрическая операция который выводит электроны из каждой ячейки целого блока.
Флеш-устройствам NOR обычно требуются секунды для операции стирания, в то время как Устройство NAND может стирать за миллисекунды. Ключевой характеристикой флеш-устройств является количество операций стирания, которые могут быть выполнены.В устройстве NOR каждый блок во флеш-памяти можно стереть до 100 000 раз. Флэш-память NAND может быть стирается до миллиона раз.
Проблемы с флэш-памятью
В дополнение к ограничениям, рассмотренным в предыдущем разделе, и в результате этих ограничений. В разделе, посвященном управлению флэш-устройствами, возникает несколько проблем. Три самых важны сборка мусора, управление плохими блоками и выравнивание износа.
Сборка мусора
Сборка мусора — это процесс восстановления недействительных блоков (тех, которые содержат некоторое количество неверных данных).Восстановление включает перемещение действительных данных в новый блок, а затем стереть недопустимый блок, чтобы сделать его доступным. Этот процесс обычно выполняется в фоновом режиме или по мере необходимости, если файловая система низка на доступном пространстве.
Управление сбойными блоками
Со временем на флэш-устройствах могут образовываться сбойные блоки в процессе использования, и они могут даже поставляться от производителя с блоками, которые плохи и не могут быть использованы. Вы можете обнаружить наличие обратных блоков из-за неудачной операции флэш-памяти (например, стирания) или недопустимая операция записи (обнаружена из-за недопустимого кода исправления ошибок или ECC).
После того, как поврежденные блоки были идентифицированы, они помечаются внутри самой флэш-памяти в таблица плохих блоков. Как это делается, зависит от устройства, но может быть реализовано с отдельным набором зарезервированных блоков, управляемых отдельно от обычных блоков данных. Процесс обработки плохих блоков — независимо от того, поставляются ли они с устройством или появляются со временем — это называется управлением плохими блоками . В некоторых случаях эта функция реализована аппаратно с помощью внутреннего микроконтроллера и поэтому прозрачен для файловой системы верхнего уровня.
Выравнивание износа
Напомним, что флэш-устройства являются расходными частями: можно выполнить конечное число циклов стирания в каждом блоке до того, как блок станет неисправным (и, следовательно, должен быть отмечены плохим управлением блоками). Чтобы продлить срок службы вспышки, выравнивание износа предусмотрены алгоритмы. Выравнивание износа бывает двух видов: динамический износ выравнивание и выравнивание статического износа.
Динамическое выравнивание износа решает проблему ограниченного количества циклов стирания для данного блока.Вместо случайного использования блоков по мере их доступности, алгоритмы динамического выравнивания износа пытаются равномерно распределить использование блоков, чтобы что каждый получает единообразное использование. Алгоритмы статического выравнивания износа решают еще более сложные задачи. интересная проблема. Помимо максимального количества циклов стирания, некоторые Флэш-устройства страдают от максимального количества циклов чтения между циклами стирания. Это означает, что если данные слишком долго находятся в блоке и читаются слишком много раз, данные могут рассеяться и привести к потере данных.Статические алгоритмы выравнивания износа решить эту проблему, периодически перемещая устаревшие данные в новые блоки.
Архитектура системы
До сих пор я исследовал флэш-устройства и их основные проблемы. Теперь смотри как эти части объединяются в многоуровневую архитектуру (см. рис. 1). Вверху находится виртуальная файловая система (VFS), которая представляет собой общий интерфейс. в приложения более высокого уровня. За VFS следует файловая система flash, которая будет рассмотрено в следующем разделе.Далее идет слой Flash-трансляции (FTL), который обеспечивает общее управление флэш-устройством, включая выделение блоки из нижележащего флеш-устройства, а также преобразование адресов, динамическое выравнивание износа и сборка мусора. В некоторых флеш-устройствах часть FTL может быть реализован аппаратно.
Рисунок 1. Базовая архитектура flash system
Ядро Linux использует интерфейс Memory Technology Device (MTD), который является универсальный интерфейс для флеш-устройств.MTD может автоматически определять ширину шина флэш-устройства и количество устройств, необходимых для реализации шины ширина.
Флэш-файловые системы
Для Linux доступно несколько флеш-файловых систем. Следующие разделы объясните дизайн и преимущества каждого.
Журнальная файловая система Flash
Одна из самых ранних файловых систем флэш-памяти для Linux называется Journaling. Файловая система Flash. JFFS — это файловая система с журнальной структурой, которая была разработана для флеш-устройств NOR.Он был уникальным и решал множество проблем с флеш-устройства, но создал другое.
JFFS рассматривает флеш-устройство как циклический журнал блоков. Данные, записанные в вспышка записывается в хвост, а блоки в голове исправляются. Космос между хвостом и головой свободное пространство; когда этого места становится мало, мусор коллектор выполнен. Сборщик мусора перемещает действительные блоки в хвост log пропускает недопустимые или устаревшие блоки и стирает их (см. рисунок 2).Результат это файловая система, которая автоматически выравнивается как статически, так и динамически. Основная проблема этой архитектуры заключается в том, что флэш-память устройство стирается слишком часто (вместо оптимальной стратегии стирания), в результате чего устройство слишком быстро.
Рис. 2. Циркулярный журнал до и после сборки мусора
При монтировании JFFS структурные детали считываются в память, что может быть медленно во время монтирования и потребляют больше памяти, чем хотелось бы.
Журналирующая файловая система Flash 2
Хотя JFFS была очень полезной в свое время, ее алгоритм выравнивания износа имел тенденцию сократить срок службы вспышек NOR. Результатом стал редизайн базового алгоритм удаления кругового журнала. Алгоритм JFFS2 был разработан для NAND флэш-устройства, а также улучшенная производительность со сжатием.
В JFFS2 каждый блок во флэш-памяти обрабатывается независимо. JFFS2 поддерживает блок списки для достаточного износа устройства.Чистый список представляет блоки на устройство, заполненное действительными узлами. Грязный список содержит блоки с at хотя бы один устаревший узел. Наконец, свободный список представляет блоки, у которых есть были стерты и доступны для использования.
Алгоритм сборки мусора может затем разумно решить, что возвращать в разумный способ. В настоящее время алгоритм вероятностно выбирает из чистый или грязный список. Грязный список выбирается в 99% случаев для восстановления. блоков (перемещение действительного содержимого в другой блок), а чистый список выбрал 1 процент времени (просто перемещая содержимое в новый блок).В В обоих случаях выбранный блок стирается и помещается в свободный список (см. рис. 3). Это позволяет сборщику мусора повторно использовать устаревшие блоки (или частично), но по-прежнему перемещать данные по флеш-памяти для поддержки статического износа выравнивание.
Рисунок 3. Управление блоками и Сборка мусора в JFFS2
Еще одна файловая система Flash
YAFFS — еще одна файловая система, разработанная для флэш-памяти NAND. Первоначальная версия (YAFFS) поддерживает флеш-устройства с 512-байтовыми страницами, но более новая версия (YAFFS2) поддерживает новые устройства с большими размерами страниц и большими возможностями записи. ограничения.
В большинстве файловых систем флэш-памяти устаревшие блоки помечаются как таковые, но YAFFS2 дополнительно помечает блоки с монотонно увеличивающимися порядковыми номерами. Когда файловая система сканируется во время монтирования, можно быстро идентифицировать действительные inodes. YAFFS также поддерживает деревья в ОЗУ для представления блочной структуры флэш-памяти. устройство, в том числе быстрый монтаж через КПП — процесс сохранения древовидной структуры RAM на флеш-устройство при обычном размонтировании, чтобы его можно быстро прочитать и восстановить в ОЗУ во время монтирования (см. рисунок 4).Производительность во время монтирования — большое преимущество YAFFS2 перед другими флэш-файлами. системы.
Рисунок 4. Время монтирования YAFFS2 оптимизация с помощью контрольных точек
Сжатые файловые системы только для чтения
В некоторых встроенных системах нет необходимости предоставлять изменяемую файловую систему: неизменного будет достаточно. Linux поддерживает множество файловых систем только для чтения, два наиболее полезных — это cramfs, и SquashFS.
Cramfs
Файловая система cramfs — это сжатая файловая система Linux, доступная только для чтения, которая может существовать внутри флеш-устройств.Основные характеристики cramfs заключаются в том, что они одновременно простой и компактный. Эта файловая система используется во встроенных компактных конструкции.
Хотя метаданные cramfs не сжимаются, cramfs использует сжатие zlib на постранично, чтобы разрешить произвольный доступ к странице (страницы распаковываются при доступе).
Поиграться с cramfs можно с помощью утилиты mkcramfs
и устройство обратной связи.
SquashFS
SquashFS — еще одна сжатая файловая система Linux, доступная только для чтения, которая полезна в флеш-устройства.Вы также найдете SquashFS во многих дистрибутивах Linux Live CD. Помимо поддержки zlib для сжатия, SquashFS использует Lembel-Ziv-Markov. цепной алгоритм (LZMA) для улучшения сжатия и скорости.
Как и cramfs, вы можете использовать SquashFS в стандартной системе Linux с mksquashfs
и устройство обратной связи.
Идем дальше
Как и большинство программ с открытым исходным кодом, программное обеспечение продолжает развиваться, и появляются новые флэш-файлы системы находятся в стадии разработки.Интересная альтернатива все еще находится в разработке: LogFS, включающая в себя несколько очень новых идей. Например, LogFS поддерживает дерево структура на самом флеш-устройстве, так что время монтирования похоже на традиционные файловые системы, такие как ext2. Он также использует блуждающее дерево для мусора. коллекция (форма B + дерева). Что делает LogFS особенно интересным, в том, что он очень масштабируемый и может поддерживать большие флэш-части.
С ростом популярности файловых систем на флеш-памяти вы увидите, что количество исследований, проводимых по отношению к ним.LogFS — один пример, но другой варианты, такие как UbiFS, также растут. Файловые системы Flash интересны с архитектурной точки зрения и будет оставаться источником инноваций в будущем.
Ресурсы для загрузки
Связанные темы
- См. Википедию обзор технологий флэш-памяти и список файловых систем, включая дисковые файловые системы, распределенные файловые системы и файловые системы специального назначения (включая файловые системы твердотельных носителей).
- Узнать больше о NAND против технологии вспышки NOR.
- «Анатомия Тима» файловой системы Linux » (developerWorks, октябрь 2007 г.) представляет VFS, его основные структуры и его архитектура. Он также предоставляет введение в файловых систем и демонстрирует, как Linux может поддерживать такое количество файловых систем. одновременно.
- Прочтите, как JFFS и ее преемник, JFFS2 (файл PDF) использовать разные подходы к управлению флэш-устройствами.
- Сравните YAFFS с другие популярные файловые системы flash.
- LogFS и UbiFS — два новых файловые системы flash, решающие множество проблем связаны с текущими файловыми системами флеш-памяти.
- The MTD — это общая подсистема для запоминающие устройства, такие как флеш-память. Он обеспечивает общий интерфейс между драйверы оборудования нижнего уровня и верхние уровни файловой системы.
- Cramfs и SquashFS доступны только для чтения сжатые файловые системы для Linux.Оба были разработаны для ограниченного объема памяти встроенные системы, но вы также найдете SquashFS, используемую в дистрибутивах Live CD. Иногда они используются с UnionFS, которая реализует union mount для файловой системы (наложение одной файловой системы на другую). Сквош имеет преимущество лучшего сжатия и производительности при использовании ЛЗМА и набор патчей.
- Читать все Анатомия Тима … статей на developerWorks.
- Читать все статей Тима о Linux на developerWorks.
- В зона Linux на developerWorks, найти дополнительные ресурсы для разработчиков Linux и просканировать наши самые популярные статьи и учебные пособия.