Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Файловая система Linux глазами Windows-пользователя

Шапошникова С. В.


Ищем отличия
        Типы файловых систем
        Дерево, а не деревья
        Типы файлов
        Понятие жесткой ссылки
        Регистр букв имеет значение

Выясняем, что где лежит

Осваиваемся на новом месте (монтирование)

Ищем отличия

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

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

Файловые системы Linux и Windows имеют с обоих "сторон" некоторые отличия. Рассмотрим их.

Типы файловых систем

Linux и Windows используют разные файловые системы для хранения и организации доступа к информации на дисках.

Как вы наверно знаете, на сегодняшний день для Windows наиболее распространенными системами являются FAT 32 и NTFS. NTFS - более "продвинутая" система, одной из особенностей которой является обеспечение более высокой скорости работы на дисках относительно больших размеров. Однако NTFS несовместима с Windows 98 и более ранними версиями Windows.

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

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

Следует отметить, что Linux поддерживает и множество других файловых систем. Таким образом, в Linux можно организовать доступ к Windows-разделам, а вот в Windows, без посторонних средств помощи, "увидеть" разделы Linux невозможно.

Дерево, а не деревья

Теперь вернемся к файловой структуре. В обоих системах она является иерархической (обычно сравнивают с деревом). Однако есть и существенные отличия.

В операционной системе Windows, открывая каталог "Мой компьютер", пользователь привык наблюдать примерно следующую картину. Обычно один или более жестких дисков (чаще всего логических) именуются начиная с латинской буквы C. Каждый из дисков является корневым каталогом. Так например, если в системе имеется три диска, то будет три корневых каталога (скорее всего, C, D и E), каждый из которых содержит вложенные папки и файлы. Другими словами, в системе будут существовать три дерева. Поскольку иногда придется пользоваться компакт-дисками и USB-устройствами, то периодически будет "вырастать" еще парочка деревьев.

В дистрибутивах Linux все несколько иначе. Файловая система едина и имеет лишь один корневой каталог, который обозначается косой чертой - слэш (/). (Здесь следует обратить внимание на отличие от Windows. В последней при формировании полного адреса используется обратная косая черта (\). В Linux при формировании полного имени всегда используется слэш.)

Итак, если в Linux всего лишь один корневой каталог, то где же искать логические и физические диски. Ведь по логике вещей (как размышляет windows-пользователь) они "самые главные" и содержат каталоги и файлы, а раз их нет, то возможно система их "не увидела"!? Linux вынуждает поменять такое представление на организацию файловой структуры. Можно сказать, что в файловой структуре Linux не диск содержит каталоги, а каталоги могут содержать диски. Другими словами, внутри каталога могут "лежать" целые диски или их разделы.

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

Типы файлов

Услышав о типах файлов, пользователь Windows может заподозрить, что речь пойдет о так называемых расширениях (части имени файла, которая указывает на тип данных, содержащихся в файле). Например, в Windows распространенными являются такие типы как "текстовый документ" (расширение TXT), "документ MS Word" (DOC), "точечный рисунок" (BMP) и многие другие. Смысл наличия расширений в том, что они позволяют по имени определить тип данных файла.

В дистрибутивах Linux расширения также используются, однако не являются обязательными. В Linux, говоря о типах файлов, имеют ввиду совсем иное. Здесь все содержимое файловой системы рассматривается как файлы и введение понятия "тип" есть необходимость определить, что есть файл с данными, а что каталог, физическое устройство или др.

Первый тип - это обычные файлы с данными, которые интерпретируются той или иной прикладной программой. Т.е это обычные пользовательские файлы, знакомые юзерам Windows.

Часто в операционной системе Windows каталоги (директории) называют папками и, желая объяснить принцип иерархического устройства системы, говорят, что файлы лежат в папках, как если бы в реальной папке лежали бы реальные документы. На самом деле каталоги - это тоже файлы, содержащие списки ссылок на файлы с данными или другие каталоги, которые пользователь видит как содержимое данного каталога (хотя на уровне физического устройства расположение этих файлов никак не связано "общими узами"). Итак, второй тип файла - это каталоги.

В операционной системе Windows существует понятие "ярлык", который представляет собой указатель на файл. Каждый файл в Windows может иметь только один значок (и одно имя) и неограниченное количество ярлыков. Это очень удобно, если доступ к какому-либо файлу необходимо организовать из разных каталогов. Нечто подобное есть и в Linux и называется символическая (или мягкая) ссылка. Это также отдельный тип файла, который содержит информацию, где на самом деле находится запрашиваемый объект.

Кроме рассмотренных выше, существуют и другие типы файлов: это файлы устройств, сокеты и каналы.

Понятие жесткой ссылки

Новым для пользователя Windows будет понятие жесткой ссылки. Для сравнения, можно сказать так: в Windows существует лишь одно имя у каждого файла, в Linux же их может быть больше. Причины данного "явления" кроются с следующем.

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

Файл не будет удален из системы пока будет существовать хоть одна жесткая ссылка на него.

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

