К содержанию   Вперед   Назад

Введение в файловые системы

Определение файловой системы

Файловую систему можно определить как:

· метод хранения данных;
· иерархию директорий.

AIX поддерживает три типа файловых систем:

· jfs Журнальная файловая система
· cdrfs Файловая система CD-ROM на компакт-дисках
· nfs Сетевая файловая система

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

Причины использования файловых систем 

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

Стандартные файловые системы в AIX Version 4

После первой установки AIX существует только пять журнальных файловых систем:

· / (root) = /dev/hd4 Вершина иерархии файлового дерева. Содержит файлы и директории, критичные для системного выполнения, включая директорию устройств и программ, завершающих процесс загрузки 
· /usr = /dev/hd2 Команды операционной системы, библиотеки и программы приложений. Эта файловая система должна быть определена как доступная по сети.
· /var = /dev/hd9var Место размещения различных файлов подкачки и аудита.
· /home = /dev/hd1 Домашние директории пользователей. Традиционное место размещения пользовательских файлов данных.
· /tmp = /dev/hd3 Пространство используемое всеми пользователями для сохранения временных файлов и рабочего пространства. Целесообразно часто очищать.

Файл /etc/filesystems

Файл /etc/filesystems документирует характеристики компоновки или атрибуты файловых систем. Этот файл организован в виде станз (stanza). Каждое имя станзы в этом файле относится к файловой системе, которая нормально смонтирована.

Атрибуты файловой системы описывают следующие её параметры:

· check используется командой fsck для определения файловых систем проверяемых по умолчанию. Значение True разрещает проверку.
· dev Для локальных точек монтирования идентифицирует или специальный блочный файл, где файловая система постоянно находится, или файл или директорию, в которую будет установлена файловая система.
· mount используется командой mount для определения точки монтирования файловой системы по умолчанию. Возможные значения:

· automatic файловая система монтируется автоматически при старте системы
· true файловая система монтируется при команде mount all.
· false файловая система не монтируется автоматически

· type используется для группировки вместе связанных файловых систем, которые могут весь быть установленны командой mount -t.
· vfs описывает тип монтирования (например, nfs)
· vol используется командой mkfs для установки ярлыка (label) новой файловой системы.
· log устройство на которое будут записываться данные об модификации данной файловой системы (опция работает только с JFS).

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

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

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

Когда SMIT создает файловую систему, точка монтирования создаётся автоматически. 

Файловые системы, ассоциированные с устройствами, представлены в специальном файле в логическом томе /dev. При монтировании файловой системы к пустой директории её структура директорий и файлы просто становятся частью иерархического дерева директорий.

При монтировании файловой системы к директории, которая содержит другие директории и файлы, они становятся недоступными для пользователей и доступ к ним можно организовать, только размонтировав подсоединённую к этой директории файловую систему.

Пользователи могут монтировать файловые системы, если они принадлежат к группе system и имеют право записи в точке монтирования.

Пользователь root может монтировать файловые системы в любое необходимое место с установкой любых ограничений.

Структура журнальной файловой системы

Журнальная файловая система AIX размещается на логическом томе, который разделен на кластеры размером по 4Кбайта. В тоже время, для совместимости с другими системами UNIX, файловая система может быть поделена на блоки кратные 512 байт. 

Первый адресуемый блок (кластер) файловой системы называется суперблоком и содержит в себе информацию, которая идентифицирует соответствующую файловую систему (например, её наименование, размер, количество inodes (определяют максимальное количество файлов в файловой системе), дату и время создания) и пустой список, используемый позднее. 

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

За суперблоком идёт определенное количество так называемых inodes, которые содержат идентификационную информацию для файлов (например, тип, размер, разрешения, идентификационные номера (ID) пользователя/группы владельца, дату и время создания/изменения/последнего доступа). Они также содержат ссылки на блоки данных, в которых размещается информация файлов. 

Примечание: inodes не содержат имен файлов, которые размещаются в специальных файлах, называемых директориями. 

Фрагментация диска

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

Для решения этой проблемы может применяться фрагментация диска на более мелкие структурные единицы - фрагменты (размером по 512, 1024, 2048 и 4096 байт). Размер фрагментов определяется только при создании файловой системы.

Компрессирование файловой системы

Журнальная файловая система AIX поддерживает компрессию информации. Компрессия позволяет значительно увеличить размер доступного дискового пространства (приблизительно в 2 раза), правда, за счёт снижения производительности. 

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

Внимание: файловая система root должна быть обязательно некомпрессированной. 

Ведение журнала

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

Типовая транзакция содержит в себе следующие операции:

1. При записи информации в файл данные сначала размещаются в оперативной памяти.
2. Каждую минуту выполняется системный вызов sync, который записывает данные в информационные блоки на диске. При этом данные об необходимых изменениях в inodes записываются в специальный файл jfslog (/dev/hd8) размером 4МБ. Этот файл является журналом транзакций журнальной файловой системы. Обновление информации в нём происходит циклически. Такой файл имеется для каждой группы томов.
3. Только после удачной записи всех информационных блоков происходит операция подтверждения COMMIT, о которой также производится запись в jfslog и только после этого происходит обновление в inodes.
4. Завершает транзакцию системный вызов sync.

Логично, что ведение журнала делает журнальные файловые системы очень устойчивыми ко всяким сбоям.

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

Вы можете просмотреть список определенных в системе файловых систем используя команду lsfs. Эта команда показывает информацию из файла /etc/filesystems и из логических томов.

Команда lsfs также показывает информацию о сетвеых файловых системах (NFS) и файловых системах CD-ROM. 

# lsfs
Name  Nodename  Mount Pt  VFS  Size  Options  Auto 
/dev/hd4  / jfs  8192   - yes 
/dev/hd1 - /home jfs  90112   - yes 
/dev/hd2 - /usr jfs  507904  - yes 
/dev/hd9var  - /var jfs  8192 - yes 
/dev/hd3  - /tmp jfs 16384 - yes
 /dev/cd0 -  /infocd  cdrfs ro yes
/dev/lv00 -  /home/john jfs 8192  rw  yes 

Синтаксис команды lsfs следующий:

lsfs [-q][-c|-l][-v vfstype|-u mountgrp] file_system

где, опция -q используется если вам нужен вывод информации о размере фрагмента, алгоритме компрессии и количества выделенных байт на inode;
опции -c или -l нужны для указания того, выводить ли информацию в формате колонок или станз, соответственно;
опции -v или -u используются для указания необходимости вывода информации только об определенных файловых системах (в зависимости от типа или точки монтирования, соответственно).

Указание в команде lsfs имени определенной файловой системы выведет информацию только о требуемой файловой системе. Для получения этой же информации вы можете использовать команду smit fs.

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

Команда mount используемая без параметров выводит список всех смонтрованных в текущий момент файловых систем.

# mount
node  mounted  mounted over vfs  date  options 
/dev/hd4  / jfs  Jul 11 20:14 rw,log=/dev/hd8
/dev/hd2 /usr jfs  Jul 11 20:15 rw,log=/dev/hd8
/dev/hd9var /var jfs Jul 11 20:15 rw,log=/dev/hd8
/dev/hd3 /tmp jfs  Jul 11 20:15 rw,log=/dev/hd8
/dev/hd1 /home jfs Jul 11 20:16 rw,log=/dev/hd8
/dev/lv00 /home/john jfs Jul 11 20:16 rw,log=/dev/hd8

С помощью SMIT можно получить эту информацию выбрав:

SMIT -> File System -> List all Mounted File Systems

Добавление журнальной файловой системы на предварительно определенный логический том

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

Этот процесс форматирует логический том для использования файловой системой. 

# smit crjfslv

Add a File System on a Previously Defined Logical Volume

 
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
                                    
       [Entry Fields]
* LOGICAL VOLUME name
* MOUNT POINT                               []                +
  Mount AUTOMATICALLY at system restart     no                +
 
PERMISSIONS                               read/write        +
 
Mount OPTIONS                             []                +
Start Disk Accounting?                      no                +
 
Fragment Size (bytes)                     4096              +
 
Number of bytes per inode                 4096              +
 
Compression algorithm                     no                +



F1=Help           F2=Refresh        F3=Cancel         F4=List
F5=Reset          F6=Command        F7=Edit           F8=Image
F9=Shell          F10=Exit          Enter=Do

Добавление журнальной файловой системы

# smit crjfs

Add a Journaled File System

 
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
                                   
        [Entry Fields]
 
Volume group name                         rootvg
* SIZE of file system (in 512-byte blocks)  []                #
* MOUNT POINT                               []
 
Mount AUTOMATICALLY at system restart     no                +
 
PERMISSIONS                               read/write        +
 
Mount OPTIONS                             []                +
 
Start Disk Accounting?                    no                +
 
Fragment Size (bytes)                     4096
 
Number of bytes per inode                 4096
 
Compression algorithm                     no
 


F1=Help           F2=Refresh        F3=Cancel         F4=List
F5=Reset          F6=Command        F7=Edit           F8=Image
F9=Shell          F10=Exit          Enter=Do

Для создания журнальной файловой системы, кроме SMIT, вы можете воспользоваться высокоуровневой командой crfs с указанием необходимых параметров.

