XFS - файловая система будущего? Файловая система EXT3. Файловые системы компании Microsoft

Недавно, на конференции linux.conf.au 2012 разработчик XFS Дэйв Чиннер (Dave Chinner) заметил, что, по его мнению, XFS привлечет большее количество пользователей в будущем. Его доклад касался решения проблем с масштабированием, а также дальнейшей работы по улучшению файловой системы. Если верить его словам, возможно в ближайшие несколько лет мы услышим значительно больше об XFS .
XFS часто рассматривают как файловую систему для тех, кто работает с файлами больших размеров. По словам Дэйва, с этой задачей она справляется прекрасно, кроме того, XFS традиционно хорошо работает при больших нагрузках. Но ситуация ухудшается при записи метаданных. Поддержка записи большого количества метаданных в течение долгого времени является слабым местом для этой файловой системы. Говоря коротко, метаданные записываются очень медленно, и практически не масштабируются, даже при работе на одном CPU.
Насколько медленно? Дэйв привел несколько слайдов, на которых показаны результаты теста fs-mark в сравнении с ext4. Результаты XFS значительно хуже (практически в два раза) даже на одном CPU. С увеличением числа потоков до восьми ситуация еще больше ухудшается, после чего производительность ext4 также резко падает. Для работ, связанных с высокой нагрузкой на систему ввода/вывода, где необходимо изменять большое количество метаданных (в качестве примера была приведена распаковка тарболла), ext4 показала производительность в 20 - 50 раз больше, чем XFS . Такое отставание представляет собой действительно серьезную проблему.

Отложенное журналирование

Проблема заключается в журнале ввода/вывода: XFS генерировала очень большое количество трафика для изменения метаданных. В худших случаях практически весь трафик ввода/вывода представлял собой данные для журнала, а не данные, которые пользователь пытался записать на диск. Попытки решения данной задачи в течение многих лет включали одно важное изменение алгоритма записи и множество других важных оптимизаций и настроек. Единственное, что не требовалось - любое изменение формата данных на диске, хотя оно может быть востребовано в будущем.
Нагрузки, связанные с изменением большого количества метаданных, могут в конечном итоге привести к тому, что один и тот же блок директории будет изменен много раз за короткий период времени, а каждое из этих изменений генерирует запись, которая должна быть сохранена в журнале. Это и есть источник огромного журнального трафика. Концепция решения этой проблемы очень проста: отложить обновление журнала и объединять изменения одного и того же блока в одной записи. На самом деле, для претворения в жизнь этой идеи в масштабируемой реализации потребовалось несколько лет тяжелой работы, но сейчас она уже работает. Отложенное журналирование для файловой системы XFS поддерживается в ядре версии 3.3.
Фактически технология отложенного журналирования была позаимствована у файловой системы ext3, поэтому алгоритм ее работы известен и требуется намного меньше времени для ее внедрения в XFS , чем если бы она разрабатывалась с нуля. Вместе с преимуществами в быстродействии это также значит значительное уменьшение объема кода. Если вы хотите более детально изучить, как работает эта технология, подробности можно найти в файле filesystems/xfs-delayed-logging.txt в дереве документации ядра.
Отложенное журналирование - это большое изменение, но не единственное. Быстрый способ резервирования места в журнале остается горячей темой в XFS . Сегодня он не требует блокировки, в то время как медленный способ все еще требует глобальной блокировки этой точки. Код асинхронной записи метаданных приводил к сильной фрагментации ввода/вывода, значительно уменьшая производительность. Теперь запись метаданных откладывается, а перед записью они сортируются. Это значит, что, по словам Дэйва, файловая система выполняет функции планировщика ввода/вывода. Но планировщик ввода/вывода работает с очередью запросов, которая, как правило, ограничивается 128 записями, в то время как очередь отложенных метаданных XFS может содержать многие тысячи записей, так что имеет смысл производить сортировку в файловой системе, до передачи метаданных системе ввода/вывода. "Активные элементы журнала (Active log items)" - это механизм, который повышает производительность при работе с большими сортированными списками элементов журнала путем накапливания изменений и применения их в пакетном режиме. Кроме того, кэшированные метаданные были удалены со страницы подкачки, так их наличие приводило к запросам на загрузку страниц в неподходящее время.

Сравнение файловых систем

