Добавлен: 29.10.2018
Просмотров: 48129
Скачиваний: 190
4.5. Примеры файловых систем
371
В этом отношении эти записи аналогичны записям «.» и «..» каталога UNIX. Самих
файлов для этих записей быть не должно.
Явного ограничения на количество записей в каталоге не установлено. Но есть огра-
ничение на глубину вложенности каталогов. Максимальная глубина вложенности
каталогов равна восьми каталогам. Это ограничение было установлено произвольным
образом, чтобы упростить реализацию файловой системы.
Стандартом ISO 9660 определены так называемые три уровня. На уровне 1 применяют-
ся самые жесткие ограничения и определяется, что имена файлов ограничиваются уже
рассмотренной схемой 8 + 3 символа, а также требуется, чтобы все файлы были непре-
рывными согласно ранее данному описанию. Кроме того, на этом уровне определено,
что имена каталогов ограничены восемью символами и не могут иметь расширений.
Использование этого уровня предоставляет максимальные возможности того, что
компакт-диск будет читаться на любом компьютере.
На уровне 2 делаются послабления ограничений по длине. На нем именам файлов
и каталогов позволено иметь длину до 31 символа, но при сохранении того же набора
символов.
На уровне 3 используются те же ограничения имен, что и на уровне 2, но ослабляется тре-
бование к непрерывности файлов. При применении этого уровня файл может состоять
из нескольких секций, каждая из которых представляет собой непрерывную последова-
тельность блоков. Одна и та же секция (последовательность блоков) может встречаться
в файле несколько раз и даже входить в несколько различных файлов. Если большие
фрагменты данных повторяются в нескольких файлах, применение уровня 3 позволяет
каким-то образом оптимизировать использование пространства диска, не требуя, чтобы
одни и те же данные присутствовали на нем несколько раз.
Расширения Rock Ridge
Мы уже убедились в том, что стандарт ISO 9660 накладывает целый ряд строгих
ограничений. Вскоре после его выпуска представители сообщества UNIX приступили
к работе над расширением, позволяющим реализовать файловые системы UNIX на
компакт-диске. Эти расширения были названы Rock Ridge, по названию города в филь-
ме Мэла Брукса «Сверкающие седла» (Blazing Saddles), возможно, только потому, что
кому-то из членов комиссии нравился этот фильм.
Расширение использует поле, предназначенное для использования системой, чтобы
компакт-диск формата Rock Ridge мог читаться на любом компьютере. Все осталь-
ные поля сохраняют свое назначение согласно обычному стандарту ISO 9660. Любая
система, не работающая с расширениями Rock Ridge, просто игнорирует их и видит
обычный компакт-диск.
Расширения делятся на следующие поля:
PX
— атрибуты POSIX;
PN
— старший и младший номера устройств;
SL
— символическая ссылка;
NM
— альтернативное имя;
CL
— расположение дочернего каталога;
372
Глава 4. Файловые системы
PL
— расположение родительского каталога;
RE
— перемещение;
TF
— отметки времени.
Поле
PX
содержит стандартные биты разрешений rwxrwxrwx системы UNIX для вла-
дельца, группы и всех остальных. Оно также содержит остальные биты слова режима
использования, такие как SETUID, SETGID и т. п.
Поле
PN
предназначено для представления на компакт-диске обычных устройств.
Оно содержит старший и младший номера устройств, связанных с файлом. Это дает
возможность записать на компакт-диск содержимое каталога
/dev
и впоследствии
правильно воссоздать его на целевой системе.
Поле
SL
предназначено для символических ссылок. Оно позволяет файлу из одной
файловой системы ссылаться на файл из другой файловой системы.
Самым важным является поле
NM
. Оно позволяет связать с файлом второе имя. На это
имя не распространяются ограничения по набору используемых символов или длине,
накладываемые стандартом ISO 9660, что дает возможность представлять на компакт-
диске произвольные имена файлов, принятые в UNIX.
Следующие три поля используются вместе для того, чтобы обойти ограничение ISO
9660 на вложенность каталогов, допускающее только восемь вложений. Использование
этих полей позволяет указать на то, что каталог был перемещен, и указать его место
в иерархии. Этот способ позволяет эффективно обойти искусственно заданное огра-
ничение на глубину вложенности.
И наконец, поле
TF
содержит три отметки времени, включенные в каждый i-узел UNIX:
время создания файла, время его последней модификации и время последнего доступа
к этому файлу. Все вместе эти расширения позволяют скопировать файловую систему
UNIX на компакт-диск, а затем правильно восстановить ее на другой системе.
Расширения Joliet
Расширить ISO 9660 стремилось не только сообщество UNIX. Компания Microsoft
также сочла этот стандарт слишком усеченным (хотя MS-DOS, из-за которой в первую
очередь и были введены эти ограничения, принадлежала самой Microsoft). Поэтому
Microsoft изобрела ряд расширений — Joliet. Они были разработаны, чтобы позволить
файловой системе Windows быть скопированной на компакт-диск с последующим
восстановлением, — точно с такой же целью, с которой расширения Rock Ridge были
разработаны для UNIX. По сути, все программы, запускаемые под Windows и исполь-
зующие компакт-диски, поддерживают Joliet, включая программы, которые копируют
данные на записываемые компакт-диски. Обычно такие программы предоставляют
выбор между различными уровнями ISO 9660 и Joliet.
К основным расширениям, предоставляемым Joliet, относятся:
длинные имена файлов;
набор символов Unicode;
вложенность каталогов глубже восьми уровней;
имена каталогов, имеющие расширения.
4.6. Исследования в области файловых систем
373
Первое расширение допускает использование в именах файлов до 64 символов. Второе
расширение допускает использование в именах файлов набора символов Unicode. Это
расширение играет важную роль для программного обеспечения, предназначенного
для использования в тех странах, где не применяется латинский алфавит, например
в Японии, Израиле и Греции
1
. Поскольку символы Unicode занимают 2 байта, имя
файла в Joliet занимает максимум 128 байт.
Из Joliet, как и из Rock Ridge, удалено ограничение на вложенность каталогов. Катало-
ги могут быть вложенными настолько глубоко, насколько это нужно. И наконец, имена
каталогов могут иметь расширения. Не вполне понятно, зачем именно были включены
эти расширения, поскольку каталоги Windows вообще-то никогда не используют рас-
ширения, но, возможно, когда-нибудь и станут использовать
2
.
4.6. Исследования в области файловых систем
Файловые системы всегда привлекали и продолжают привлекать исследователей
намного больше, чем другие части операционной системы. Файловым системам и си-
стемам хранения данных посвящаются в основном такие тематические конференции,
как FAST, MSST и NAS. Хотя стандартные файловые системы довольно хорошо про-
думаны, все же еще проводятся исследования в отношении резервного копирования
(Smaldone et al., 2013; Wallace et al., 2012), кеширования (Koller et al.; Oh, 2012; Zhang
et al., 2013a), безопасного стирания данных (Wei et al., 2011), сжатия файлов (Harnik
et al., 2013), файловых систем на флеш-накопителях (No, 2012; Park and Shen, 2012;
Narayanan, 2009), производительности (Leventhal, 2013; Schindler et al., 2011), RAID
(Moon and Reddy, 2013), надежности и восстановления после ошибок (Chidambaram et
al., 2013; Ma et. al, 2013; McKusick, 2012; Van Moolenbroek et al., 2012), файловых систем
на уровне пользователя (Rajgarhia and Gehani, 2010), проверки согласованности (Fryer
et al., 2012) и управления версиями файловых систем (Mashtizadeh et al., 2013). Темой
исследования являются также простые измерения того, что происходит в файловой
системе (Harter et al., 2012).
Постоянной темой является безопасность (Botelho et al., 2013; Li et al., 2013c; Lorch et
al., 2013). В отличие от нее новой актуальной темой стали облачные файловые системы
(Mazurek et al., 2012; Vrable et al., 2012). Другой областью, привлекающей внимание
в последнее время, является происхождение — отслеживание истории данных, включая
то, откуда они взялись, кто их владелец и как они были преобразованы (Ghoshal and
Plale, 2013; Sultana and Bertino, 2013). Сохранение данных безопасными и полезными
на десятилетия также интересует компании, у которых есть для этого вполне законные
требования (Baker et al., 2006). И наконец, другие исследователи занимаются переос-
мыслением стека файловой системы (Appuswamy et al., 2011).
1
И, разумеется, в России. А также во всех остальных странах, в которых используются систе-
мы письменности, не основанные на латинице. — Примеч. ред.
2
Если считать Internet Explorer частью операционной системы, то он уже в Windows XP
использует расширения как минимум для каталогов со своими временными файлами. Да
и зачем ограничивать пользователей в выразительных возможностях при создании своих
каталогов. Например, можно для каталога с резервной копией своего сайта использовать его
доменное имя вида my.site.city.net. — Примеч. ред.
374
Глава 4. Файловые системы
4.7. Краткие выводы
С точки зрения внешнего наблюдателя файловая система представляется коллекцией
файлов и каталогов и совокупностью действий над ними. Файлы могут быть считаны
и записаны, каталоги могут быть созданы и удалены, а файлы могут быть перемещены
из каталога в каталог. Многие современные файловые системы поддерживают иерар-
хическую систему каталогов, в которой каталоги могут иметь подкаталоги, те, в свою
очередь, также могут иметь подкаталоги, и так до бесконечности.
Изнутри файловая система выглядит совершенно иначе. Разработчики файловых
систем должны заботиться о том, как распределяется пространство носителя и как
система ведет учет распределения блоков файлам. При этом есть возможность ис-
пользования непрерывных файлов, связанных списков, таблиц размещения файлов
и i-узлов. Разные системы имеют различные структуры каталогов. Атрибуты могут
помещаться в каталогах или где-либо еще (например, в i-узле). Дисковым простран-
ством можно управлять при помощи списков свободных блоков или битовых массивов.
Надежность файловой системы увеличивается за счет осуществления инкрементного
архивирования и использования программы, способной устранять дефекты файловых
систем. Важную роль играет производительность файловой системы, которая может
быть улучшена несколькими способами, включая кэширование, опережающее чтение
и размещение блоков одного файла близко друг к другу. Повысить производительность
позволяют также файловые системы с журнальной структурой, которые ведут запись
на диск большими порциями.
Примерами файловых систем могут послужить ISO 9660, MS-DOS и UNIX. Они во
многом отличаются друг от друга, включая способ учета распределения блоков между
файлами, структуру каталогов и управление свободным дисковым пространством.
Вопросы
1. Дайте пять разных путевых имен для файла
/etc/passwd
.
Подсказка
: подумайте о записях каталогов «.» и «..».
2. Когда в системе Windows пользователь щелкает на файле, находящемся в списке
Windows Explorer, запускается программа и этот файл передается ей в качестве
аргумента. Назовите два разных способа, позволяющие операционной системе
узнать, какую именно программу следует запускать.
3. В ранних UNIX-системах исполняемые файлы (файлы
a.out
) начинались с особо-
го «магического» числа, выбираемого далеко не случайным образом. Эти файлы
начинались с заголовка, за которым следовали сегменты с текстом программы
и данными. Как вы думаете, почему для исполняемых файлов было выбрано особое
«магическое» число, тогда как для файлов других типов в качестве первых слов ис-
пользовались более или менее произвольные «магические» числа?
4. Является ли системный вызов open неотъемлемой частью UNIX? Какими будут
последствия, если этого системного вызова в ней не станет?
5. У систем, поддерживающих последовательные файлы, всегда есть операция для
их «перемотки». Нужна ли эта операция системе, поддерживающей файлы про-
извольного доступа?
Вопросы
375
6. В некоторых операционных системах для присваивания файлу нового имени
предоставляется системный вызов rename. Есть ли какая-нибудь разница между ис-
пользованием этого системного вызова для переименования файла и копированием
файла в новый файл с новым именем с последующим удалением старого файла?
7. Некоторые системы позволяют отображать часть файла на память. Какие огра-
ничения должны накладывать такие системы? Как реализуется такое частичное
отображение?
8. Простая операционная система поддерживает только один каталог, но позволяет
хранить в нем произвольное количество файлов с именами произвольной длины.
Можно ли на такой системе сымитировать что-либо подобное иерархической
файловой системе? Как это сделать?
9. В UNIX и Windows произвольный доступ осуществляется с помощью специаль-
ных системных вызовов, перемещающих связанный с файлом указатель текущей
позиции на заданное количество байтов в файле. Предложите альтернативный
способ осуществления произвольного доступа без использования этого систем-
ного вызова.
10. Рассмотрим дерево каталогов, показанное на рис. 4.5. Если каталог
/usr/jim
явля-
ется рабочим, то каким будет абсолютное имя пути для файла, чье относительное
имя пути
../ast/x
?
11. В тексте главы упоминалось, что последовательное размещение файлов ведет
к фрагментации диска, поскольку часть пространства в последнем блоке файла
будет потрачена впустую в тех файлах, чья длина не укладывается в целое число
блоков. К какому типу фрагментации это относится, внутренней или внешней?
Проведите аналогию с примерами, рассмотренными в предыдущей главе.
12. Опишите последствия повреждения блока данных для заданного файла: а) для не-
прерывных, б) связанных, в) индексированных (или основанных на использовании
таблицы) схем размещения блоков.
13. Одним из способов распределения дискового пространства непрерывными об-
ластями без ущерба от наличия пустующих мест является уплотнение диска при
каждом удалении файла. Поскольку все файлы располагаются одной непрерывной
областью, то при копировании файла его нужно прочитать, для чего приходится
тратить определенное время на позиционирование блока головок на нужный ци-
линдр и на ожидание подхода нужного сектора, после чего осуществляется пере-
нос данных на полной скорости. Запись файла на диск требует тех же действий.
Предположим, что время позиционирования блока головок на нужный цилиндр
занимает 5 мс, ожидание подхода под головку нужного сектора — 4 мс, скорость
передачи данных равна 8 Мбайт/с, а средний размер файла 8 Кбайт. Сколько вре-
мени понадобится для того, чтобы считать файл в оперативную память, а затем
записать его обратно на новое место на диске? Сколько понадобится времени при
тех же параметрах для уплотнения половины 16-гигабайтного диска?
14. Ответьте,
взяв за основу тему предыдущего вопроса, есть ли вообще какой-нибудь
смысл в уплотнении диска?
15. Некоторые цифровые потребительские устройства нуждаются в хранении данных,
например в виде файлов. Назовите современные устройства, требующие хранения
файлов, для которых хорошо подошло бы непрерывное размещение файлов.