Файловые системы в Linux
XFS — начало разработки 1993 год, фирма Silicon Graphics, в мае 2000 года предстала в GNU GPL, для пользователей большинства Linux систем стала доступна в 2001-2002 гг. Отличительная черта системы — прекрасная поддержка больших файлов и файловых томов, 8 эксбибайт — 1 байт (8*2 60 -1 байт) для 64-х битных систем. Ко всему прочему обладает другими немаловажными особенностями — непрерывные области дискового пространства, задержка выделения пространства и онлайн дефрагментация. Является одной из старейших журналируемых файловых систем для *nix, и содержит в себе наиболее отлаженный, в этом контексте, исходный код.
ReiserFS (Reiser3) — одна из первых журналируемых файловых систем под Linux, разработана Namesys. Имеет некоторые врождённые головные боли, но в целом неплохая система, ведущая отсчёт дней своих с 2001 года. Оговорюсь, что смысл журналируемых систем заключается в дисковых транзакциях, которые последовательно пишутся в специальную зону диска (журнал, он же лог), перед тем как данные попадают в конечные точки файловой системы. Максимальный объём тома для этой системы равен 16 тебибайт (16*2 40 байт).
JFS (Journaled File System) — файловая система, детище IBM, явившееся миру в далёком 1990 году для ОС AIX (Advanced Interactive eXecutive). В виде первого стабильного релиза, для пользователей Linux, система стала доступна в 2001 году. Из плюсов системы — неплохая масштабируемость. Из минусов — не особо активная поддержка на протяжении всего жизненного цикла. Максимальный рамер тома 32 пэбибайта (32*2 50 байт).
ext (extended filesystem) — появилась в апреле 1992 года, это была первая файловая система, изготовленная специально под нужды Linux ОС. Разработана Remy Card с целью преодолеть ограничения файловой системы Minix.
ext2 (second extended file system) — была разработана Remy Card в 1993 году. Не журналируемая файловая система, это был основной её недостаток, который исправит ext3.
ext3 (third extended filesystem) — по сути расширение исконной для Linux ext2, способное к журналированию. Разработана Стивеном Твиди (Stephen Tweedie) в 1999 году, включена в основное ядро Linux в ноябре 2001 года. На фоне других своих сослуживцев обладает более скромным размером пространства, до 4 тебибайт (4*2 40 байт) для 32-х разрядных систем. На данный момент является наиболее стабильной и поддерживаемой файловой системой в среде Linux.
Reiser4 — первая попытка создать файловую систему нового поколения для Linux. Впервые представленная в 2004 году, система включает в себя такие передовые технологии как транзакции, задержка выделения пространства, а так же встроенная возможность кодирования и сжатия данных. Ханс Рейзер (Hans Reiser), главный разработчик системы, рекламировал использовать своё детище непосредственно как БД с улучшенными метаданными. После того, как Ханс Рейзер был осуждён за убийство в 2008 году, дальнейшая судьба системы стала сомнительной.
ext4 — попытка создать 64-х битную ext3 способную поддерживать больший размер файловой системы (1 эксбибайт). Позже добавились возможности — непрерывные области дискового пространства, задержка выделения пространства, онлайн дефрагментация и прочие. Обеспечивается прямая совместимость с системой ext3 и ограниченная обратная совместимость при недоступной способности к непрерывным областям дискового пространства.
UPD: Btrfs (B-tree FS или Butter FS) — проект изначально начатый компанией Oracle, впоследствии поддержанный большинством Linux систем. Многие считаеют систему эдаким ответом на ZFS. Ключевыми особенностями данной файловой системы являются технологии: copy-on-write, позволяющая сделать снимки областей диска (снапшоты), которые могут пригодится для последующего восстановления; контроль за целостностью данных и метаданных (с повышенной гарантией целостности); сжатие данных; оптимизированный режим для накопителей SSD (задаётся при монтировании) и прочие. Немаловажным фактором является возможность перехода с ext3 на Btrfs. С августа 2008 года данная система выпускается под GNU GPL.
Tux2 — известная, но так и не анонсированная публично файловая система. Создатель Дэниэл Филипс (Daniel Phillips), система базируется на алгоритме «Фазового Дерева», который как и журналирование защищает файловую систему от сбоев. Организована как надстройка на ext2.
Tux3 — наступая на пятки Btrfs, представлена новая файловая система. Система создана на основе FUSE (Filesystem in Userspace), специального модуля для создания файловых систем на *nix платформах. Данный проект ставит перед собой цель избавиться от привычного журналирования, взамен предлагая версионное восстановление (состояние в определённый промежуток времени). Преимуществом используемой в данном случае версионной системы, является способ описания изменений, где для каждого файла создаётся изменённая копия, а не переписывается текущая версия. Такой подход позволяет более гибко управлять версиями.
UPD: Xiafs — задумка и разработка данной файловой системы принадлежат Frank Xia, основана на файловой системе MINIX. В настоящее время считается устаревшей и практически не используется. Наряду с ext2 разрабатывалась, как замена системе ext. В декабре 1993 года система была добавлена в стандартное ядро Linux. И хотя система обладала большей стабильностью и занимала меньше дискового пространства под контрольные структуры — она оказалась слабее ext2, ведущую роль сыграли ограничения максимальных размеров файла и раздела, а так же способность к дальнейшему расширению.
UPD: ZFS (Zettabyte File System) — изначально созданная в Sun Microsystems файловая система, для небезызвестной операционной системы Solaris в 2005 году. Отличительные особенности — отсутствие фрагментации данных как таковой, возможности по управлению снапшотами (snapshots), пулами хранения (storage pools), варьируемый размер блоков, 64-х разрядный механизм контрольных сумм, а так же способность адресовать 128 бит информации! В Linux системах может использоваться посредствам FUSE.
Источник
Linux для начинающих. Часть 1. Особенности файловой системы
Предисловие или почему сегодня стоит обратить внимание на Linux
Здравствуйте уважаемые читатели блога www.ithabits.ru. Совсем немного времени осталось до окончания поддержки Windows XP в апреле 2014 года.
Думаю, что незадолго до этого события имеет смысл на всякий случай запастись оффлайновым набором обновлений для XP, например, с помощью утилиты «WSUS Offline Update», описанной в предыдущей статье.
Что произойдет непосредственно после 8.04.2014 года? Да, собственно, в первый момент ничего. Те, кто по той или иной причине до сих пор не сумели отказаться от Windows XP, будут продолжать пользоваться этой операционной системы неопределенное время. По некоторым оценкам после окончания поддержки под ХР останутся около 15% мировых компьютеров.
Хорошо это или плохо? Однозначно плохо. Вновь обнаруженные уязвимости ОС устраняться больше не будут и злоумышленники наверняка постараются воспользоваться этой ситуацией.
Положение будет несколько смягчаться за счет ПО антивирусной защиты. Microsoft обещает продолжить поддержку Essential Security для XP. Можно предположить, что и антивирусные средства других разработчиков также не перестанут работать. Но антивирусное ПО и уязвимости операционной системы это все же далеко не одно и тоже.
Как-то мы уже обращались к теме Zero-day в связи с программами Adobe. Правда, в отношении Windows XP называть уязвимости Zero-day будет уже неправильно. «Нулевой день» — это когда об уязвимости никто, кроме обнаруживших и эксплуатирующих ее злоумышленников не знает. А здесь знать будут, как бы, все, а вот устраняться она уже не будет.
Таким образом с каждым днем после окончания поддержки работа в Windows XP будет все более и более небезопасной. Наверное стоит все же попытаться найти ей замену. В этой связи мы и поговорим сегодня о Linux. Самое время.
Альтернативой Windows XP я бы Linux не назвал – это все же совершенно другая операционная система, которая с большим или меньшим успехом позволит выполнять те или иные задачи. Просто далеко не на все компьютеры, на которых работает Windows XP, можно установить новые версии операционных систем Microsoft, а вот Linux, как правило, можно.
Материал рассчитан на начинающих пользователей Linux, то есть на тех, кто только начинает знакомиться с этой операционной системой. Поэтому очень важно с самого начала разобраться с некоторыми ее принципиальными отличиями от операционной системы Windows. Без их понимания почувствовать себя комфортно в этой операционной системе, особенно после долгих лет работы в Windows, будет сложно.
Начнем с файловой системы.
Особенности файловой системы Linux
Самое главное это разобраться с различиями в подходе к организации структуры файловой системы.
Все, конечно, знают древнюю философскую проблему о курице и яйце — что первично. Вспомнил я о ней не потому, что в операционных системах есть некая подобная проблема, а потому, что в Windows и Linux исповедуются различающиеся подходы к принципам построения файловой системы. Очень упрощенно эту разницу можно объяснить так.
В Windows первичным является том (раздел) на устройстве хранения. Для доступа к тому, он автоматически монтируется в систему с присвоением некой произвольной буквы латинского алфавита. После этого на подключенном блочном устройстве можно создавать папки и файлы и читать и модифицировать их содержимое. Перечень папок, в общем-то, не регламентирован.
Это чрезвычайно простой и очень привычный для подавляющего большинства пользователей подход. Вместе с тем он создает известные сложности когда по той или иной причине нужно разместить системные папки на разных томах.
В некоторых случаях добиться положительного результата позволяют исключительно символьные ссылки. С помощью символьной ссылки можно подключить даже целый дисковый том. Мы рассматривали такой вариант в этой статье.
Однако далеко не каждая системная папка может быть перенесена на другой диск. Например, хорошо известную, можно даже сказать, печально известную всем продвинутым пользователям Windows 7 папку WinSxS переместить нельзя.
Как бы там ни было, задачу размещения системных каталогов Windows на разных дисках нельзя признать тривиальной. При этом точки монтирования томов (буквы дисков) живут своей жизнью, папки и файлы на устройствах хранения своей, и никак они между собой не связаны.
В Linux все наоборот. Основой файловой структуры является не том, а жестко зафиксированная, пришедшая из Unix, логическая структура каталогов системы – стандарт FHS (Filesystem Hierarchy System).
Если открыть в файловом менеджере Файловую систему Linux, то первое что можно заметить — отсутствуют привычные буквы дисков – в Linux они попросту не используются.
То, как обозначаются диски и дисковые тома в Linux, мы уже разбирали в статье, посвященной резервному копированию и восстановлению дисков с помощью утилиты Clonezilla, работающей в среде Linux. Коротко напомним их.
Обозначение дисков в операционной системе Linux
Первый жесткий SATA диск обозначается как sda, диск с интерфейсом SCSI или уже устаревшим сегодня PATA — hda.
Первый раздел (том) диска обозначается как sda1 (hda1), второй sda2, и так далее.
Второй жесткий диск будет называться sdb (hdb), разделы, соответственно, – sdb1, sdb2, …
Однако, это не значит, что непосредственно пользуясь этими обозначениями можно получить доступ к содержимому устройств хранения. Как мы уже говорили чуть выше, первичным является дерево каталогов и устройство обязательно должно быть смонтировано к одной из его точек (каталогу).
Перечень и назначение каталогов файловой структуры Linux
Вся файловая структура Linux строится относительно корневого каталога, который имеет обозначение “/”.
Если при установке операционной системы смонтировать, например, первый раздел первого диска в корневой каталог / (точка монтирования — mount point), то абсолютно все файлы (и системные и пользовательские) будут размещаться на этом диске.
На первый взгляд пока очень похоже на Windows – все файлы на одном томе (ну если не считать маленький раздел загрузчика “Зарезервировано системой”, появившийся в Windows 7). Но это только на первый. На самом деле существует большая разница.
Дело в том, что Linux позволяет непосредственно в процессе установки или позднее монтировать к некоторым точкам своего каталога различные дисковые разделы. Это значит, что штатными средствами без каких-либо дополнительных усилий и отрицательных последствий файлы операционной системы можно разместить в разных разделах одного диска, на разных дисках и даже в сети.
Коротко рассмотрим назначение отдельных каталогов файловой системы. На самом деле знать обо всех из них на начальном этапе не очень то и нужно, но для того, чтобы иметь общее представление и на будущее не помешает.
/bin — каталог, в котором находятся основные исполняемые файлы (binary files — двоичные файлы). Обычный пользователь не может изменять расположенные в нем файлы, только просматривать. Доступ на запись имеет исключительно суперпользователь – Root.
/boot – файлы, необходимые для загрузки Linux, например, файлы загрузчика GRUB и ядер системы. Каталог /boot может быть размещен как в корневом каталоге, так и на отдельном разделе диска.
Перенос /boot на отдельный раздел может быть необходим, например, при использовании в системе менеджера логических томов LVM (Logical Volume Manager). Такую конфигурацию мы рассматривали в статье, посвященной оптимизации использования дискового пространства в нетбуке Asus eee pc 900.
В этом случае можно найти определенную аналогию между каталогом /boot и разделом “Зарезервировано системой” Windows 7.
/dev – в этом каталоге размещаются специальные файлы устройств (devices — устройства).
Работа со всеми устройствами компьютера осуществляется с помощью этих файлов-интерфейсов. Дополнительно можно отметить, что в каталоге присутствуют файлы не только реальных, но и виртуальных устройств. Например, устройство Null, или устройство генератор случайных чисел Random. Права на каталог аналогичны /bin.
/etc – каталог, содержащий основные конфигурационные файлы программ и системных утилит. (et cetera — и так далее).
Большинство настроек операционной системы Linux содержится в обычных текстовых файлах. Возможно, что в процессе эксплуатации системы это будет именно тот каталог, к которому придётся время от времени обращаться.
Продвинутые “линуксоиды” предпочитают работать именно с текстовыми файлами настроек. Совершенно не факт, что вам придется делать тоже самое – в современных версиях Linux существует множество графических утилит для настройки системы и программ. Хотя, в конечном счете, они являются лишь удобным интерфейсом пользователя для изменения все тех же текстовых файлов.
Так как модификация этих файлов может привести к серьезным системным изменениям, редактировать что-либо в данном каталоге может, опять же, только суперпользователь Root.
/lib – основные разделяемые библиотеки с которыми работают исполняемые файлы из каталогов /bin и /sbin.
/media – каталог подключаемых носителей.
Что произойдет в Windows, если к компьютеру подключить USB Flash (флешку), USB диск или загрузить оптический диск в дисковод, хорошо известно. Устройство будет автоматически смонтировано в систему с присвоением ему первой свободной буквы. После этого с его содержимым можно начинать работать.
Абсолютно тоже самое произойдет и при подключении устройства к компьютеру с операционной системой Linux. Оно будет автоматически смонтировано (благо, времена, когда монтировать подключаемые накопители нужно было руками в командной строке, миновали).
Однако, никаких букв или новых устройств после этого не возникнет. Вместо них появится соответствующая устройству папка в каталоге /media. Вот так все просто.
В принципе, о существовании и назначении этого каталога можно ничего и не знать. Дело в том, что в современных сборках Linux после успешного монтирования нового устройства хранения соответствующая ему ссылка будет создана непосредственно на рабочем столе.
В чем могут быть преимущества такого подхода попробую пояснить на конкретном примере из Windows. На своем рабочем компьютере в качестве менеджера фотографий я использую замечательную программу Picasa. Время от времени я делаю с ее помощью резервную копию снимков на внешний USB диск. Очень удобно, так как копируются только новые и измененные фотографии.
Особенностью программы является жесткая привязка существующего архива к конкретной букве диска. А так как Windows монтирует подключаемые устройства на произвольную букву, то практически через раз приходится исправлять ситуацию через “Управление дисками”. В Linux такого бы не происходило (беда вот только, что версии Picasa для Linux не существует ).
/mnt – точка временного монтирования файловых систем. Используется в основном системными администраторами для выполнения неких действий с файлами подключенного устройства хранения.
/opt – каталог зарезервирован для установки дополнительных пакетов программного обеспечения. Например, если установить на компьютер с Linux хорошо всем известную программу Google Eatch, то ее файлы окажутся в папке /opt/google/earth/free/. В /opt обычно размещаются пакеты проприетарного ПО.
/proc – точка монтирования виртуальной файловой системы procfs, которая позволяет создавать двухуровневое представление пространств процессов. В корне этого каталога размещаются файлы, предоставляющих самые разнообразные сведения о системе, а не только о процессах.
/root – домашний каталог суперпользователя root. В отличие от домашних каталогов рядовых пользователей (/home) всегда размещается в корне файловой системы, то есть не может быть перемещен на другой раздел.
В этой связи уместно вспомнить, что применительно к переносу профилей пользователей в Windows я также рекомендовал всегда оставлять каталог администратора на загрузочном диске.
Такой подход определенным образом гарантирует доступность системы для администрирования.
/run – централизованное хранилище временных файлов, необходимых для запуска служб на ранних стадиях загрузки системы. Такие файлы проблематично размещать в каталоге /tmp в силу того, что в нем они могут быть удалены.
Каталог /run появился в Linux совсем недавно, буквально пару лет назад.
/sbin – аналог каталога /bin. В нем находятся исполняемые файлы, используемые для задач системного администрирования. Например, ifconfig, iptables и др.
/srv – каталог, в котором размещаются файлы сервисов, предоставляемых системой. Если таких сервисов нет, то данный каталог пуст.
/sys — точка монтирования виртуальной файловой системы sysfs, расположенной в памяти. Предоставляет пользователю детализированную информацию о работе ядра системы, например, о загруженных модулях, параметрах и драйверах устройств.
Появилась относительно недавно с целью упорядочить и отделить от /proc информацию о структурах ядра.
/tmp – каталог для размещения временных файлов. Аналог папки C:/Windows/Temp в операционной системе Windows.
/usr – каталог, в котором расположены приложения и файлы, используемые пользователями. Может быть не только размещен на другом диске, но и смонтирован по сети. Может быть общим для нескольких компьютеров (аналога в ОС Windows не существует).
В каталоге /usr расположены папки /usr/bin, /usr/sbin и /usr/lib. Их назначение аналогично рассмотренным выше одноименным каталогам с той разницей, что размещенные в них файлы относятся к пользовательским, а не к системным приложениям.
Все пользователи, кроме суперпользователя root, имеют разрешение только на чтение.
/var – каталог для хранения постоянно изменяемых данных. Его назначение аналогично каталогу /usr, но в отличие от него в /var данные можно записывать. Так например, журнальные файлы расположены в /var/log.
/lost+found — файлы, на которые нет ссылок ни из одной директории. Могут появиться в результате какого-либо системного сбоя, например, из-за выключения питания в момент удаления файла. При появлении таких файлов пользователь может проанализировать их содержимое и принять решение о том, что с ними делать.
После появления в операционной системе Linux журналируемыех файловых систем, таких как, например, ext3 и ext4, потерянных файлов стало значительно меньше благодаря возможности отката незавершенных файловых операций.
/home – каталог, в котором размещаются домашние папки пользователей.
Описание каталога /home было перенесено в завершающую часть статьи намеренно. В конечном счете интересовать нас в ближайшее время будет именно он.
В Домашних папках хранятся не только файлы пользователей, с которыми они непосредственно работают (их при желании можно разместить и в другом месте), но, главное, вся пользовательская часть конфигурационных файлов — настройки программ, настройки интерфейса и учетные данные.
Так как Linux является многопользовательской системой, каждый пользователь имеет уникальную домашнюю папку. Как мы уже говорили выше, домашняя папка суперпользователя root находится в другом месте в корне файловой системы.
Конкретный пользователь имеет доступ на запись только в своем домашнем каталоге. Для изменения других файлов в системе ему должны быть предоставлены права пользователя root.
Теперь о самом главном. Содержимое каталога /home не только может быть перенесено на отдельный раздел жесткого диска, но более того, это настоятельно рекомендуется делать. В качестве аргументов обычно называют безопасность операционной системы и сохранность пользовательских данных.
Такое разделение пользовательских данных и файлов операционной системы упрощает резервирование и повышает надежность самой операционной системы. И это совершенно справедливо. Но это еще не все.
О том, какие уникальные возможности предоставляет жесткое разделение пользовательских данных и операционной системы мы поговорим в следующих публикациях.
В заключение еще один очень простой опрос. И пользуясь моментом хочу поблагодарить всех, кто уже поучаствовал в первом опросе о причинах использования 32-разрядных операционных систем.
Источник