Как же XFS масштабируется после всех изменений? При работе с одним или двумя потоками она все еще немного медленнее, чем ext4, но с увеличением числа потоков до восьми ее производительность линейно возрастает, в то время как у ext4 ухудшается, а у btrfs ухудшается еще больше. На сегодняшний день масштабируемость XFS ограничивается блокировкой слоя ядра, работающего с виртуальными файловыми системами, а не кодом, связанным непосредственно с файловой системой. Обход директорий теперь работает быстрее даже с одним потоком, и еще быстрее при использовании восьми потоков.
Масштабируемость выделения дискового пространства в настоящее время на несколько порядков быстрее, чем в ext4. Это положение немного изменится после введения в релизе 3.2 функции "bigalloc", которая повышает масштабируемость выделения дискового пространства в ext4 на два порядка, если используется достаточно большой размер блока. К сожалению, при этом пропорционально увеличивается место, занимаемое на диске файлами малых размеров. Например, для размещения исходного кода ядра Linux в этом случае потребуется 160 Гб дискового пространства. Bigalloc не очень хорошо совместим с некоторыми другими функциями ext4 и требует сложной настройки. По словам Дэйва ext4 страдает от архитектурных недостатков - такие вещи, как использование битовых карт для отслеживания дискового пространства, были типичны для восьмидесятых годов. Она просто не может масштабироваться на действительно большие файловые системы.
Выделение дискового пространства в Btrfs происходит еще медленнее, чем в ext4. По словам Дэйва, проблема в основном заключается в перемещении кэша свободного дискового пространства, на которое затрачивается слишком много ресурсов процессора. Однако это не архитектурная ошибка, поэтому она может быть достаточно легко исправлена.

Будущее файловых систем Linux

На сегодняшний день проблемы с производительностью и масштабируемостью можно считать решенными. Теперь узким местом является слой VFS, поэтому дальнейшие усилия должны быть направлены на этот участок работы. Но самым большим вызовом в будущем будет проблема надежности хранения данных, и это может потребовать значительных изменений в файловой системе XFS.
Надежность заключается не только в том, чтобы не потерять данные - в этом вопросе, надеемся, XFS уже достаточно надежна, проблема также связана с масштабируемостью. Просто непрактично отключать петабайтную файловую систему, чтобы запустить ее проверку, или утилиту восстановления данных. В будущем просто необходимо сделать возможным проводить такие операции на работающей файловой системе. Это потребует надежного инструмента для обнаружения сбоев, встроенного в файловую систему, чтобы проверять метаданные на лету. Некоторые другие файловые системы имеют подобные механизмы, но, по словам Дэйва, для XFS такую систему лучше будет реализовать на уровне массивов устройств для хранения данных, либо на уровне приложений.
"Проверка метаданных" означает разработку метаданных, которые защищали бы себя от неправильно адресованных запросов на запись на уровне устройств для хранения данных. Проверки контрольной суммы недостаточно - она показывает только, что данные были записаны правильно. Метаданные с такой защитой могли бы определять блоки, которые были записаны в неправильное место и помогать в восстановлении целостности файловой системы при серьезных сбоях. Это также может помочь решить известную проблему reiserfs, которая заключается в том, что утилита для восстановления файловой системы вводится в заблуждение устаревшими метаданными, или метаданными, найденными в образах файловой системы.
Разработка таких метаданных потребует большого количества изменений. Каждый блок метаданных будет включать UUID файловой системы, к которой он принадлежит, а также номера блока и индексного дескриптора, чтобы файловая система могла определить, что метаданные переданы из правильного источника. Также здесь будут контрольные суммы для определения поврежденных блоков метаданных и собственный идентификатор для связывания метаданных с собственным индексным дескриптором или директорией. Обратное отображение дерева распределения позволит файловой системе быстро идентифицировать, какому файлу принадлежит любой блок.
Разумеется, нынешний формат XFS не обеспечивает хранения всех этих дополнительных данных, поэтому его необходимо будет менять. При этом, по словам Дэйва, не планируется сохранять какую-либо обратную совместимость с текущим форматом файловой системы. Это делается для того, чтобы предоставить полную свободу разработчикам в создании нового формата файловой системы, который будет использоваться в течение многих лет. Кроме добавления описанных выше возможностей, разработчики также планируют добавить пространство для d_type в структуре директории, счетчики версии NFSv4, время создания индексного дескриптора и, вероятно, что-то еще. Максимальный размер директории, который сегодня составляет всего 32 Гб, также будет увеличен.
При реализации всех этих функций появятся новые возможности: проактивное обнаружение повреждений файловой системы, локализация и замена отключенных блоков, а также улучшенное исправление ошибок файловой системы "на лету". Это значит, как сказал Дэйв, что XFS останется лучшей файловой системой для работы с большими объемами данных под Linux в течение долгого времени.
Каковы последствия всего этого с точки зрения перспектив btrfs? По словам Дэйва, btrfs явно не оптимизирована для работы с большим количеством метаданных - имеются серьезные проблемы с масштабируемостью. Этого и следовало ожидать от файловой системы, находящейся на ранней стадии разработки. Потребуется определенное время для решения этих проблем, а некоторые из них, возможно, окажутся неразрешимыми. С другой стороны, надежность хранения данных в btrfs находится на высоте, и в течение ближайших нескольких лет она может использоваться в таком качестве.
Ext4, напротив, страдает от проблем масштабируемости, связанных с ошибками в инфраструктуре. В любом случае, согласно результатам тестов, приведенных Дэйвом, она не является самой быстрой. Сказывается почтенный возраст ее архитектуры, хотя имеются планы по повышению ее надежности. Ext4 в ближайшее время будет бороться, чтобы остаться на уровне конкурентов.
В конце своего выступления Дэйв затронул еще несколько вопросов. По его словам, btrfs, благодаря своим достоинствам, вскоре заменит ext4 как файловую систему по умолчанию во многих дистрибутивах. В то же время ext4 уступает XFS на большинстве рабочих операций, включая те, где она была традиционно сильна. Проблема масштабируемости проявляется уже на небольших серверах. Кроме того, она не так стабильна, как о ней думают пользователи. В конце он спросил: "Почему же мы все еще используем ext4?"
Можно предположить, что у разработчиков ext4 имеется хороший ответ на этот вопрос, но, к сожалению, никто из них не присутствовал в зале. Так что, похоже, что это обсуждение должно быть продолжено в другом месте. Послушать его будет интересно.

