Файловая система Linux и структура каталогов
В сегодняшней статье своего блога k-max.name я бы хотел поделиться с общественностью описанием структуры файловой системы в ОС Linux, а так же описанием основных каталогов, их назначения и использования в операционной системе.
Введение в файловую систему
Операционная система (далее – ОС) Linux поддерживает множество файловых систем, в настоящее время наиболее широко используются: ext2, ext3,ext4, reiserfs. Так же, современные ОС Linux совместимы с файловыми системами (ФС далее), используемыми ОС Windows, такими как NTFS и FAT32, но использование данных ФС в Linux крайне не желательно по причине того, что данные ФС разрабатывались под ОС Windows и поддержка Windows-разделов ядром Linux реализована с помощью сторонних утилит/драйверов/модулей, что накладывает некоторые ограничения (например, согласно проекту Linux-NTFS на момент написания статьи на разделах с NTFS поддерживается практически только чтение (запись — лишь в существующие файлы без изменения их размера), так же ОС Linux не имеет возможности разграничивать права доступа к файлам на разделах NTFS. Данная ситуация со временем может поменяться.
Базовые понятия
Начну с общей структуры файловой системы. ФС Linux/UNIX физически представляет собой пространство раздела диска разбитое на блоки фиксированного размера, кратные размеру сектора — 1024, 2048, 4096 или 8120 байт. Размер блока указывается при создании файловой системы.
Управлением обмена данными между ядром/приложениями и собственно байтами на диске занимается 2 базовых технологии, называемые виртуальная файловая система (VFS) и драйверы файловых систем. Виртуальная файловая система – это часть ядра linux, которая является неким абстрактным слоем (интерфейсам взаимодействия, если хотите) между ядром и конкретной реализацией файловой системы (ext2, fat32…). Данная технология позволяет ядру и приложениям взаимодействовать с файловой системой не учитывая подробностей работы конкретной файловой системы и управлять файловыми операциями с помощью типовых команд – прозрачно. Часто, VFS называют виртуальный коммутатор файловых систем. Виртуальная файловая система так же осуществляет стыковку блочных устройств с имеющимися файловыми системами.
Список поддерживаемых Вашим ядром Linux файловых систем можно увидеть в файле /proc/filesystems.
Структура каталогов и другие базовые понятия
Структуру каталогов, в общем случае можно представить в виде следующей схемы:
Данная схема отображает то, что у одного объекта файловой системы (файла) может быть несколько путей. Грубо говоря, несколько файлов в структуре каталогов Linux могут быть физически одним файлом на диске. Или же другими словами, 1 физический файл на диске может иметь несколько имен (путей). Это достигается тем, что в файловой системе каждый файл идентифицируется уникальным номером, называемым Inode (инод = Индексный дескриптор).
Отсюда можно сделать вывод, что структура файловой системы отчасти иерархична. Или лучше сказать – “перекрестно-иерархическая”, потому что дерево иерархии за счет того, что один объект может иметь несколько путей, может пересекаться.
В файловой структуре Linux имеется один корневой раздел – / (он же root, корень). Все разделы жесткого диска (если их несколько) представляют собой структуру подкаталогов, “примонтированых” к определенным каталогам, схематично это можно представить следующим образом:
/- |-/etc-|-/etc/X11-|-/etc/X11/xinit.d | | |-... | |-files | |-... |-/opt |-/home <- |-/user1-|-/user1/Desktop # примонтированный раздел ext3, | | |-/user1/Documents # содержащий свое дерево каталогов | | |-... # (/home - точка монтирования) | |-/user2 | |-.... |-/usr |-/var
Операция монтирования служит для того, чтобы сделать доступной файловую систему, расположенную на каком-либо блочном устройстве. Суть операции монтирования заключается в том, что ядро ассоциирует некоторый каталог (называемый точкой монтирования) с устройством, содержащем файловую систему и драйвером файловой системы. Для этого оно передает ссылку на блочное устройство – драйверу файловой системы, и в случае, если драйвер успешно проидентифицировал эту файловую систему, ядро заносит в специальную таблицу монтирования информацию о том, что все файлы и каталоги, чей полный путь начинается с указанной точки монтирования, обслуживаются соответствующим драйвером файловой системы и расположены на указанном блочном устройстве. Посмотреть таблицу примонтированных файловых систем можно через файл /proc/mounts.
Примечание. Вообще говоря, привязываться к блочному устройству в данном случае не обязательно. Устройство, которое монтируется может быть не только блочным. Может быть, например, сетевым (если монтируется NFS или SMB\CIFS).
Посмотреть сколько файл имеет ссылок и инод файла можно командой:
[mc-sim@ASUS /]$ ls -li 193 drwxr-xr-x 1 mc-sim root 368 Mar 30 2008 bin 1 drwxr-xr-x 1 mc-sim root 0 Jan 1 1970 dev 197 lrwxrwxrwx 1 mc-sim root 7 Mar 30 2008 etc -> tmp/etc ....
в приведенном примере первый столбец (значения 193,1,197) есть инод, а третий столбец (значения 1) есть количество ссылок на файл (читаем: путей файла).
Инод, как уже говорилось, уникален в пределах определенной файловой системы и содержит следующую информацию:
- о владельце объекта ФС
- последнем времени доступа
- размере объекта ФС
- указании файл это или каталог
- права доступа
При перемещении файла утилитой mv в пределах одной файловой системы, инод файла остается неизменным (меняется только поле, описывающее имя путь файла), при перемещении файла в другую файловую систему сначала создается новый inod, а затем удаляется исходный.
Так же хочу отметить, что в линукс существует 2 вида ссылок:
- Жесткая ссылка (она же Хардлинк, Hard-Link) – это собственно и есть один их путей файла (который указывается в команде ls -li), хорошо представлена жесткая ссылка в википедии:
- Символьная (она же Симлинк от англ. Symbolic link, символическая ссылка) – это файл UNIX, содержащий в себе лишь текстовую строку – путь к оригинальному файлу, на который собственно ссылается.
Файл в Linux существует пока на inod существует хотя бы одно указание (1 путь/имя), как только из системы удаляется последнее указание на inod, блоки, занимаемые файлом с данным inod “переходят” в свободный список (список блоков, доступных для выделения на диске). То есть блоки становятся свободным местом на диске.
В ФС UNIX есть такое понятие как суперблок. Суперблок – это своеобразный аналог FAT таблицы в ФС FAT32. Суперблок содержит в себе следующую информацию о файловой системе:
- общее число блоков и индексных дескрипторов в файловой системе;
- число свободных блоков и индексных дескрипторов в файловой системе;
- размер блока файловой системы;
- количество блоков и индексных дескрипторов в группе;
- размер индексного дескриптора;
- идентификатор файловой системы.
Суперблок размещается в первых 1024 байтах раздела, от его целостности зависит работоспособность ФС. ОС создает несколько копий суперблока для восстановления в случае повреждения оригинального и размещает их (копии) различных областях жесткого диска.
При загрузке, ядро ОС Linux после монтирования корневого раздела на чтение, автоматически примонтирует остальные разделы жесткого диска. Какие разделы необходимо примонтировать, ядро берет из конфигурационного файла /etc/fstab. Пример и описание файла fstab:
root@pinguino:~# cat /etc/fstab # /etc/fstab: sttic file system information. # # proc /proc proc defaults 0 0 /dev/hda6 / reiserfs defaults 0 1 /dev/hda2 /boot ext3 defaults 0 2 /dev/hda8 /dos vfat defaults 0 0 /dev/hda7 /home xfs defaults 0 2 /dev/hda1 /media/hda1 ntfs defaults 0 0 /dev/hda5 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Более современный вариант:
[mc-sim@proxy 103]$ cat /etc/fstab proc /proc proc nosuid,noexec,gid=proc 0 0 devpts /dev/pts devpts nosuid,noexec,gid=tty,mode=620 0 0 tmpfs /tmp tmpfs nosuid 0 0 UUID=334fcb12-840a-474a-b278-089e86e6ad80 / ext3 relatime 1 1 UUID=9bece036-5ecf-4440-ab51-00cd6c91b0b5 /home ext3 nosuid,relatime,usrquota,grpquota 1 2 UUID=970184c4-6e91-4e6f-9681-bc1592dbb742 /var ext3 nosuid,relatime 1 2 UUID=51318836-8b03-40e6-95a2-80498ab6e5db /var/cache/squid ext3 nodev,noexec,nosuid,relatime,usrquota,grpquota 1 2 UUID=1d50cadf-78ac-478a-a264-85dd64fd947b swap swap defaults 0 0 /dev/sr0 /media/cdrom udf,iso9660 ro,noauto,user,utf8 0 0
Присмотревшись, можно увидеть, что в более современном варианте, устройства монтируются не по адресу устройства, а по UUID (идентификатору устройства). Это позволяет в случае смены жесткого диска, не перенастраивать fstab, а просто присвоить новому диску имеющийся UUID.
Строки, начинающиеся символом #, являются комментариями. Остальные строки содержат шесть полей. Поскольку эти поля позиционные, все они должны быть заполнены.
- file system
- Монтируемое блочное устройство (файловая система). Точнее сказать – указание пути к блочному устройству. Для файловых систем ext2, ext3, xfs и др. поддерживающих данную возможность, можно вместо этого указывать метку тома, например:
LABEL="scsiboot"
, либо идентификатор UUID блочного устройства. Это делает систему более устойчивой при установке и удалении устройств. Точка монтирования (каталог) должна существовать для корректного монтирования. - mount point
- Это точка монтирования. Это путь, куда будет примонтирована файловая система file system. Для пространства подкачки это поле имеет значение
none
. - type
- Определяет тип файловой системы. CD/DVD-диски часто имеют разные файловые системы – ISO9660 или UDF – поэтому вы можете перечислить различные возможности в виде списка, разделенного запятыми. Если вы хотите, чтобы
mount
автоматически определила тип, используйтеauto
, как сделано в последней строке для дискеты. - option
- Определяет параметры монтирования. Опции монтирования – это специальные параметры, которые влияют на работу драйвера файловой системы, когда он работает с файловой системой на соответствующем блочном устройстве – например, с помощью опций монтирования можно управлять режимом кэширования данных, преобразованиями имен файлов и данных, включать и отключать поддержку ACL и т.д. Для монтирования со значениями по умолчанию используйте
defaults
. Несколько полезных опций:
rw
иro
указывают монтирование файловой системы в режиме чтения/записи или только для чтения.noauto
указывает, что файловая система не должна автоматически монтироваться при загрузке или при выдаче командыmount -a
. В нашем примере эта опция применена для съемных устройств.owner
определяет, что пользователь, не имеющий прав root, может монтировать данную файловую систему (только если он является владельцем устройства) и демонтировать может только тот, кто смонтировал. Это особенно полезно для съемных носителей. Эта опция должна быть задана в /etc/fstab, а не в командеmount
.user
определяет, что пользователь, не имеющий прав root, может монтировать данную файловую систему и демонтировать может только тот, кто смонтировал. Это особенно полезно для съемных носителей. Эта опция должна быть задана в /etc/fstab, а не в командеmount
.users
определяет, что любой пользователь, не имеющий прав root, может монтировать данную файловую систему и демонтировать. Это особенно полезно для съемных носителей. Эта опция должна быть задана в /etc/fstab, а не в командеmount
.exec
илиnoexec
определяют, позволять ли исполнение файлов из данной файловой системы. Для файловых систем, монтируемых пользователем, по умолчанию устанавливается значениеnoexec
, если только после поляuser
не указаноexec
.noatime
отключает запись атрибута времени доступа к файлу. Это может повысить производительность.nosuid
устанавливает запуск исполняемых suid – файлов без повышения прав.
- dump
- Определяет, будет ли команда
dump
включать данную файловую систему ext2 или ext3 в резервные копии. Значение 0 означает, чтоdump
игнорирует данную файловую систему. - pass
- Ненулевые значения pass определяют порядок проверки файловых систем во время загрузки
В файловой системе Linux существуют следующие типы файлов:
- обычные файлы (текстовые, картинки и т.п.)
- каталоги (это тоже тип файла, который содержит в себе список файлов, принадлежащий “себе”)
- блочные устройства (представляют собой “драйверы” устройств, позволяющие взаимодействовать с устройством. Блочное устройство производит чтение\запись в устройство блоками. Пример устройства: жесткие диски, дискеты и т.п.)
- символьные устройства (представляют собой “драйверы” устройств, позволяющие взаимодействовать с устройством. Символьное устройство представляет собой любое не блочное устройство. Пример устройства: терминалы, принтеры и т.п.)
- символические ссылки
- PIPE (FIFO)
- гнезда (socket)
Тип файла в каталоге можно посмотреть командой ls с параметром -l.
Далее пойдет речь о стандартных каталогах Linux и назначении данных каталогов:
. | ссылка на текущий каталог. Данный элемент есть в каждом каталоге файловой структуры. | ||
.. | ссылка на родительский каталог. Данный элемент есть в каждом каталоге файловой структуры. (в корне – / данный элемент указывает на саму корневую систему) | ||
/ | корневой каталог ФС, сюда “завязаны” все остальные подкаталоги первого уровня | ||
/bin/ | Бинарные программы, основные программы для работы в системе: командные оболочки, файловые утилиты и.т.д. | ||
/boot/ | статичные файлы загрузчика (образ ядра, файлы GRUB, LILO) | ||
|– | /grub/ | Каталог конфигурационных файлов загрузчика GRUB | |
|– | /lilo/ | Каталог конфигурационных файлов загрузчика LILO | |
| | config-kern_ver | файл текущей конфигурации ядра | |
| | initrd.img-kern_ver | загрузочный образ инициализации initrd | |
| | vmlinuz-kern_ver | образ ядра Linux | |
/dev/ | каталог, содержащий файлы устройств. В Linux вообще всё рассматривается, как файл, даже различные устройства, такие как принтеры, жёсткие диски, сканеры и т.д. Для получения доступа к определённому устройству, необходимо чтобы существовал специальный файл. Аналогично устроено большинство UNIX-подобных операционных систем |
||
|– | /pts/ | фиктивная файловая система, представляющая собой файловую структуру, которая отражает псевдотерминалы пользователей вошедших в систему | |
| | |– | 0 | устройство псевдотерминала pts/0 |
| | |– | 1 | устройство псевдотерминала pts/1 |
| | — | n | устройство псевдотерминала pts/n |
|– | null | т.н. “черная дыра” или “урна для битов”. Вся информация, отправляемая на данное устройства – пропадает/уничтожается. | |
— | zero | “генератор нулей” | |
/etc/ | Системные конфигурационные файлы, стартовые сценарии, конфигурационные файлы графической системы и различных приложений. Из данного каталога хотелось бы выделить следующие файлы: | ||
|– | /default/ | содержит системные Файлы конфигураций в дистрибутивах Debian (аналог /etc/sysconfig/ в RedHat) | |
|– | /logrotate.d/ | директория конфигурационных файлов демона автоматической обработки логов; | |
| | |– | apache | конфигурация логирования apache |
| | |– | squid | конфигурация логирования apache |
| | |– | syslog | конфигурация логирования системных логов |
| | — | … | |
|– | /pam.d/ | каталог содержит файлы конфигурации PAM (указывают методы аутентификации в приложениях, использующих PAM) | |
|– | /ppp/ | директория содержит конфигурации PPP-соединений: | |
| | |– | options | содержит общую для всех PPP-соединений конфигурацию; |
| | |– | options.* | конфигурация конкретно взятого соединения (например модемное options.ttyS1) |
| | |– | ip-up | скрипт выполняемый при/для соединения (демоном pppd); |
| | — | ip-down | скрипт выполняемый при/для разъединении (демоном pppd). |
|– | /rc.d/ | директория системы инициализации init (в стиле UNIX) (содержит сценарии инициализации) | |
| | |– | /init.d/ | содержит скрипты, для управления системными демонами (сервисами); |
| | — | /rcX.d/ | директории уровней запуска X, содержат ссылки на скрипты в init.d; |
|– | /samba/ | содержит файлы конфигурации samba: | |
| | |– | smb.conf | главный конфигурационный файл SAMBA; |
| | |– | smbusers | описывает соответствие SAMBA пользователей к системным пользователям; |
| | — | smbpasswd | содержит хеши пользователей SAMBA, пароли устанавливаются утилитой smbpasswd. |
|– | /ssh/ | Каталог конфигурации демона sshd | |
| | |– | ssh_config | Конфигурационный файл ssh клиента |
| | — | sshd_config | Конфигурационный файл ssh – сервера |
|– | /sysconfig/ | содержит системные Файлы конфигураций в дистрибутивах RedHat (аналог /etc/default/ в Debian) | |
| | |– | keyboard | описание текущей раскладки клавиатуры; |
| | |– | desktop | установки графической среды (KDE,GNOME..); |
| | |– | network | файл конфигурации сетевой подсистемы |
| | — | i18n | конфигурация общесистемной локали (локаль отдельных пользователей может содержаться в {home}/i18n); |
|– | /security/ | содержит Файлы описывающие безопасность системы: | |
| | |– | console.perms | правила изменения прав доступа к устройствам, при аутентификации; |
| | |– | limits.conf | конфигурация лимитов пользователей. |
| | — | network | конфигурация сети; |
|– | /skel/ | шаблон директории пользователя (в момент создания пользователя содержимое директории пользователя копируется отсюда), своеобразный аналог каталога C:\Documents and settings\Default User\ в Windows. | |
|– | /xinetd.d/ | директория содержит файлы конфигураций отдельных сервисов для суперсервера xinetd; | |
|– | /X11/ | /fs/config | содержит перечень каталогов со шрифтами для X; |
| | |– | XF86Config | Файл конфигурации X (XFree86); |
| | — | xorg.conf | Файл конфигурации X (XOrg); |
|– | at.allow | Список пользователей, разрешающий (allow) или запрещающий (deny) выполнение утилиты at | |
|– | at.deny | ||
|– | cron.allow | Список пользователей, разрешающий (allow) или запрещающий (deny) выполнение утилиты cron | |
|– | cron.deny | ||
|– | anacrontab | конфигурация задач выполняемых anacron; | |
|– | crontab | конфигурация задач выполняемых cron; | |
|– | ethers | Файл соответствия аппаратных MAC адресов сетевым IP адресам в сети, в случае несоответствия доступ для хоста будет закрыт; | |
|– | export | конфигурация NFS-ресурсов доступных извне; | |
|– | filesystems | список ФС, поддерживаемых ядром (отсюда берется ФС, если она не указана в /etc/fstab) | |
|– | fstab | список ФС, монтирующихся автоматически при загрузке | |
|– | group | база данных групп пользователей в ОС | |
|– | gshadow | файл паролей групп пользователей | |
|– | hostname | текущее имя машины; | |
|– | hosts | перечень хостов и соответствующих им IP-адресов; | |
|– | host.allow | список хостов которым вход разрешен; | |
|– | host.deny | список хостов которым вход запрещен (для libc ver 5); | |
|– | host.conf | указывает где и в каком порядке искать имена хостов (для libc ver 6); | |
|– | inittab | конфигурация последовательности загрузки (для процесса init); | |
|– | inputrc | конфигурация ресурсов ввода с клавиатуры; | |
|– | issue | сообщение, выводимое при локальном подключении к системе | |
|– | issue.net | сообщение, выводимое при удаленном подключении к системе | |
|– | ld.so.conf | файл конфигурации, содержащий список каталогов, в которых ld.so ищет библиотечные файлы, кроме указанных путей, компоновщик ищет в каталогах /lib и /usr/lib | |
|– | ld.so.cache | кэш библиотечных файлов, для более быстрого поиска библиотек (своеобразный индекс) | |
|– | login.defs | описывает поведение login и su; | |
|– | logrotate.conf | конфигурация демона автоматической обработки логов (ротация, упаковка, удаление); | |
|– | lilo.conf | конфигурация boot-загрузчика LILO; | |
|– | man.conf | конфигурация системы страниц помощи, команда man; | |
|– | motd | сообщение, выводимое всем пользователям после ввода пароля и перед запуском интерпретатора, т.н. “сообщение дня” | |
|– | mtab | Список текущих примонтированных ФС. Обычно, этот файл должен создаваться, как только монтируется новая файловая система. | |
|– | netgroup | файл определяет сетевые группы, используемые для проверки прав доступа при выполнении удаленного входа. | |
|– | nologin | наличие этого файла запрещает пользователям входить в систему с выдачей сообщения в файле; | |
|– | nsswitch.conf | конфигурация последовательности поиска имен по различным источникам; | |
|– | passwd | база данных пользователей Linux | |
|– | printcap | Файл конфигурации принтеров; | |
|– | profile | сценарий-профиль для интерпретатора BASH (выполняется после регистрации в системе и используется для всех пользователей системы); | |
|– | protocols | файл описывает номера протоколов, названия и описания. | |
|– | resolv.conf | конфигурация резолвера имён, содержит список DNS-серверов; | |
|– | rpc | файл описывает службы RPC (соответствие имя сервера RPC, номер программы RPC и псевдонимы) | |
|– | services | содержит сопоставления номеров портов/сокетов именам служб | |
|– | shadow | файл зашифрованных паролей пользователей | |
|– | sysctl.conf | содержит команды для автоматической инициализации sysctl-параметров ядра; | |
|– | syslog.conf | конфигурация демона системного логера (syslogd); | |
|– | sudoers | указание на то какие пользователи и какие программы могут быть запущены с привилегиями root используя sudo. | |
— | xinetd.conf | конфигурация суперсервера Internet (централизованное управление сокетами/портами); | |
/home/ | {имя_юзера} | каталог, содержащий подкаталоги пользователей (настройки интерфейса, личные файлы) | |
|– | .bashrc | профиль конкретного пользователя для BASH (запускается при запуске bash или запуске копии bash ); | |
|– | .cshrc | профиль конкретного пользователя для TCSH; | |
|– | .bash_profile | профиль конкретного пользователя для BASH (запускается при каждом входе в систему). | |
|– | .inputrc | конфигурация ресурсы ввода с клавиатуры конкретного пользователя. | |
|– | .Xauthority | файл авторизации для запуска X-приложений удаленно, файлы на удаленных машинах должны соответствовать; | |
|– | .xinitrc | сценарий загрузки X сервера конкретного пользователя; | |
— | .plan .project .forward |
данные файлы используются утилитой finger для вывода информации о пользователе | |
/lib/ | Системные библиотеки, необходимые для программ и модули ядра. (В Windows библиотеки представляют собой dll модули) | ||
/lost+found | В lost+found скидываются файлы, на которых не было ссылок ни в одной директории, хотя их inod не были помечены как свободные. | ||
/media/ | Каталог для монтирования съемных носителей (CD, Flash) | ||
|– | /cdrom/ | ||
/mnt/ | В каталоге содержаться временные точки монтирования для устройств | ||
/opt/ | Дополнительные пакеты программ. Если программа установленная сюда больше не нужна, то достаточно удалить ее каталог без процедуры денсталляции. Сюда могут устанавливается программы не являющиеся частью дистрибутива. (например /opt/openoffice.org). | ||
/proc/ | Виртуальная ФС, хранящаяся в памяти компьютера при загруженной ОС. В данном каталоге расположены самые свежие сведения обо всех процессах, запущенных на компьютере. Содержимое каждого файла определяется в реальном времени. среди данного каталога, хотелось бы особо выделить следующие файлы и каталоги: | ||
|– | /net/ | ||
| | — | arp | текущая arp-таблица |
|– | /sys/kernel/ | ||
| | |– | cap-bound | управление дополнительными пра, как сделано в последней строке для дискеты.tr сценарий-профиль для интерпретатора BASH (выполняетсtd/tdtda name=”proc”я после регистрации в системе и используется для всех пользователей системы);вами (root) (0 – root права аннулируются); |
| | |– | hostname | текущее имя Компьютера |
| | |– | domainname | Имя домена компьютера |
| | |– | osrelease | версия ядра системы; |
| | |– | ostype | тип ОС (Linux, *BSD, …); |
| | — | version | дата сборки ядра. |
|– | cpuinfo | Текущая информация о процессоре | |
|– | cmdline | список параметров, переданных ядру при загрузке | |
|– | devices | системные устройства | |
|– | dma | Задействованные в данный момент DMA каналы | |
|– | interrupts | Счетчики количества прерываний IRQ в архитектуре i386. | |
|– | ioports | порты ввода/вывода | |
|– | filesystems | поддерживаемые ФС | |
|– | loadvg | информация о загруженности системы | |
|– | kcore | содержимое физической памяти в текущий момент | |
|– | kmsg | сообщения, выдаваемые ядром (копия syslog) | |
|– | mdstat | отображение статистики программных RAID массивов | |
|– | meminfo | информация о памяти | |
|– | modules | загруженные модули ядра | |
|– | mounts | смонтированные ФС | |
|– | partitions | информация о разделах дисков | |
|– | pci | Полный список всех PCI-устройств, найденных во время инициализации ядра, а также их конфигурация. | |
|– | swaps | информация о всех своп-разделах, подключенных к системе | |
|– | uptime | время работоспособности | |
|– | version | версия ядра | |
|– | /цифровые/ | каталоги, содержащие в названии наборы цифр, соответствуют GID -номеру процесса и содержат в себе информацию о работающем процессе, GIDу которого соответствует. | |
| | |– | /fd/* | содержит указатели на все, открытые процессом файлы |
| | |– | cmdline | полную командную строку запуска процесса до тех пор, пока процесс не будет “выгружен” или не станет “зомби” |
| | |– | cwd | символьная ссылка на текущий рабочий каталог процесса |
| | |– | environ | содержит окружение процесса |
| | |– | exe | содержит мягкую ссылку на бинарник процесса |
| | |– | limits | содержит информацию о лимитах процесса (например, лимит открытых файлов, приоритет процесса и т.п.) |
| | |– | root | мягкая ссылка на каталог пользователя root для процесса |
| | — | status | Информация о процессе, представленная в довольно удобном для просмотра виде. Она содержит, в частности, следующие строки:
|
/root/ | домашний каталог пользователя root, данный каталог должен быть в корневой ФС, чтобы администратор мог войти в нее. | ||
/sbin/ | В данном каталоге содержаться основные системные бинарники, команды для системного администрирования, а также программы, выполняемые в ходе загрузки ОС. Здесь находятся элементы, запускаемые в фоновом режиме, в каком то смысле данный каталог является аналогом папки c:\Windows\system\ и c:\Windows\system32\. | ||
— | shutdown | утилита остановки системы | |
/srv/ | данные предоставляемых сервисов от ОС | ||
/sys/ | это директория, к которой примонтирована виртуальная файловая система sysfs, которая добавляет в пространство пользователя информацию ядра Linux о присутствующих в системе устройствах и драйверах. (В версии ядра ниже 2.6 не использовалась) | ||
|– | /block/ | каталог содержит подкаталоги всех блочных устройств, присутствующих в данный момент в системе. | |
|– | /bus/ | В этом каталоге находится список шин, определенных в ядре Linux (eisa, pci и т.д.). | |
— | /class/ | Каталог содержит список группированных устройств по классам (printer, scsi-devices и т.д.). | |
/tmp/ | Временные файлы. Данный каталог аналогичен c:\Windows\temp. Обычно Linux очищает этот каталог во время загрузки. | ||
/usr/ | В данном каталоге хранятся все установленные пакеты программ, документация, исходный код ядра и система X Window. Все пользователи кроме суперпользователя root имеют доступ только для чтения. Может быть смонтирована по сети и может быть общей для нескольких машин. | ||
|– | /bin/ | Директория дополнительных программ для всех учетных записей. | |
|– | /include/ | Заголовочные файлы С++. | |
|– | /lib/ | Системные библиотеки для программ, расположенных в каталоге/usr | |
| | /local/ | По стандарту /usr должен быть общим для нескольких компьютеров и смонтирован по сети, а /usr/local должен содержать установленные пакеты программы только на локальной машине (к примеру, /usr – бюджет семьи, а /usr/local – личный кошелек каждого). Но чаще всего директория /usr/local используется для установки программ, которые не предназначены для конкретного дистрибутива (к примеру для пакетного дистрибутива Ubuntu в /usr находятся “родные” установленные пакеты, а /usr/local находятся собранные пакеты из исходников). | |
| | |– | /bin/ | |
| | |– | /lib/ | |
| | |– | … | |
|– | /sbin/ | Дополнительные системные программы. | |
|– | /share/ | Общие данные установленных программ. | |
| | |– | /icons/ | В каталоге находятся все иконки системы. |
| | — | /doc/ | Директория, в которой обычно находится справочная документация по установленным программам. |
|– | /src/ | Каталог содержит исходные коды (например, здесь располагаются исходные коды ядра). | |
|– | /X11R6/bin/ | Х | ссылка на текущий X сервер; |
|– | magic.mime | файлы, хранящие “магическое число”. Данное число описывает тип файла для утилиты file. | |
— | magic | ||
/var | Здесь находятся часто меняющиеся данные (журналы операционной системы, системные log-файлы, cache-файлы и т. д.) | ||
|– | /cache | В этом месте хранятся все кэшированные данные различных программ. | |
|– | /lib | Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.). | |
| | — | /rpm/ | база данных пакетного менеджера RPM |
|– | /lock | Здесь лежат lock-файлы, указывающие на занятость некоторого ресурса. | |
|– | /log/ | в данном каталоге лежат все лог файлы системы | |
| | |– | wtmp | (бинарный формат) содержит удачные попытки входа и выхода в систему |
| | |– | utmp | (бинарный формат) содержит текущих вошедших пользователей в систему |
| | |– | lastlog | (бинарный формат) содержит, когда каждый пользователь последний раз входил |
| | — | btmp | (бинарный формат) содержит НЕ удачные попытки входа/выхода в систему |
|– | /spool | Задачи, ожидающие обработки (например, очереди печати, непрочитанные или не отправленные письма, задачи cron и т. д.). | |
— | /www | В этом месте размещаются Web-страницы для сервера Apache. |
Вот, в кратце, о назначении каталогов Linux. В последующем данная таблица будет наполняться по мере моего изучения ОС LINUX. Хочу отметить, что у некоторых дистрибутивов структура каталогов может несколько различаться, добавляться другие каталоги. Но в общем случае структура имеет вид, указанный выше.
На сегодня все. В следующей статье будет сделана шпаргалка по основным командам Linux.
Что еще почитать:
man hier
Анатомия VFS – http://www.ibm.com/developerworks/ru/library/l-virtual-filesystem-switch/
upd 2010.10.21: добавил информацию о Inode
upd 2010.11.10: добавил иллюстрацию хард-линк, а так же информацию о процессах в ФС proc
upd 2011.05.19: добавил информацию о ФС proc
upd 2013.03.18: добавил доп литературу
upd 2013.04.25: статья доработана
С Уважением, Mc.Sim!
Другие материалы в категории Linux
- Репликация Mysql (master-slave, master-master)
- Ошибка 0x80004005 0x80070035 на Windows 10 при доступе к сетевой папке
- Текстовый редактор VIM, основы работы
- Спринт Lingoda (ex Марафон Lingoda) + промокод.
- ddrescue или спасаем данные с HDD
- Бесплатный SLES для Vmware – ВСЁ…
- Резервное копирование файлов сайта по ssh
- SQUID настройка ACL и http_access
- squid, использование опции debug_options или диагностика компонентов squid
- Седьмой релиз Debian
true статья.
ну спасибо, первый комментатор
старался:)
Спасибо большое за информацию. Статья класс!!!
на здоровье!
Приятно видеть на блоге женскую половину ИТ-человечества
спасиб братух, помогло))) убунта мать ее за ногу)))
толи дело диски C:, D:, E:
На здоровье. Приходи еще:)
….Да уж… Ц: Д: Е:
Статья очень подробная, но нигде не могу найти ответ на вопрос:при установке другого дистрибутива линукс вдобавок к уже установленному,как и куда должны монтироваться каталоги “/” и “home” уже установленных и новых систем.Например, уже установлена Mandriva с тремя разделами:1)”/”,2)”swap”,3)”home”
плюс ставится Ubuntu с такими же разделами.Может кто-нибудь кинет ссылку,где прочитать?
Для новой системы (Ubuntu в вашем примере) необходимо создать свои разделы 1)»/»,2)»swap»,3)»home». Если при установке выбрать имеющиеся разделы Mandriva, то установщик просто затрет информацию в имеющихся разделах.
А если вам в Ubuntu необходим доступ к разделам, уже имеющимся в Mandriva, то после установки ubuntu данные разделы будут отображаться в файловом менеджере ubuntu. Либо, вы сами можете определить, куда монтировать данные разделы при загрузке – с помощью файла /etc/fstab.
Я и делаю так.Но как обозначить и куда монтировать разделы Mandriva при установке Ubuntu (нельзя же создать два раздела “/” и два раздела “home” ? Или не монтировать разделы Mandriva при установке Ubuntu вообще? Может я непонятно спрашиваю, но при установке, если не монтировать разделы Mandriva, куда ставить GRUB,учитывая, что есть еще разделы Windows? Автоматически GRUB не находит старый линукс и затирает, видимо, записи загрузки.
Каждая индивидуальная установленная система рассматривает разделы жесткого диска и их точки монтирования согласно своего файла /etc/fstab. Соответственно, корень (/) мандривы куда укажешь монтировать – туда и будет монтироваться.
возможен и такой вариант. swap точно монтировать не нужно. Для Ubuntu нужно создать свой свап.
А что за версия Ubuntu, которая не видит имеющиеся разделы и установленные системы? Можно снимок экрана увидеть того шага установки, где отображается структура жесткого диска?
Как вариант… Можно попробовать загрузить Ubuntu в режиме Live Cd и запустить установку с Live Cd. Графический инсталлятор должен все корректно определить.
Вместо Ubuntu решил поставить Suse.Ставлю разные для пробы, хотя для работы использую Windows.С Вашей помощью, кажется понял монтирование, но появилась проблема с GRUB.Если загрузчик GRUB уже установлен в MBR, то куда ставить и ставить ли вообще загрузчик для Suse (Mandriva уже есть):
1)в корневой раздел?
2)в загрузочный раздел (/boot)?
3)в MBR ?
Для тестов не советую использовать работающую машину. Поставьте себе VirtualBox и на ней можно экспериментировать сколько угодно без вреда рабочей конфигурации
А по сути вопроса – можно GRUB не ставить, но тогда в GRUB’e Mandriva необходимо будет указать, что установлена еще одна система (на каком жестком диске и каком разделе – sda1, sda2, sda3…?).
Вообще, чтобы понять, как работает загрузка, почитайте мою статью. А про GRUB можно почитать тут или тут. Жаль, что данная информация немного устарела для новых дистрибутивов, но в целом для понимания сути вполне подойдет.
file system
Монтируемое блочное устройство (файловая система).
mount point
Это точка монтирования. Для пространства подкачки это поле имеет значение none. Для файловых систем ext2, ext3 и xfs можно также указывать метку тома, например: LABEL=XFSHOME. Это делает систему более устойчивой при установке и удалении устройств. Точка монтирования (каталог) должна существовать для корректного монтирования.
В опциях монтирования предложение с LABEL=XFSHOME судя по всему отностится к file system, а не mount point?
и еще один вопрос, куда “корректно” с точки зрения unix-way класть файлы БД(постресс в частности), мы их складываем в отдельный каталог /data, но это странно выглядит.
Спасибо за статью!
Да, действительно, спасибо за замечание.
По поводу вопроса:
man heir не имеет каких-либо рекомендаций по поводу размещения файлов СУБД. Есть вот такая рекомендация:
/srv This directory contains site-specific data that is served by
this system.
Соответственно, можно разместить в /srv, но не думаю, что это как-то повлияет на ситуацию.
Вообще, по моему мнению, стоит руководствоваться следующими критериями:
1. документация Субд, которая обычно советует разместить файлы данных на производительном томе
2. удобством обслуживания и своими привычками и опытом )
Как-то так.
и еще, для чтения http://momjian.us/main/writings/pgsql/hw_performance/index.html
Много ошибок в статье.
“расположенную на каком-либо блочном устройстве. Суть операции монтирования заключается в том, что ядро ассоциирует некоторый каталог (называемый точкой монтирования) с блочным устройством ”
ФС в общемм вообще не связана с блочным устроством, так как файловая система может быть распределенной сетевой (NFS), а может быть вообще виртуальной (procfs,sysfs..), и они так же и монтируются как и дисковые фс (на блочном устройстве)
Ну сравнение VFS с таблице FAT не корректно..
Длаее писать не буду но очень много не точностей
Спасибо за дополнение.
В целом, я с Вами согласен. Если углубляться в терминологию, то сравнения не совсем корректны.
Я дополнил статью некоторыми фразами, которые внесут бОльшую ясность, но стоит учитывать, что данная статья написана для начинающих.
Низкий поклон тебе за такую таблицу. Ну, и простое человеческое спасибо за качество материала