Рефераты. Файловые системы в Linux

3.4 Каталог /etc

Каталог /etc содержит конфигурационные файлы и каталоги, специфичные для данной конкретной системы. В каталоге /etc не должно быть бинарных файлов. В соответствии со стандартом FHS этот каталог в обязательном порядке должен содержать подкаталог /opt, в котором должны размещаться подкаталоги с конфигурационными файлами отдельных пакетов и приложений. Для каждого установленного пакета <package> должен создаваться конфигурационный каталог /etc/opt/package.

Для запуска необходим /etc/inittab и доступ к стартовым скриптам. Но можно сделать минимальный скрипт, чтобы он подключал /etc и заставлял init перечитать /etc/inittab. Также все несколько проще при загрузке с initrd. Все, что надо – подключить /etc до того, как будет выполнен chroot. Все указанные каталоги содержат статические данные за исключением /etc/mtab. Можно либо сделать ссылку /etc/mtab -> /proc/mounts, но это не всегда удобно. Или подключить /tmp, а затем сделать /etc/mtab -> /tmp/mtab, создав предварительно /tmp/mtab с необходимыми двумя записями (для корня и для /tmp). Итак корневой каталог должен быть подключен в режиме "только чтение". Так как необходимо подключение корневого каталога любым свежесобранным ядром, кажется логичным выбрать формат файловой системы ext2. Именно ext2, а не ext3, так как все преимущества ext3 в журналировании, а писать все равно ничего не надо.

Если же /etc подключается отдельно от корневой системы, то файловая система для него должна быть ext2, а флаги монтирования: nodev, sync. Первый указывает, что в /etc не должно быть файлов устройств, а sync означает, что любые изменения файлов /etc должны немедленно записываться на диск. Это желательно, так как при аварийном восстановлении перезагрузка часто выполняется без выполнения скриптов завершения работы, вследствие чего могут быть утеряны последние изменения, которые еще не записаны на диск.

3.5 Каталог /home

В небольших системах каждый домашний каталог пользователя является одним из непосредственных подкаталогов каталога /home, таких как /home/smith, /home/torvalds, /home/operator и так далее. В больших системах (особенно когда каталоги /home являются разделяемыми между многими хостами посредством NFS) полезно объединить домашние каталоги в группы, введя подкаталоги групп такие как /home/staff, /home/guests, /home/students и так далее. Но как бы то ни было, структура домашних каталогов различается от хоста к хосту. Следовательно, никакая программа не должна полагаться на какие-то предположения о структуре домашних каталогов.

Рассмотрим как лучше использовать /home. С одной стороны, очевидно, нужны опции nodev, nosuid, так ни устройств, ни suid-файлов у пользователей быть не должно. Иногда можно также устанавливать noexec. Обычно пользователям разрешено создавать запускаемые файлы в ~/bin. Тип файловой системы также имеет смысл выбирать в зависимости от того, какие файлы хранятся у пользователей. Если много маленьких (пользователи – программисты) и не нужны квоты, то лучше ставить ReiserFS. Если крупные файлы (пользователи обрабатывают или хранят видео, музыку, архивы), то лучше XFS. Также XFS рекомендуется, если необходимо давать доступ по протоколу Samba (также известный как Windows Network Neighbourghood), так как XFS поддерживает права доступа в формате ACL, которые используются в MS Windows. Если пользователям не надо знать время доступа к файлам, можно также использовать noatime.

3.6 Каталог /lib

Каталог /lib содержит те разделяемые библиотеки, которые необходимы для загрузки системы и запуска команд, расположенных в каталогах /bin и /sbin.

Не должны располагаться в /lib разделяемые библиотеки, которые необходимы только исполняемым файлам, расположенным в /usr (таким, как бинарные файлы системы X Window).

Более одного варианта каталога /lib может существовать в системах, поддерживающих более одного формата исполняемых файлов (например, 32-х и 64-х разрядные форматы), при этом для каждого формата требуется свой отдельный вариант разделяемых библиотек (которые могут называться /lib32 и /lib64).

 

 

3.7 Каталог /mnt

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