Файловая система XFS показывает великолепную производительность при работе с большими файлами и изначально разрабатывалась для использования на дисках большого объема. Недостатком данной системы считалась недостаточная производительность на большом количестве мелких файлов. Однако последние патчи, сделанные разработчиками системы XFS , устраняют данный недостаток и поднимают скорость работы с мелкими файлами до уровня файловых систем ext4, ReiserFS.

Одно из преимуществ XFS – это наличие штатного дефрагментатора (чтобы там не говорили, а при копировании больших и огромных файлов дефрагментация может существенно снизить скорость).

Набор утилит для управления файловой системой XFS называется xfsprogs. Рассмотрим какие возможности по оптимизации дают эти утилиты.

Просмотр информации о расположении файла

Для хранения файлов XFS выделяет место в виде так называемых экстентов (Extent). Обычно при копировании файла на файловую систему он занимает один экстент. Но в случае когда файл модифицируется и увеличивается в размере, а пространство после файла уже занято, содержимое фала может быть помещено в несколько экстентов. Аналогично, когда при копировании большого файла нет достаточного по размеру экстента.

В зависимости от особенностей использования, файлы на XFS ней могут довольно значительно фрагментироваться.

Чтобы посмотреть карту экстентов в которых хранится файл, используется следующая команда:

Xfs_bmap -v /media/video/football_cup_1993.avi

Она выводит примерно следующую информацию:

/media/video/football_cup_1993.avi: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: : 18748384..19010399 0 (18748384..19010399) 262016 1: : 771769344..772031487 2 (253665088..253927231) 262144 2: : 767587184..768111471 2 (249482928..250007215) 524288 3: : 738171688..739220263 2 (220067432..221116007) 1048576 4: : 880928368..882928575 3 (103771984..105772191) 2000208

Как видно файл /media/video/football_cup_1993.avi располагается в пяти экстентах.

Дефрагментация XFS

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

Для дефрагментации всего раздела используется команда:

Xfs_fsr -v /dev/<раздел>

Дефрагментация отдельного файла выполняется командой:

Xfs_fsr -v <имя файла>

опция -v выводит дополнительную информацию.

Проверка степени фрагментации XFS

Информацию о фрагментации раздела можно получить командой:

Xfs_db -r -c frag /dev/<раздел>

Опция -r необходима для проверки раздела, который примонтирован и используется в данный момент. Опция -c frag нужна непосредственно для вывода информации о фрагментированности раздела.