Не путайте команду crfs с командой mkfs. В отличие от команды mkfs, команда crfs создаёт, если это необходимо, логический том используя команду mklv, затем строит на нём структуру файловой системы, используя команду mkfs и производит все необходимые изменения в базе ODM и файле /etc/filesytems для соответствующих логического тома и файловой системы.

При создании журнальной файловой системы с помощью команды crfs вы должны будете указать: 

-g volgrp - имя группы томов, на которой будет создан логический том. Конечно, эта группа томов должна иметь необходимое свободное пространство для создания нового логического тома;
-a size=SIZE - размер файловой системы в 512-ти байтовых блоках;
-m mntpt - точка монтирования файловой системы (имя директории в существующей файловой системе). В основном точка монтирования не указывается;
-a yes|no - указание необходимости автомонтирования новой файловой системы при перезапуске системы. При указанной точке монтирования по умолчанию (см. выше) файловая система может быть помечена как автомонтируемая. Об этом делается запись mount=true в станзе файловой системы файла /etc/filesystems. 
-p rw|ro - режим доступа. Все файловые системы могут быть смонтированы с режимом доступа чтение/запись (rw) или только для чтения (ro). Дополнительным выбором для монтирования файловой системы (Mount Options) может быть указание на запрещение выполнения setuid и setgid программ (выбор nosuid) или запрещение открывать системные вызовы устройств с файловых систем с этой точкой монтирования (выбор nodev).
-a fragment=size - указание размера фрагмента журнальной файловой системы в байтах. Размер фрагмента может принимать значения 512, 1024, 2048 или 4096. Значение по умолчанию - 4096 байт. 
-a nbpl=value - указание количества байт на один inode. Влияет на общее количество inodes в файловой системе. Этот параметр может иметь значения 512, 1024, 2048, 4096, 8192 или 16384. Значение по умолчанию - 4096 байт.
-a compress={no|LZ} - указание алгоритма компрессии для файловой системы. Значение по умолчанию - no.

Монтирование/размонтирование файловой системы

# smit mountfs

Mount a File System

 
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
                                    
           [Entry Fields]
 
FILE SYSTEM name                             []
 
DIRECTORY over which to mount                []
 
TYPE of file system
 
FORCE the mount?                             no
 
REMOTE NODE containing the file system   
 
to mount                                     []
 
Mount as a REMOVABLE file system?            no
 
Mount as a READ-ONLY system?                 no
 
Disallow DEVICE access via this mount?       no
 
Disallow execution of SUID and sgid programs
 
in this file system?                         no

F1=Help           F2=Refresh        F3=Cancel         F4=List
F5=Reset          F6=Command        F7=Edit           F8=Image
F9=Shell          F10=Exit          Enter=Do

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

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

Пользователь root может монтировать файловые системы в любом месте иерархии директорий в независимости от установленных прав доступа. 

Изменение/просмотр характеристик журнальной файловой системы

Change/Show Characteristics of a Journaled File System

 
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
                                    
      [Entry Fields]
 
File system name                         /home
 
NEW mount point                         [/home]
 
SIZE of file system (in 512-byte blocks)[8192]
 
Mount GROUP                             []
 
Mount AUTOMATICALLY at system restart   yes               +
 
PERMISSIONS                             read/write        +
 
Mount OPTIONS                           []                +
 
Fragment Size (bytes)                   4096
 
Number of bytes per inode               4096
 
Compression algorithm                   no

F1=Help           F2=Refresh        F3=Cancel         F4=List
F5=Reset          F6=Command        F7=Edit           F8=Image
F9=Shell          F10=Exit          Enter=Do

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

При необходимости уменьшить размер файловой системы лучшим выходом является создание новой файловой системы нужного размера с удалением старой.

Удаление журнальной файловой системы

Для удаления журнальной файловой системы, кроме средств SMIT, вы можете воспользоваться высокоуровневой командой rmfs. Эта команда, наряду с удалением самой файловой системы, удаляет всю информацию о ней из базы данных ODM и файла /etc/filesystems. Когда удаляется файловая система, то также удаляется и логический том, на котором она находилась.

Управление файловыми системами

Задачи администратора по управлению дисковым пространством файловых систем следующие:

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

Управление дисковым пространством

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

Для просмотра информации об общем и используемом дисковом пространстве используется команда df. Для показа размера дискового пространства в килобайтах эту команду необходимо запускать с ключом -k

Контроль над быстрорастущими системными файлами

Быстрорастущие системные файлы должны быть постоянно под контролем и с целью экономии дискового пространства периодически очищаться.

Прежде всего, необходимо контролировать следующие файлы:

· /var/adm/wtmp
· /var/spool/*.*
· /smit.log
· /smit.script
· /etc/security/failedlogin
· /var/adm/sulog

Файлы /var/adm/wtmp и /var/adm/failedlogin читаются командой who -a имя_файла. Остальные файлы редактируются с помощью любого текстового редактора.

Квоты для дискового пространства пользователей

Система квот (ограничений) дискового пространства базируется на Berkeley Disk Quota System и позволяет администратору контролировать количество файлов и блоков данных пользователей или их групп.

Эта система используется в следующих случаях:

· ограниченное дисковое пространство в системе;
· файловая система требует повышенной безопасности;
· при высоком использовании файловой системы (например, в университете). 

Пределы квот устанавливаются тремя параметрами:

Soft limits - определяет количество блоков по 1KB или файлов, на которое пользователь может превысить на определенный период (grace period).

Hard limits - максимальное количество блоков по 1KB или файлов, которое пользователь не может превысить

Grace period - время на которое пользователь может превысить отпущенное ему по soft limits дисковое пространство или количество файлов. По умолчанию - 7 дней. 

Внимание: Для запуска всех команд, связанных с установкой и управлением квотами необходимо иметь полномочия пользователя root. Остальные пользователи могут только просмотреть личные квоты с помощью команды quota запускаемой в командной строке.

Установка квоты

1 шаг - Включение режима квот Для указания того, что для данной файловой системы установлен режим квот, необходимо вставить в её станзу файла /etc/filesystems следующую строку: для режима квот пользователей: quota=userquota для режима квот пользователей и групп: quota=userquota,groupquota

2 шаг - Установка квот Для создания и редактирования квот используется команда edquota. Эта команда создаёт временный файл, который содержит информацию обо всех текущих квотах каждого пользователя и группы.

Синтаксис команды edquota следующий:

edquota [-u username|-g groupname] [-p prototype]

где: опция -u используется для редактирования квоты пользователя username; опция -g используется для редактирования квот группы groupname; опция -p используется для указания прототипа квоты (пользователя или группы, имя которых необходимо указать), который используется для копирования ранее установленных квот.

Внимание: Для использования команды edquota должна быть установлена переменная EDITOR (для примера, export EDITOR=/usr/bin/vi).

3 шаг - Установка Grace Period Для установки Grace Period также используется команда edquota с параметрами: -t - для всех пользователей и групп; -tg - для всех групп; -tu - для всех пользователей.

Grace Period можно устанавливать в секундах, минутах, часах или днях. Установка Grace Period в размере 1-й секунды показывает, что Grace Period не предоставляется. Установка 0 определяет Grace Period по умолчанию.

Управление квотами

Включение режима квот Для включения режима квот используется команда quotaon с параметрами: -u - установка режима квот только для пользователей; -g - установка режима квот только для групп; -a - установка режима квот для пользователей и групп. После параметра можно указать имя конкретной файловой системы, для которой необходимо включить механизм квот. По умолчанию режим квот выключен. 

Выключение режима квот Для выключения режима квот используется команда quotaoff. Можно отключить режим квот для всех файловых систем (с параметром -a) или для конкретной файловой системы (указать её имя).

Проверка режима квот Команда quotacheck используется для проверки корректности работы механизма квот. Команда repquota используется для проверки использования текущих пользовательских или групповых квот.

Дефрагментация файловой системы

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

/usr/sbin/defragfs [-q|-r] FILESYSTEM

опция -q показывает отчет о текущем статусе файловой системы; опция -r показывает отчет о текущем статусе файловой системы и о возможном состоянии файловой системы, после дефрагментации .

Проверка файловой системы

Файловые системы могут быть проверены используя команду fsck. Ее синтаксис:

fsck [-p|-y|-n] [-f] [FILE SYSTEM]

Опция -p указывает на проведение проверки и исправление файловой системы без информирования пользователя обо всех изменениях и без запросов на совершение таких изменений. При запуске проверки файловых систем из SMIT используется эта опция. Опции -y или -n используются для ответов yes или no на все вопросы выдаваемые командой.

Проверка файловой системы производится в несколько стадий: проверка журнала на предмет обнаружения сообщений об ошибках, проверка inodes, косвенных блоков, блоков данных, свободных блоков, проверка размеров файлов, проверка содержимого директорий.

Если явно не указана файловая система для проверки, то проверяются все файловые системы, для которых в файле /etc/filesystems установлен атрибут check в true. Команда выводит отчет о своей работе в директорию /lost+found.

Документирование установок файловых систем

· Запускайте команду lsfs.
· Отслеживайте содержимое файла /etc/filesystem.
· Запускайте команду df для проверки использования дискового пространства.
· Проверяйте все смонтированные файловые системы командой mount.

 К содержанию   Вперед   Назад