Rambler's Top100 КОМПЬЮТЕРРА |  ДОМАШНИЙ КОМПЬЮТЕР |  ИНФОБИЗНЕС |  GAME.EXE |  FERRA |  СОФТТЕРРА |  КОМПЬЮТЕРРА +
РАЗДЕЛЫ  
ПОИСК  

  БУМАЖНЫЕ НОМЕРА  

Версия для печати 
Свежий номер №6 (383) / Летописец файловой системы
 
Дата публикации: 15.02.2001

Сергей Козлов, teleman@elnet.msk.ru

Что имеем - не храним,
Потерявши - плачем.
Народное


 Одним из приобретений ядра Linux 2.4.1 стала интегрированная файловая система ReiserFS. В этой статье мы попробуем рассказать о ее устройстве, основных отличиях от ext2fs, появляющихся дополнительных возможностях, а также о том, почему возникновение ReiserFS может быть так важно.

Сначала разберемся с самим жестким диском. Физически «жесткий диск» лишь в редких случаях действительно один диск. Обычно это пакет из нескольких (двусторонних) дисков. На стороны дисков ссылаются по номеру головки. Стороны разбиты на дорожки, называемые цилиндрами (по-видимому, со времен магнитных барабанов - когда магнитные диски не были плоскими, а напоминали шарманку). На дорожке располагаются секторы - минимальные порции данных, которые могут быть прочитаны или записаны. Тройка номеров головки, цилиндра и сектора и составляет физический адрес порции данных. Обычно с настоящими физическими адресами имеет дело лишь контроллер диска, извне диск может выглядеть несколько по-другому (происходит трансляция логического адреса в физический). Можно считать , что диск - это непрерывная линейная последовательность секторов. Некоторый фрагмент этой последовательности может быть выделен как раздел (partition) или том. Этот раздел, вместе со способом размещения данных, и является отдельно взятой файловой системой. В Linux посредством VFS (Virtual File System) различные файловые системы увязываются в единое дерево. Одна из файловых систем - начало начал, ее корневой каталог и есть root (/). А уже к ней примонтируются остальные файловые системы. VFS делает эту конструкцию прозрачной для прикладных программ.

Файловая система ext2fs

Дальнейшее описание соответствует ext2fs - стандартной файловой системе ОС Linux, но классические файловые системы обычно устроены подобным образом. Единой и неделимой с точки зрения обращения к диску порции данных является логический блок, размер которого кратен степени двойки (обычно 1024 или 4096 байт). В логические блоки записываются собственно данные файлов. Но файлы могут быть разной длины, как маленькие, размером меньше логического блока, так и большие, занимающие несколько логических блоков. И файлов обычно много. Чтобы разобраться в мешанине данных (найти по имени Рис. 1. Устройство i-node.нужный файл и нужную порцию данных в нем), а также снабдить файлы атрибутами-метаданными, часть логических блоков играет роль каталогов - списков пар (имя файла, индекс записи метаданных i-node) . В начале раздела располагается корневой каталог, который содержит ссылки на файлы и другие каталоги (содержащие ссылки на файлы и другие каталоги). Так образуется древовидная структура файловой системы.

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

Следующий момент - это учет и контроль свободных блоков на диске. Для этого используется таблица, где каждому блоку соответствует один бит. Поиск свободного блока осуществляется линейным просмотром этой таблицы. При занятии и освобождении блока делается соответствующая отметка в таблице.

Добавим в начале раздела загрузочный сектор, блок параметров раздела - и вот перед нами устройство файловой системы.

Все ссылки - это целые числа ограниченной разрядности, и от выбора их разрядности зависят ограничения на максимальный размер файловой системы и максимальный размер файла. Для 32-разрядной архитектуры максимальный размер файла ext2fs - 2 Гбайт, а при размере блока в 1 Кбайт максимальный размер файловой системы - 4 Тбайт. И эти цифры сегодня уже не кажутся огромными.

Не все коту масленица

Теперь посмотрим, какие проблемы в такой файловой системе могут возникать.