Операционная система Linux поддерживает огромное количество разнообразных типов файловых систем. С точки зрения Linux файловые системы можно условно разделить на четыре группы:

  • «Родные» файловые системы. Имеется в виду, что файловая система поддерживает все атрибуты, свойственные Linux: права доступа, временные метки, информацию о владельце файла и т.д.;
  • «Неродные» файловые системы. То есть файловые системы, не поддерживающие атрибуты Linux;
  • Виртуальные. Это файловые системы, которые не имеют физического носителя;
  • Сетевые файловые системы.

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

  • reiserfs

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

Ext2 - это одна из первых файловых систем, используемых в Linux (Если говорить более точно, то первая файловая система Linux - это minix. Но возможности этой fs весьма ограничены, и она применялась только на начальном этапе развития Linux. ). Она была создана в 1993 году. Эта файловая система считается очень надёжной и проверенной временем. Но, поскольку ext2 разрабатывалась в те времена, когда жёсткий диск размером 300 Мбайт считался очень большим, ей присущи некоторые ограничения. Применять эту fs для больших разделов не имеет смысла, она начнёт «тормозить», когда в разделе будет большое количество файлов. То есть ext2 считается медленной (Понятие «медленная» очень относительное. Ext2 считается медленной в Linux. Но если сравнить её со стандартной файловой системой FreeBSD, окажется, что ext2 очень даже быстрая. ). Конечно, с увеличением размеров дисков, с появлением новых веяний, в файловую систему вносились изменения, улучшающие её работу и функциональность. Например, поддержка POSIX ACL. Но всё же её не коснулись глобальные изменения, позволяющие говорить:

Да, это та самая, единственная файловая система, которая меня полностью устраивает.

Кроме того, ext2 имеет серьёзные ограничения:

  • Максимальный размер файла - 2048 Гбайт.
  • Максимальный размер файловой системы - 32768 Гбайт.
  • Максимальное количество поддиректорий в одной директории - 32768.

Журналируемые файловые системы

Сейчас файловую систему ext2 уже практически не используют. И дело даже не в её ограничениях, ext2 достаточно надёжная файловая система. Всё дело в скорости загрузки Linux-серверов. Необходимо, чтобы сервер работал постоянно. Но чудес не бывает, сервера иногда приходится перегружать. Ваша задача - сделать так, чтобы после падения системы они перегружались как можно быстрее. При включении сервера происходит проверка дисков. Процедура проверки файловых систем, особенно больших, - достаточно длительная процедура. Если таких файловых систем несколько, то их проверка может занять очень много времени. А сервер должен работать!

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

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

Если файловая система будет отключена некорректно, программа проверки сначала смотрит журнал транзакций и на основании данных, находящихся в нём, попытается либо вернуть (откатить) систему на момент начала транзакции, или, если это возможно, завершить действия, описанные в транзакции. Учитывая то, что журнал имеет небольшой размер (в файловой системе ext3 он равен 32 Мбайт), процесс восстановления файловой системы значительно ускоряется.

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

Когда возникла необходимость внедрения журналируемых файловых систем в Linux, компания RedHat разработала файловую систему ext3. В RedHat пошли путём наименьшего сопротивления - за основу взяли хорошо известную ext2 и добавили поддержку журнала.

По своему физическому устройству ext2 идентична ext3. Эта особенность позволила применять для работы с ext3 такие же утилиты (создание, проверка и настройка файловых систем), как и для работы с ext2.

Несмотря на добавление журнала, ext3 работает быстрее, чем ext2. К достоинствам ext3 следует также отнести возможность журналирования не только необходимых действий, но и данных, что не позволяют делать другие журналируемые системы. Благодаря этой особенности ext3 считается очень надёжной.

Ext3 поддерживает три режима работы:

  • Writeback - в этом режиме не происходит журналирования данных. В журнал сначала помещаются так называемые метаданные (inode файла, ссылки на блоки). Только после того, как они попали в журнал, происходит запись данных в файловую систему.
  • Ordered (режим по умолчанию) - этот режим похож на описанный выше. Единственным отличием является то, что в режиме writeback в журнал сначала помещаются все метаданные, и только после этого происходят изменения в файловой системе. А в режиме ordered при помещении информации о блоке в журнал этот блок сразу же изменяется в файловой системе. Затем в журнал помещается информация о следующем блоке, и блок записывается, и так далее. То есть данные изменяются параллельно с изменением в журнале.
  • Journal - режим полного журналирования. В журнал попадают метаданные и данные. И только после этого происходит изменение в файловой системе.

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

