Введение в Unix

       

Файловые системы


Файловая система имеет иерархическую структуру каталогов и файлов, включая корневой каталог. Файловая система располагается на устройстве, которое является, обычно, магнитным диском того или иного типа. Если диск достаточно велик, он может быть разбит на несколько "логических" дисков; тогда на каждом логическом диске может быть размещена отдельная файловая система. Каждая файловая система, прежде чем стать доступной, должна быть смонтирована.

Количество файлов в файловой системе ограничено (65536 для UNIX, версия 7).

Каждая файловая система имеет четыре основные части:

  • загрузочный блок; это самый первый блок диска (блок 0), зарезервированный для системной загрузочной программы;
  • супер-блок - это первый блок собственно файловой системы (блок 1); он содержит основные данные о файловой системе и ее размещении на диске, в том числе о списках свободных i-узлов и блоков;
  • i-узлы - это последовательность блоков вслед за суперблоком; i-узел содержит ссылки на блоки; имеется ровно один i-узел для каждого каталога или файла в файловой системе;
  • блоки - оставшееся пространство диска занимают блоки, которые содержат либо действительные данные каталогов и файлов (блоки данных), либо ссылки на блоки (косвенные блоки).

Суперблок содержит следующие данные:

  • размер дискового пространства, доступного файловой системе (в блоках);
  • число блоков, зарегистрированных для i-узлов;
  • имя файловой системы;
  • имя тома;
  • время последнего изменения;
  • время последнего копирования (back up);
  • ссылка на список свободных блоков;
  • ссылка на список свободных i-узлов.




Структура файловой системы представлена на рис.13.1.



Рис.13.1.

Каждый файл (и каталог) в файловой системе представлен i-узлом, содержащим указатели на блоки, составляющие файл.

В i-узле содержится также информация о правах доступа к файлу, число ссылок на файл из каталогов и другие данные. Структура i-узла и блоков файла для UNIX, версия 7 показана на следующем рисунке. Каждый i-узел содержит 13 указателей. Первые 10 указателей непосредственно ссылаются на блоки данных файла. Поскольку блок содержит 512 байтов, то этого достаточно для обработки файлов до 512х10=5120 байтов.

Если длина файла больше, чем 5120 байта, используется 11-й указатель i-узла, который ссылается на косвенный блок из 128 ссылок на блоки данных. Использование косвенного блока позволяет увеличить длину файла до величины 512х(10+128)=70656 байтов. Если и этого недостаточно, то используется 12-й указатель i-узла, ссылающийся на дважды косвенный блок, содержащий 128 ссылок на косвенные блоки (рис.13.2). Тогда максимальный размер файла увеличивается до величины 512х(10+128+128**2)=8459264 байтов. Наконец, использование последнего, 13-го указателя на трижды косвенный блок из 128 ссылок на дважды косвенные блоки, дает предельную длину в файловой системе: 512х(10+128+128**2+128***3)=1082201088 байтов (см. рис. 13.2).

Другие версии системы UNIX могут отличаться количеством ссылок в i-узле, косвенных блоках и размером блока данных.

Когда система загружается, имеется только одна из файловых систем, называемая корневой. В ней находятся все важнейшие каталоги (/dev, /etc, /bin и т.п.). Все остальные файловые системы должны быть созданы и смонтированы.



Рис. 13.2.




Содержание раздела