Регистр букв имеет значение

В отличие от Windows в Linux различаются прописные и строчные буквы в именах файлов и каталогов (и не только в них).

Так, если в одном и том же каталоге в Windows попытаться создать два файла: readme.txt и Readme.txt, то ничего не выйдет. Для данной операционной системы оба этих имени идентичны и, поскольку файлов с одинаковыми полными именами (одинаковыми адресами и именами) быть не может, то система откажется создать в одном каталоге файлы readme.txt и Readme.txt. В Linux же такое возможно, т.к. для данной системы это разные имена.

Выясняем, что где лежит

Системный диск в Windows XP (тот, на который установлена операционная система, чаще всего - диск C) обычно содержит всего три папки: Windows, содержащую файлы самой операционной системы, Program Files - файлы установленных в системе приложений, Documents and Settings - файлы пользователей. А вот в Linux в корневом каталоге существует больше десятка директорий.

Несмотря на такое многообразие, в файловой системе Linux все упорядочено и <лежит> на своем месте. Каждый каталог имеет свое назначение, которое регламентируется документом под название FHS (Filesystem Hierarchy Standart - стандарт структуры файловой системы).

Вот краткое описание содержания основных каталогов согласно данному стандарту.

/bin -
Содержит исполняемые файлы самых необходимых для работы системы программ. Каталог /bin не содержит подкаталогов.

/boot -
Здесь находятся само ядро системы (файл vmlinuz-...) и файлы, необходимые для его загрузки.

/dev -
Каталог /dev содержит файлы устройств (драйверы).

/etc -
Это каталог конфигурационных файлов, т.е. файлов, содержащих информацию о настройках системы (например, настройки программ).

/home -
Содержит домашние каталоги пользователей системы.

/lib -
Здесь находятся библиотеки (функции, необходимые многим программам).

/media -
Содержит подкаталоги, которые используются как точки монтирования для сменных устройств (CD-ROM'ов, floppy-дисков и др.)

/mnt -
Данный каталог (или его подкаталоги) может служить точкой монтирования для временно подключаемых файловых систем.

/proc -
Содержит файлы находящиеся не на диске, а в оперативной памяти (виртуальные файлы) и содержащие информацию о выполняющихся в системе процессах.

/root -
Это домашний каталог администратора системы.

/sbin -
Содержит исполняемые программы, как и каталог /bin. Однако использовать программы, находящиеся в этом каталоге может только администратор системы (root).

/tmp -
Каталог для временных файлов, хранящих промежуточные данные, необходимых для работы тех или иных программ, и удаляющиеся после завершения работы программ.

/usr -
Каталог для большинства программ, которые не имеют значения для загрузки системы. Структура этого каталога фактически дублирует структуру корневого каталога.

/var -
Содержит данные, которые были получены в процессе работы одних программ и должны быть переданы другим. Также содержит журналы со сведениями о работе системы.

 

Остановимся по-подробнее на двух достаточно важных для пользователя каталогах: /home и /mnt (и/или /media). Важны они потому, что почти любой пользователь в процессе своей работы на компьютере будет сохранять данные, а также может уже иметь необходимые ему файлы, доступ к которым желательно обеспечить.

В операционных системах на базе ядра Linux при создании пользователей автоматически в каталоге /home создаются домашние директории. Сколько пользователей зарегистрировано в системе, столько и будет подкаталогов в /home. Имена этих подкаталогов обычно совпадают с логинами (регистрационными именами) пользователей. Аналогом такого каталога в операционной системе Windows является папка <Мои документы>. И в Linux и в Windows в эти каталоги по умолчанию сохраняются все пользовательские файлы. Однако в Linux, помимо файлов, которые создал сам пользователь, сохраняются еще и файлы всех его настроек для различных программ (обычно эти файлы являются скрытыми). Внутри /home/userX присутствует каталог Desktop - это каталог "рабочего стола".

Каталог /mnt согласно стандарту FHS должен использоваться для временного подключения иных файловых систем. Что значит временного? Скорее всего это значит, что администратор системы в случае необходимости монтирует тот или иной диск. Затем, после того как раздел будет не нужен, отсоединяет его. Но если прописать соответствующую строчку в файле /etc/fstab, то раздел жесткого диски будет монтироваться автоматически при загрузке системы. Возникает вопрос: можно ли считать это временным подключением? Каталог /media (как было указано выше) предназначен для монтирования сменных накопителей. На сегодняшний день (2007 г.) многие дистрибутивы автоматически монтируют как разделы жесткого диска, так и сменные устройства в каталоги /mnt и /media. Однако, практически, монтирование разделов можно организовать в почти любой каталог.

Осваиваемся на новом месте (монтирование)

Итак, в Linux каждый пользователь системы имеет свой системный каталог, где по идеи и должен хранить свои файлы. Но что делать, если на жестком диске компьютера уже есть раздел с файлами пользователя, а система автоматически не подключила этот диск. Попробуем составить "средне-статистический" алгоритм решения данной проблемы.

  1. Первое, что потребуется пользователю для решения проблем подобного рода (администрирования системы) - это знание пароля root'а (суперпользователя, администратора системы).

  2. Необходимо также знать как запустить командную оболочку в графической среде, или как переключиться в текстовый режим работы.
    Для работы с командной оболочкой в графическом режиме необходимо запустить приложение Терминал, которое можно найти в одном из пунктов главного меню (Стандартные или Система)
    Для перехода в текстовый режим работы используются комбинации клавиш от Ctrl+Alt+F1 до Ctrl+Alt+F6. Для возврата в графический режим - Ctrl+Alt+F7.

  3. Следует разобраться в структуре своего жесткого(их) диска(ов) и выяснить имя раздела, который будет подключаться к системе (а также тип его файловой системы).
    Например, если имеется один жесткий диск на IDE контроллере, то начало имен всех разделов этого устройства будет hda. Далее к буквенной части имени дописывается цифра, обозначающая номер раздела. Первичные разделы нумеруются от 1 до 4, части первичного расширенного раздела - от 5 и далее.
    Если, работая непосредственно под root'ом, написать (дать команду)
    fdisk -l в командной оболочке, то можно увидеть список всех разделов диска. Существуют также приложения отражающие разделы диска в графическом режиме (например, Обзор оборудования).

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

  1. В приложении Терминал необходимо дать команду su (т.е. набрать ее и нажать Enter). Далее будет предложено ввести пароль root'a. Ввести пароль (при этом символы не будут отображаться) и нажать Enter. Если все сделано правильно, то в приглашении командной оболочки помимо прочего появится слово root. Это будет означать, что конкретному пользователю на данный момент предоставлены права администратора.

  2. Теперь необходимо определиться с точкой монтирования раздела. Допустим, это будет подкаталог winsave стандартного для этих целей каталога /mnt.
    Для создания каталогов используется команда mkdir. Полная команда в данном случае будет такой:
    mkdir /mnt/winsave
    Если команда выполнена правильно, то никаких сообщений не появится, и следующая строка снова начнется с приглашения.

  3. После того, как готова точка монтирования можно приступить непосредственно к подключению раздела. Монтирование устройств выполняется с помощью команды mount.
    Эта команда имеет достаточно много параметров, но в данном примере будут использоваться только три. Это указания 1) типа файловой системы подключаемого раздела, 2) имени файла устройства (в данном случае, раздела диска), и 3) имени каталога - точки монтирования.
    Скорее всего бывшему пользователю Windows потребуется подключить какой-нибудь win-раздел (например, бывший диск D). Если подключаемый раздел имеет файловую систему FAT 32, то в качестве первого параметра пишется vfat (если NTFS, то ntfs).
    Поскольку файлы устройств содержит каталог /dev, то полное имя, например, пятого раздела первого IDE-диска будет /dev/hda5.
    В итоге получаем такую команду:
    mount -t vfat /dev/hda5 /mnt/winsave
    В команде используется ключ -t, т.к. явно указывается тип файловой системы.