ReiserFS разрабатывается Гансом Реизером (Hans Reiser) и его компанией Namesys (http://www.namesys.com). Это очень быстрая файловая система, хорошо приспособленная для хранения большого количества маленьких файлов.

В ней удалось решить проблему размещения на диске маленьких файлов. Например, в ext2/3 для размещения файла, содержащего единственный символ, на диске будет занят целый блок. Блок ext2/3 может иметь размер от 1 до 8 Кбайт (размер зависит от объема файловой системы ). А в ReiserFS в одном блоке могут быть размещены данные нескольких файлов. Более того, если размер файла очень мал, данные могут быть размещены в inode, то есть непосредственно в метаданных.

Файловая система базируется на оптимизированных деревьях (B tree). Это увеличивает скорость поиска в файловой системе и снимает вопрос ограничения количества файлов и директорий в директории.

С файлами большого размера данная файловая система тоже справляется весьма уверенно.

Для файловой системы ReiserFS версии 3.6 существуют следующие ограничения:

  • Максимальный размер файла - 8 Тбайт (для 32-битных компьютеров);
  • Максимальный размер файловой системы - 16 Тбайт.

Сейчас разрабатывается следующая версия ReiserFS - четвёртая. Ожидается, что она будет включена в ядрах версии 2.6.17 или 2.6.18.

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

Эта файловая система разрабатывается компанией IBM и распространяется под лицензией GNU GPL. Описание JFS можно найти в Интернете на сайте . JFS используется не только в Linux, но и в других операционных системах, например, в AIX и OS/2.

JFS - журналируемая файловая система. Основной её конёк - использование совместно с LVM (Logical Volume Manager). LVM позволяет объединять несколько физических разделов жёстких дисков в один логический, который затем можно разбивать на разделы как обыкновенный жёсткий диск. При этом некоторые типы LVM позволяют на лету подключать новое дисковое пространство. И если на увеличивающихся разделах использовать файловую систему ext3, в один прекрасный момент вы получите сообщение о невозможности создания нового файла. Дело в том, что при форматировании раздела в ext3 в нём заранее, в зависимости от размера, резервируется конечное количество inodes. То есть заранее известно максимальное количество файлов. Если размер файловой системы не будет увеличиваться, то этого количества inodes вполне хватает для нормальной работы. В JFS есть возможность динамического увеличения файловой системы и количества inodes. Благодаря этому свойству, при увеличении размера файловой системы не возникает ограничение на количество создаваемых файлов.

Для файловой системы JFS существуют следующие ограничения:

  • Максимальный размер файла ограничивается разрядностью операционной системы.
  • Максимальный размер файловой системы - 512 Тбайт.

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

Файловая система XFS разрабатывалась в компании SGI (бывшая Silicon Graphics, Inc.). XFS появилась на свет в 1994 году и изначально поставлялась с операционной системой IRIX. Компания SGI славится своими рабочими станциями для производства видео, а также серверами для хранения данных. Поэтому файловая система оптимизирована для обслуживания большого количества огромных файлов и для поддержки больших директорий. Благодаря своей структуре, она так же хорошо поддерживает большое количество маленьких файлов. По своему быстродействию она сопоставима с файловой системой ReiserFS, а по надёжности превосходит файловую систему Ганса (Сколько данных было мной потеряно в файловой системе ReiserFS на пустом месте. Спасало только резервное копирование. Поэтому сейчас я ReiserFS на серверах не использую. ).

Поддержка больших файлов возможна благодаря тому, что XFS - это 64-битная файловая система. А скорость работы файловой системы достигается благодаря использованию В+ деревьев для поиска и описания внутренних структур.

Внутренне устройство файловой системы достаточно сложное, и я не вижу необходимости в кратком описании ее структуры. Тем более, что в Интернете есть хорошие статьи, подробно описывающие XFS:

Файловые системы компании Microsoft

Если говорить о файловых системах компании Microsoft, в Linux поддерживаются FAT и NTFS. С FAT всё очень просто, структура файловой системы известна, поэтому в Linux она поддерживается полностью. Единственное, что необходимо учесть при использовании FAT, в Linux существует две её разновидности:

  • msdos - FAT12/16.
  • vfat - FAT32.

Поддержку FAT следует включать в том случае, если вы предполагаете использовать гибкие диски и различные USB-накопители: флеш-карты, жёсткие диски и т.д. Дело в том, что все они обычно отформатированы в FAT.

C NTFS немного сложнее. Эта файловая система нормально поддерживается в режиме только для чтения. В режиме записи её не рекомендуется использовать. Хотя режим записи поддерживается, но если почитать документацию к драйверам NTFS, вы увидите, что там большими буквами написано: в режиме записи можно только изменять содержимое существующих файлов, ни в коем случае нельзя создавать новые файлы, удалять или изменять размер существующих - это может разрушить файловую систему.

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

Эти файловые системы используются для хранения информации на CD- и DVD-дисках.

Изначально iso9660 была очень простой файловой системой с большим количеством ограничений. Например, имена файлов как в MS DOS, ограничение на количество вложений директорий. Поэтому для iso9660 было написано несколько дополнений, расширяющих её возможности. В том числе, дополнения, позволяющие сохранять атрибуты файлов UNIX. Все дополнения поддерживаются драйвером файловой системы, и никаких затруднений при работе быть не должно. Более того, драйвер iso9660 поддерживает, как это ни странно звучит, режим записи. Он применяется при создании образов CD-ROM.

С udf тоже не замечено особых проблем. Таким образом, работа с CD- и DVD-дисками поддерживается в Linux без каких-либо ограничений.

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

Это очень полезная файловая система. В своей работе администратора вы очень часто будете обращаться к её возможностям. В одной из первых глав, рассказывающих об организации файловой системы Linux, я вкратце рассказывал о предназначении этой файловой системы. Просто напомню, что файлы, которые находятся в директории /proc - это отображение области данных ядра на файловую систему. То есть, если вы просматриваете содержимое какого-либо файла, на самом деле вы видите определённую часть области данных ядра.

Ниже я опишу некоторые интересные файлы, которые вы можете встретить в директории /proc . Содержимое файлов в вашей системе будет отличаться от содержимого файлов, показанных в качестве примеров.

/proc/cmdline

Содержит командную строку, переданную ядру при его запуске.

# cat cmdline BOOT_IMAGE=Linux-2613 ro root=303 #

/proc/cpuinfo

Информация о процессоре или процессорах.

# cat cpuinfo processor: 0 vendor_id: GenuineIntel cpu family: 6 model: 9 model name: Intel(R) Pentium(R) M processor 1400MHz stepping: 5 cpu MHz: 1399.050 cache size: 1024 KB fdiv_bug: no hlt_bug: no f00f_bug: no coma_bug: no fpu: yes fpu_exception: yes cpuid level: 2 wp: yes flags: fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 tm pbe est tm2 bogomips: 2800.93 #

/proc/devices

Список устройств.

# cat devices Character devices: 1 mem 2 pty 3 ttyp 4 /dev/vc/0 4 tty 4 ttyS 5 /dev/tty 5 /dev/console 5 /dev/ptmx 7 vcs 10 misc 13 input 14 sound 21 sg 116 alsa 128 ptm 136 pts 171 ieee1394 180 usb 226 drm 254 pcmcia Block devices: 3 ide0 7 loop 8 sd 11 sr 65 sd #

/proc/dma

Использование каналов DMA.

# cat dma 4: cascade #

/proc/filesystems

Список поддерживаемых файловых систем.

# cat filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev sockfs nodev pipefs nodev futexfs nodev tmpfs nodev inotifyfs nodev eventpollfs nodev devpts ext3 ext2 nodev ramfs msdos vfat iso9660 ntfs udf nodev mqueue nodev usbfs #

/proc/interrupts

Распределение прерываний.

# cat interrupts CPU0 0: 850627 XT-PIC timer 1: 9691 XT-PIC i8042 2: 0 XT-PIC cascade 7: 2 XT-PIC parport0 8: 1 XT-PIC rtc 9: 6620 XT-PIC acpi 11: 238626 XT-PIC Intel 82801DB-ICH4, yenta, yenta, eth0, eth1, ohci1394, ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb4, radeon@pci:0000:01:00.0 12: 65575 XT-PIC i8042 14: 11538 XT-PIC ide0 NMI: 0 LOC: 0 ERR: 0 MIS: 0 #

/proc/modules

Список загруженных модулей.

# cat modules irtty_sir 5248 0 - Live 0xf8a09000 sir_dev 13548 1 irtty_sir, Live 0xf8a1d000 irda 107768 1 sir_dev, Live 0xf8a3f000 crc_ccitt 1792 1 irda, Live 0xf8a04000 parport_pc 24324 0 - Live 0xf8a16000 parport 30920 1 parport_pc, Live 0xf8a0d000 uhci_hcd 30416 0 - Live 0xf89e7000 ehci_hcd 27656 0 - Live 0xf897a000 usbcore 103740 3 uhci_hcd,ehci_hcd, Live 0xf8990000 ohci1394 31092 0 - Live 0xf895e000 ieee1394 86392 1 ohci1394, Live 0xf891e000 ipw2100 78204 0 - Live 0xf8936000 ieee80211 18948 1 ipw2100, Live 0xf8918000 ieee80211_crypt 4488 1 ieee80211, Live 0xf88f8000 eepro100 26512 0 - Live 0xf8909000 pcmcia 30568 4 - Live 0xf8900000 firmware_class 7680 2 ipw2100,pcmcia, Live 0xf88f2000 yenta_socket 20748 4 - Live 0xf8879000 rsrc_nonstatic 11264 1 yenta_socket, Live 0xf8875000 pcmcia_core 34640 3 pcmcia,yenta_socket,rsrc_nonstatic, Live 0xf88e2000 #

/proc/mounts

Содержит список подключенных файловых систем.

# cat mounts rootfs / rootfs rw 0 0 /dev/root / ext3 rw 0 0 proc /proc proc rw,nodiratime 0 0 sysfs /sys sysfs rw 0 0 none /dev ramfs rw 0 0 /dev/hda5 /usr ext3 rw 0 0 /dev/hda6 /home ext3 rw 0 0 /dev/hda1 /mnt/win ntfs ro,noatime,nodiratime,uid=0,gid=0,fmask=0177,dmask=077,nls=iso8859-1, errors=continue,mft_zone_multiplier=1 0 0 devpts /dev/pts devpts rw 0 0 usbfs /proc/bus/usb usbfs rw 0 0 #

/proc/partitions

Содержит список разделов всех подключенных накопителей.

# cat partitions major minor #blocks name 3 0 58605120 hda 3 1 10485688 hda1 3 2 506520 hda2 3 3 9775080 hda3 3 4 1 hda4 3 5 9775048 hda5 3 6 28062688 hda6 #

/proc/pci

Список устройств, обнаруженных на шине PCI.

Этот файл можно использовать для диагностики причин, почему не работают некоторые устройства. Обращайте внимание на прерывания: если оно равно 0, это значит, что устройству по какой-либо причине не было выделено прерывание. Я не буду полностью приводить содержимое этого файла, он очень большой.

# cat pci PCI devices found: Bus 0, device 0, function 0: Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 3). Prefetchable 32 bit memory at 0xd0000000 . Bus 0, device 1, function 0: PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 3). Master Capable. Latency=96. Min Gnt=12. Bus 0, device 29, function 0: USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 1). IRQ 11. I/O at 0x1800 . #

/proc/swaps

Содержит список подключенных swap файлов и разделов.

# cat swaps Filename Type Size Used Priority /dev/hda2 partition 506512 0 -1 #

/proc/version

Содержит информацию о версии операционной системы и ядра Linux.

# cat version Linux version 2.6.13-rc3-my (root@master) (gcc version 3.3.6) #3 Tue Jul 19 22:25:23 GMT+3 2005 #

Информация о процессах

Кроме файлов в /proc находятся директории, имеющие в качестве имени число. Каждая директория описывает процесс, PID которого соответствует имени директории. Файлы в этой директории описывают параметры процесса. Содержимое одной из директория приведено ниже.

# ls /proc/4624 auxv cwd@ exe@ maps mounts oom_score seccomp statm task/ cmdline environ fd/ mem oom_adj root@ stat status wchan #

Только несколько из приведенных в примере файлов содержат информацию, которая была бы понятна без предварительной обработки.

cmdline

Содержит аргументы командной строки.

# cat cmdline -su #

environ

Содержит значения переменных среды окружения процесса.

# cat environ HZ=100TERM=xtermPATH=/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/binHOME=/rootSHELL=/bin/bashUSER=rootLOGNAME=rootMAIL=/var/spool/mail/root #

status

Содержит информацию о состоянии процесса в формате понятном человеку.

# cat status Name: bash State: S (sleeping) SleepAVG: 98% Tgid: 4510 Pid: 4510 PPid: 4498 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Groups: 0 1 2 3 4 6 10 11 VmSize: 2832 kB VmLck: 0 kB VmRSS: 1724 kB VmData: 388 kB VmStk: 88 kB VmExe: 628 kB VmLib: 1628 kB VmPTE: 12 kB Threads: 1 SigQ: 0/7168 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000010000 SigIgn: 0000000000384004 SigCgt: 000000004b813efb CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff #

Другие директории

Коме директорий, описывающих процессы системы, в /proc могут находиться и другие директории. Ниже приведу назначение некоторых из них:

  • ide - информация об устройствах, подключенных к ide интерфейсу.
  • irq - информация о распределении прерываний.
  • net - информация о сети. Содержимое таблицы arp и таблицы маршрутизации. Статистика по сетевым интерфейсам и протоколом. И так далее.
  • scsi - информация о SCSI устройствах.
  • sys - содержит изменяемые параметры системы.

/proc/sys

Файловая система /proc/sys - это отдельная большая тема. При помощи файлов, находящихся в этой директории можно «на лету» изменять параметры системы. Достаточно записать нужное значение в определенный файл. Описывать /proc/sys я не буду, слишком много информации и слишком много надо знать, что бы понять для чего используются файлы. Поэтому я расскажу где найти документацию и описание по этой файловой системе:

  • В первую очередь - это документация к ядру. Она поставляется с исходными кодами ядра. Описание /proc/sys можно найти в файле Documentation/filesystems/proc.txt . Ей посвящена отдельная (и далеко не маленькая) глава.

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

В отличие от EXT2, EXT3 является журналируемой файловой системой, т.е. не попадет в противоречивое состояние после сбоев. Но она полностью совместима с EXT2.

Разработанная в Red Hat

В данный момент является основной для LINUX.

Драйвер Ext3 хранит полные точные копии модифицируемых блоков (1КБ, 2КБ или 4КБ) в памяти до завершения операции. Это может показаться расточительным. Полные блоки содержат не только изменившиеся данные, но и не модифицированные.

Такой подход называется "физическим журналированием ", что отражает использование "физических блоков" как основную единицу ведения журнала. Подход, когда хранятся только изменяемые байты, а не целые блоки, называется "логическим журналированием " (используется XFS). Поскольку ext3 использует "физическое журналирование", журнал в ext3 имеет размер больший, чем в XFS. За счет использования в ext3 полных блоков, как драйвером, так и подсистемой журналирования нет сложностей, которые возникают при "логическом журналировании".

Типы журналирования поддерживаемые Ext3, которые могут быть активированы из файла /etc/fstab:

· data=journal (full data journaling mode)- все новые данные сначала пишутся в журнал и только после этого переносятся на свое постоянное место. В случае аварийного отказа журнал можно повторно перечитать, приведя данные и метаданные в непротиворечивое состояние.
Самый медленный, но самый надежный.

· data=ordered - записываются изменения только мета-данных файловой системы, но логически metadata и data блоки группируются в единый модуль, называемый transaction. Перед записью новых метаданных на диск, связанные data блоки записываются первыми. Этот режим журналирования ext3 установлен по умолчанию.
При добавлении данных в конец файла режим data=ordered гарантированно обеспечивает целостность (как при full data journaling mode). Однако если данные в файл пишутся поверх существующих, то есть вероятность перемешивания "оригинальных" блоков с модифицированными. Это результат того, что data=ordered не отслеживает записи, при которых новый блок ложится поверх существующего и не вызывает модификации метаданных.

· data=writeback (metadata only) - записываются только изменения мета-данных файловой системы. Самый быстрый метод журналирования. С подобным видом журналирования вы имеете дело в файловых системах XFS, JFS и ReiserFS.

XFS - журналируемая файловая система разработанная Silicon Graphics, но сейчас выпущенная открытым кодом (open source).

Официальная информация на http://oss.sgi.com/projects/xfs/



XFS была создана в начале 90ых (1992-1993) фирмой Silicon Grapgics (сейчас SGI) для мультимедийных компьютеров с ОС Irix. Файловая система была ориентирована на очень большие файлы и файловые системы. Особенностью этой файловой системы является устройство журнала - в журнал пишется часть метаданных самой файловой системы таким образом, что весь процесс восстановления сводится к копированию этих данных из журнала в файловую систему. Размер журнала задается при создании системы, он должен быть не меньше 32 мегабайт; а больше и не надо - такое количество незакрытых транзакций тяжело получить.

Некоторые особенности:

· Более эффективно работает с большими файлами.

· Имеет возможность выноса журнала на другой диск, для повышения производительности.

· Сохраняет данные кэша только при переполнении памяти, а не периодически как остальные.

· В журнал записываются только мета-данные.

· Используются B+ trees.

· Используется логическое журналирование




Top