Во-первых, файлы могут быть очень маленькими. Но занимать они будут все равно целый блок. То же самое происходит с «хвостами» файлов. Последствия этого известны - внутренняя фрагментация: диск заполнен неплотно, и часть его полезного объема бездарно теряется на хранение пустоты.

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

В-третьих, при увеличении размера диска увеличивается размер таблицы свободных блоков, и с учетом линейного поиска по таблице - этот поиск замедляется пропорционально размеру диска. То же происходит и при увеличение числа файлов в каталоге. Да и при увеличении размеров самих файлов.

В-четвертых, при модификации файла помимо записи самих данных нужно внести изменения в записи файловой системы (изменить метаданные, внести изменения в список блоков, пометить занятые блоки). И тут кроется самое страшное. Поскольку эти обращения к диску разнесены во времени (и это еще усугубляется кэшированием), в том случае, если в момент записи на диск произойдет веерное отключение или просто сбой питания, то мало того, что теряются данные, - может разрушиться вся файловая система. Кто работал в DOS с включенным кэшированием, тот наверняка оказывался у разбитого корыта разрушенной FAT. Еxt2fs в этом отношении немногим лучше, разве что поустойчивее (если честно, пока с крахом ext2fs я не сталкивался). В ext2fs при нормальном завершении работы системы раздел помечается как размонтированный. Если произошел сбой питания либо по привычке систему остановили выключением питания, то такой пометки не будет, и при следующей загрузке системы в работу вступит программа fsck (filesystem consistency check, аналог ScanDisk), которая сканирует файловую систему на предмет целостности. Если обнаруживаются несуразности, то «висячие» блоки оказываются в каталоге lost+found. Сам процесс этот довольно долгий, на больших дисках с большим числом файлов процесс проверки может длиться десятки минут, и даже часы. Все это время, естественно, система неработоспособна - прощай, высокая готовность. Конечно, если ведется регулярное резервное копирование, то данные можно восстановить, но время, время!

Хотя ext2fs достаточно устойчива, неудовлетворенность ею среди пользователей и администраторов вызревала. Объемы дисков растут, повышаются требования к надежности, ужесточаются требования к скорости восстановления работоспособности после сбоев. Ответом потребностям времени стали журналирующие файловые системы. В «больших» *nix они появились достаточно давно, в качестве примеров можно назвать XFS (для ОС IRIX от SGI) и JFS (для ОС AIX от IBM). В сообществе Linux также прикладываются усилия в этом направлении: например, ext3fs - «модернизация» ex2fs. Делаются и порты XFS и JFS (бета-версии уже доступны). Но одна разработка по стабильности и обкатанности опередила всех - это ReiserFS, удостоенная чести быть включенной в состав ядра Linux 2.4.1 (ранее она была доступна в виде патчей к ядру и поставлялась с некоторыми дистрибутивами на основе ядра 2.2).

Деревья B+ и журналирование

В ReiserFS основное внимание уделено решению проблемы эффективного хранения множества маленьких файлов. На помощь пришли технологии баз данных, решающих в общем-то те же проблемы хранения и доступа к данным. Это сбалансированные деревья B+Tree.

Деревья состоят из узлов, связанных ссылками в иерархическую конструкцию. Причем глубина просмотра для листьев нижнего уровня поддерживается постоянной (баланс). В ReiserFS дерево состоит из узлов трех типов Рис. 2. Представление файловой системы в виде B+Tree.(внутренние, служащие для определения нужного блока; форматированные, содержащие списки, и неформатированные, отличающиеся отсутствием ключа и служащие для хранения сырых данных), на рис. 2 видны представители узлов всех трех типов. Понятно, что поиск в таком дереве эффективнее линейного просмотра.

Другая особенность ReiserFS: в сбалансированных деревьях хранится все - имена файлов, каталоги, узлы i-node, маленькие файлы и хвосты больших файлов. Тела же больших файлов хранятся в неформатированных блоках. В целом оказывается, что для доступа к данным требуется меньше обращений и данные хранятся более плотно. Использование ReiserFS для хранения больших файлов не дает преимуществ перед ext2fs (но и не сильно проигрывает).