Этот каталог не должен использоваться программами инсталляции ПО; для создания и хранения временных файлов на этапе инсталляции должны использоваться временные каталоги, не используемые системой.

3.8 Каталог /opt

Стандарт FHS резервирует каталог /opt для установки дополнительных пакетов программного обеспечения. Предполагается, что любой пакет, который устанавливается в каталог /opt, должен размещать свои статические файлы в отдельной каталоговой структуре /opt/<package>, где <package> – название соответствующего пакета программного обеспечения.

Как правило, все данные, необходимые для поддержки функционирования пакета, должны присутствовать в каталоге /opt/<package>, включая файлы, копируемые в каталоги /etc/opt/<package> и /var/opt/<package> а также специально создаваемые для пакета каталоги в /opt.

Каталоги /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib и /opt/man зарезервированы для использования локальным системным администратором.

Программы, вызываемые на исполнение пользователем, должны располагаться в каталоге /opt/<package>/bin. Если пакет ПО содержит в своем составе страницы обычного в UNIX интерактивного руководства man, они должны устанавливаться в каталог /opt/<package>/man, который должен иметь такую же структуру, как и каталог /usr/share/man.

Файлы пакета, которые являются переменными (изменяемыми при выполнении стандартных операций), должны устанавливаться в /var/opt. Специфичные для хоста конфигурационные данные должны устанавливаться в /etc/opt.

Никакие файлы пакета не должны размещаться вне каталогов /opt, /var/opt и /etc/opt, кроме тех файлов, которые должны оказаться в других местах по той причине, что иначе пакет не сможет функционировать нормально. Например, файлы блокирования устройств должны располагаться в /var/lock, а файлы устройств должны располагаться в /dev.

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

Каталог /opt можно подключать на отдельном разделе. Как правило, файлы в этом разделе не изменяются и не требуются в экстренных случаях, поэтому лучше использовать ReiserFS или ext3 с опцией ro.

3.9 Каталог /root

Каталог /root – это домашний каталог суперпользователя. Он может быть задан разработчиком или определен при инсталляции системы, но рекомендуемое место его расположения по умолчанию – корневая файловая система.

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

3.10 Каталог /sbin

Утилиты для выполнения задач системного администрирования (и другие команды, используемые только пользователем root) размещаются в /sbin, /usr/sbin и /usr/local/sbin. Каталог /sbin содержит исполняемые файлы, необходимые для загрузки системы и ее восстановления в различных ситуациях (restoring, recovering, and/or repairing the system), не попавшие в каталог /bin.

Единственная команда, которая обязательно должна присутствовать в /sbin, это команда shutdown – команда остановки системы.

Принять решение о том, какие программы разместить в каталогах "sbin", довольно просто: если обычный пользователь (не системный администратор) когда-либо запускает программу, она должна размещаться в одном из каталогов "bin". Обычные пользователи не должны указывать каталоги sbin в списке путей, просматриваемых по умолчанию (в своей переменной PATH).

Авторы стандарта рекомендуют предоставить всем пользователям право на чтение и выполнение для всех файлов, расположенных в /sbin, кроме, может быть тех программ, для которых установлены биты setuid и setgid. Разделение каталогов /bin и /sbin делается не из соображений безопасности и не для того, чтобы лишить пользователей возможности видеть системные утилиты. Целью такого деления является установление явного различия между исполняемыми файлами, которые используются всеми, и теми утилитами, которые в основном используются для решения административных задач. С точки зрения безопасности нет никаких преимуществ в том, чтобы сделать /sbin недоступным для пользователей.

3.11 Каталог /tmp

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

После перезагрузки он обязан быть пустым, поэтому его можно размещать либо на диске, либо в памяти. noatime на него ставить нельзя, так как по нему ориентируется tmpwatch (программа для чистки /tmp от старых файлов). Если оставлять на диске, то лучше ставить на ReiserFS, так как там обычно много мелких файлов. Для монтирования в память используется файловая система tmpfs. В любом случае рекомендуется, во-первых, выносить /tmp на отдельный раздел, во-вторых, подключать с флагом noexec. Если не ставится noexec, тогда должно стоять хотя бы nosuid. И в любом случае nodev.