Если все получилось правильно, то пользователь, открыв каталог /mnt/winsave, увидит там свои любимые файлы, чему несомненно будет рад.

Однако после перезагрузки операционной системы раздел снова придется монтировать (выполнять команду mount). Можно обеспечить и автоматическое монтирование раздела при загрузке системы. Для этого редактируется конфигурационный файл /etc/fstab, который содержит список файловых систем, которые могут быть смонтированы.

  1. Конфигурационные файлы содержат текстовые данные, следовательно, редактируются в текстовом редакторе. Распространенными текстовыми редакторами Linux для графических сред являются gedit и kwrite. Эти редакторы не сильно отличаются от Блокнота Windows (но превосходят его по возможностям). Команда для открытия текстового файла может выглядеть так:
    gedit /etc/fstab

  2. Записи в файле fstab построчные, и каждая строка соответствует одной точке монтирования. Строка обычно состоит из следующих записей: имени файла устройства, точки монтирования, типа файловой системы, параметров, уровня дампа, порядкового номера файловой системы для программы fsck. Строка, введенная пользователем, может выглядеть примерно так:
    /dev/hda5 /mnt/winsave vfat iocharset=utf8, codepage=866 0 0
    (Жирным выделены поля, которые должны быть прописаны обязательно.)

Примечание. Если файловая система монтируется <насовсем>, то можно пропустить п. 6 и сразу перейти к п. 7 и 8. Однако раздел при этом станет доступным только после перезагрузки системы.


Литература и другие источники:

  1. Лебланк, Д-А., "Linux для "чайников". М: Издательский дом "Вильямс", 2005. - 336 с.: ил.
  2. Немет Э., Снайдер Г., Хейн, Т. "Руководство администратора Linux". М: Издательский дом "Вильямс", 2005. - 880 с.: ил.
  3. Костромин В. А. Основы работы в ОС Linux.
  4. Курячий Г. В., Маслинский К. А. Операционная система Linux.
  5. Filesysten Hierarchy Standard