Другая важная особенность ReiserFS - журналирование. Представить его можно так: сначала сведения об операции и данные записываются в специально выделенное место, затем записываются собственно в файловую систему, а по завершении делается отметка о завершении операции. Теперь, если на каком-то этапе произошел сбой, файловая система не страдает, а журнал способствует быстрому восстановлению после сбоя - на это уходят считанные секунды.

Интересной возможностью ReiserFS является поддержка модулей plug-in, которые позволяют создавать собственные типы каталогов и файлов. Это обеспечит развитие системы в будущем. Как пример: данные в системах потокового аудио/видео можно хранить в формате пакетов TCP/IP, избавляясь таким образом от накладных расходов на преобразование при передаче.

Цена использования журналирующей системы - дополнительные накладные расходы и более сложная реализация. А впадение в крайности может оказаться не оправданным. Ведь есть ряд разделов, содержимое которых после установки почти не меняется - bin, usr, - а вот часто меняющиеся - home, var - очень хорошие кандидаты для размещения на журналирующей файловой системе. Прелесть Linux - в прозрачном комбинировании различных файловых систем, что дает возможность использовать сильные стороны каждой из них в конкретных обстоятельствах. В целом, ReiserFS решает большинство проблем, присутствующих в ext2fs и, безусловно, укрепляет позиции Linux как платформы для серьезных приложений.

[i38356]


 На главную   Версия для печати   Обсудить в форуме   Отправить по почте


<< Нужен ли вам патент?
Все материалы номера
По мозгам >>

Рассылка "Компьютерры":


  МАТЕРИАЛЫ ЭТОГО НОМЕРА  

 Вроде, не бездельники и могли бы жить [ "13-я КОМНАТА" ]
 Новости [ "НОВОСТИ" ]
 А девушка созрела? [ "НОВОСТИ" ]
 Друзья, прекрасен наш союз [ "НОВОСТИ" ]
 Зоркий глаз Большого Брата [ "НОВОСТИ" ]
 Не хуже собачьего [ "XXI" ]
 Тотальное самоудовлетворение [ "КАНАЛЫ" ]
 Интеллектуальные собственники [ "ТЕМА НОМЕРА" ]
 Линия обороны интеллектуальной собственности [ "ТЕМА НОМЕРА" ]
 «Спорили пастухи Герарские с пастухами Исаака…» [ "ТЕМА НОМЕРА" ]
 Патенты и монопольная власть [ "ТЕМА НОМЕРА" ]
 Перестройка. Всем плавать! [ "ЛИБЕРТАРИУМ" ]
 Сочная мякоть [ "SOFTTEРРA LITE" ]
 Командовать парадом… [ "SOFTTEРРA LITE" ]
 Звукоуправство [ "SOFTTEРРA LITE" ]
 Гимп-гимп, ура! [ "SOFTTEРРA LITE" ]
 Винтукей как Гюльчатай [ "SOFTTEРРA LITE" ]
 Подвижность против движения или Mobility vs. 2Go [ "КОМПЬЮFЕРРА LITE" ]
 Конfeтти [ "КОМПЬЮFЕРРА LITE" ]
 Cybiko №6, пол - женский, или Здравствуй, мальчик-бананан [ "КОМПЬЮFЕРРА LITE" ]
 С интеллектом наголо [ "РОМАНОВСКИЕ НИКЧЕМУШКИ" ]
 Патч национальной безопасности [ "КОМПЬЮНОМИКА" ]
 Linux от АНБ [ "КОМПЬЮНОМИКА" ]
 По мозгам [ "ГИПЕРССЫЛКА" ]
 Летописец файловой системы [ "ТЕХНОЛОГИИ" ]
 Нужен ли вам патент? [ "ВОПРОС НЕДЕЛИ" ]
 Дирк Слама, Джейсон Гарбис, Перри Рассел. Корпоративные системы на основе CORBA [ "КНИЖНАЯ ЛАВКА " ]
 Karin Kylander & Olof S Kylander. GIMP: The Official Handbook [ "КНИЖНАЯ ЛАВКА " ]
 Золотой ключик [ "ПИСЬМОНОСЕЦ" ]



Предыдущий номер
Все
журналы
Следующий номер

  МАТЕРИАЛЫ ЭТОЙ ТЕМЫ  