3.12 Каталоговая структура /usr

Каталог /usr – это второй по важности раздел файловой системы. /usr содержит разделяемые данные, предназначенные только для чтения. Это означает, что /usr может быть доступен с различных FHS-совместимых хостов и права записи в него не должно быть. Любая информация, которая является специфичной для конкретного хоста или может изменяться со временем, должна записываться в другое место.

Структура /usr

·        /usr/bin – бинарные файлы

·        /usr/include – заголовочные файлы для C

·        /usr/lib – библиотеки

·        /usr/local – локальная иерархия (структура как у /usr)

·        /usr/sbin – системные бинарные файлы

·        /usr/share – данные независимые от архитектуры

/usr – это обычно достаточно большой раздел, который, как правило, делается с таким расчетом, чтобы его можно было использовать на нескольких однотипных машинах. Поэтому его можно монтировать только для чтения. Но в этом случае нужно отдельно подмонтировать /usr/local (хотя бы из тех соображений, что в нем устанавливаются программы нужные только на одной машине).

/usr/local монтируется с теми же параметрами, что и /usr.

3.13 Каталоговая структура /var

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

Некоторые части каталоговой структуры /var не являются разделяемыми между разными системами. К ним относятся /var/log, /var/lock и /var/run. Другие части могут быть разделяемыми, например, /var/mail, /var/cache/man, /var/cache/fonts и /var/spool/news.

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

На весь раздел лучше ставить ReiserFS, желательно с флагом noexec, или хотя бы nosuid. Обычно можно использовать noatime, но не всегда.

Каталог /var/log предназначен для хранения журналов сообщений. Его обязательно следует размещать на отдельном разделе, так как при сбоях и DoS атаках он может переполняться, а это не должно мешать работе всей операционной системы. Для него наилучшим решением будет ReiserFS с опциями noexec, nodev, noatime.

В каталоге /var/spool/mail хранится почта пользователей. На него рекомендуется ставить ext3 с data=journal, noatime, noexec, nodev и включенными квотами.

/var/cache – кэш прокси. Тут много мелких файлов, поэтому ReiserFS с noexec, nodev, noatime.

/var/tmp – временные файлы, нужные после перезагрузки. Из тех же соображений, что и для /tmp выбираем ReiserFS с опциями noexec, nodev, noatime.

Заключение

Таким образом, для максимальной производительности Linux следует для разных каталогов выбирать разные файловые системы. Файловую систему ext2 лучше устанавливать в каталоги /boot и /etc; ext3 – в каталоги /opt и /var/spool/mail; ReiserFS – в каталоги /home, /tmp, /var, /var/log, /var/cache, /var/tmp и /opt;  XFS – в каталог /home. devfs, devpts –  файловые системы для каталогов /dev и /dev/pts соответственно. tmpfs используется в основном для /tmp. Также следует указывать соответствующие опции: ro, nodev, nosuid, noexec, noatime, sync.

Разумеется возникает вопрос как лучше разместить такое количество файловых систем на жестком диске. Можно создавать файловые системы в файлах. Делается это при помощи команды

mount /fs.img /mnt -o loop,

где fs.img – файл с этой файловой системой, а /mnt – место подключения. Очевидно, что доступ к файловым системам с этими файлами должен быть достаточным для установки нужных прав на файловую систему. То есть нельзя подключить файловую систему с полным доступом, если права доступа к файлу только на чтение. В качестве файловой системы для хранилища этих файлов лучше всего выбрать XFS, так как файлы очень большие.

Cписок использованных источников

1.     Академия Корпоративных Систем – Информационные ресурсы. – Электрон. текстовые данные (139267 bytes) – Режим доступа: http://a–sys.ru/Articles/Article.aspx?ID=51. Tuesday, 8 November 2005 10:47:04.

2.     Виртуальная энциклопедия "LINUX по русски".– Электрон. текстовые данные (128952 bytes) – Режим доступа: http://rus–linux.net. Tuesday, 8 November 2005 10:51:47.


Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.