ТЕХНОЛОГИИ:
 Цифровой винил [ №36 (461) ]
 Фарс-мажорные обстоятельства [ №36 (461) ]
 Предъявите ваше лицо [ №26 (451) ]
 Источник магии [ №24 (449) ]
 DivXbox: рецепт народной медицины [ №24 (449) ]
 Откуда у хлопца испанская грусть [ №23 (448) ]
 Веселые картинки для взрослых [ №15 (440) ]
 Масяня Drive [ №10 (435) ]
 Имя им - легион [ №8 (433) ]
 Мобильное позиционирование [ №7 (432) ]
 О новом подходе к организации защиты от компьютерных вирусов [ №5 (430) ]
 Властелин FX [ №2 (427) ]
 Компьютер это сеть [ №2 (427) ]
 Два прихопа, три притопа, или Вторая молодость RadioEthernet [ №44 (421) ]
 Игры врачей [ №38 (415) ]



  РАЗДЕЛЫ  

 Новость дня
 Комментарий дня
 Итоги дня
 Железный поток
 Итоги недели
 Железка дня
 Софтинка дня
 Мысли вслух
 Бумажные номера

  БУМАЖНЫЕ НОМЕРА  

Маленькая сопровождающая картинка к журналу Свежий номер №37
(462) 24 сентября 2002


Тема номера:
ИнтелШоу

Маленькая сопровождающая картинка к журналу Предыдущий номер №36
(461) 17 сентября 2002


Тема номера:
Незримый колледж

Маленькая сопровождающая картинка к журналу Специальный выпуск №4
 1 сентября 2002


Тема выпуска:
Снова в школу

План тем номеров



  НОВОСТИ  

Информация предоставлена "Компьюлента"

[15.10.2002, 16:43] Владельцы испанских веб-сайтов протестуют против введения цензуры в интернете
Владельцы ряда испанских веб-сайтов временнно прекращают доступ к собственным веб-страницам, протестуя против введения законодательства о цензуре в Cети.
 
[15.10.2002, 16:38] Microsoft затратит 300 миллионов долларов на рекламу услуг доступа в интернет
Компания Microsoft намерена затратить 300 миллионов долларов на рекламу новой версии собственного программного обеспечения для доступа в интернет - MSN 8.0.
 
[15.10.2002, 16:25] Арестованы 22 "нигерийских мошенника"
Южноафриканская криминальная полиция при содействии британских и американских спецслужб арестовала 22 жителя Нигерии по обвинению в компьютерном мошенничестве.
 
[15.10.2002, 16:02] IDF Taiwan: Intel укрепляет связи с азиатскими компаниями
На азиатско-тихоокеанской сессии Форума Intel для разработчиков, проходящем в Тайбэе, на Тайване, представители Intel объявили о создании Инновационного альянса с двенадцатью азиатскими компаниями, в рамках которого будут разрабатываться новые платформы для настольных и мобильных компьютеров.
 
[15.10.2002, 15:59] Число пользователей файлообменных сетей продолжает увеличиваться
Очередное исследование активности работы пиринговых сетей показало, что закрытие Ассоциацией американских звукозаписывающих компаний файлообменной сети Napster не привело к снижению количества пиратской музыки в сети.
 
[15.10.2002, 15:27] Профессиональный 21,3-дюймовый черно-белый ЖК-монитор от IDTech
Японская компания International Display Technology (IDTech) представила новый 21,3-дюймовый жидкокристаллический черно-белый (отображающий полутона) монитор IAQS80, предназначенный для использования в медицинских учреждениях.
 


  САЙТ  

 Регистрация на сайте
 Подписка на журнал
 Контакты
 Рассылки сайта
 Рекламный отдел
 Книга отзывов
 Клуб Компьютерры
 Добавить в избранное
 Сделать страницу стартовой

  РЕКЛАМА  


  ИНФОРМАЦИЯ О СЕРВЕРЕ  
Copyright (c) 2000 ИД "Компьютерра"
Email: site@computerra.ru
Телефон: (095) 232-22-63
 TopList  Rambler's Top100 Создание сервера (с) 2000 Individ
Работает на Saitistika
Карта сервера
Главная страница