Основными задачами администрирования файловых систем являются создание, монтирование и демонтирование физических файловых систем, а также проверка их целостности. В следующих подразделах мы рассмотрим соответствующие команды и обобщенно опишем выполняемые
Автор:
Разместил: Amro   Дата: 2006-04-04 10:05
Комментарии: (0)   Рейтинг:
Средняя оценка участников (от 1 до 10): Пока не оценено   
Проголосовавших: 0

Основы операционной системы UNIX - 06. Управление файловой системой

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

Создание физической файловой системы

Команда mkfs создает файловую систему путем записи на указанное устройство (необходимо указать специальное символьное устройство). Файловая система создается на основе указанных в командной строке типа файловой системы (ТипФС), специфических_опций и операндов. Команда имеет следующий синтаксис:

mkfs [-F ТипФС][-V][-m] [-o специфические_опции]
   устройство размер [операнды]

Специфические опции и операнды зависят от конкретного типа создаваемой файловой системы. Их можно посмотреть на соответствующей странице справочного руководства (например, man mkfs_ufs для файловой системы ufs).

Основные опции и параметры команды mkfs представлены в табл. 14.

Таблица 14. Основные опции и параметры команды mkfs

Опция Назначение
-F Указывает тип файловой системы, которую необходимо создать. Тип файловой системы должен быть либо указан здесь, либо находится в файле таблицы стандартных файловых систем (/etc/vfstab в SVR4, /etc/fstab в других версиях UNIX) путем сопоставления устройства с записью в таблице.
-V Выдает результирующую командную строку, но не выполняет команду. Командная строка генерируется с использованием опций и аргументов, указанных пользователем, путем добавления к ним информации, взятой из таблицы стандартных файловых систем. Эта опция используется для проверки правильности командной строки.
-m Возвращает командную строку, использованную для создания файловой системы. Файловая система должна уже существовать. Эта опция обеспечивает средства получения команды, использованной при создании файловой системы. Для нее не применимы специфические_опции, размер и операнды.
-o Задает опции, специфические для указанного типа физической файловой системы.
устройство Задает специальное символьное устройство, на котором будет создана файловая система.
размер Задает количество 512-байтовых блоков в файловой системе. Максимальный размер многих физических файловых систем в UNIX - 4194304 блока размером 512 байт (или 2 Гбайта).

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

Программа fsck ищет и, автоматически или в интерактивном режиме, исправляет противоречия в файловых системах. Если файловая система находится в несогласованном состоянии, которое нельзя однозначно исправить, у пользователя спрашивают подтверждения перед попыткой выполнить каждое исправление. Следует иметь в виду, что некоторые исправления приводят к определенным потерям данных. Объем и серьезность потери данных можно определить по диагностическому сообщению. Стандартным действием при каждом исправлении является ожидание от пользователя утвердительного (yes) или отрицательного (no) ответа.

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

Команда fsck имеет следующий синтаксис:

fsck [-F ТипФС] [-V] [-m] [устройство ...]
fsck [-F ТипФС] [-V] [-o специфические_опции] [устройство ...]

Основные опции и параметры команды fsck представлены в табл. 15.

Таблица 15. Основные опции команды fsck

Опция Назначение
-F Задает тип проверяемой файловой системы. Если тип не указан, команда обращается к таблице стандартных файловых систем.
-V Выдает результирующую командную строку, но не выполняет команду. Командная строка генерируется с использованием опций и аргументов, указанных пользователем, путем добавления к ним информации, взятой из таблицы стандартных файловых систем.
-m Проверять, но не восстанавливать. Эта опция позволяет проверить, может ли файловая система быть смонтирована.
-o Позволяет задать опции, специфические для типа файловой системы.

Для работы команде fsck необходимо указывать специальное символьное устройство.

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

Монтирование и демонтирование физических файловых систем

Физические файловые системы, кроме корневой (/), считаются съемными (removable) в том смысле, что они могут быть как доступны для пользователей, так и не доступны. Команда mount уведомляет систему, что блочное устройство или удаленный ресурс доступны для пользователей в точке_монтирования, которая уже должна существовать; точка монтирования становится именем корня вновь смонтированного устройства или ресурса. Говорят, что эта команда монтирует или подключает физическую файловую систему или ресурс к общей логической файловой системе.

Команда mount имеет следующий синтаксис:

mount [-v | -p]
mount [-F ТипФС] [-V] [-o специфические_опции]
   {устройство|точка_монтирования}
mount [-F ТипФС] [-V] [-o специфические_опции]
   устройство точка_монтирования}

Команда mount, при вызове с аргументами, проверяет все аргументы, за исключением устройства, и вызывает специфический модуль монтирования для указанного типа файловой системы. При вызове без аргументов mount выдает список всех смонтированных файловых систем из соответствующей таблицы. При вызове с неполным списком аргументов (например, только с указанием устройства или точки_монтирования, или когда указаны оба эти аргумента, но не задан тип файловой системы), mount будет просматривать таблицу стандартных файловых систем в поисках недостающих аргументов. Затем она вызывает специфический модуль монтирования для соответствующего типа файловой системы.

Специфические опции монтирования зависят от типа физической файловой системы. Все физические файловые системы можно монтировать только для чтения (-o ro).

Обратная процедура по отношению к монтированию называется демонтированием и выполняется командой umount со следующим синтаксисом:

umount [-V] [-o специфические_опции]
   {устройство|точка_монтирования}

Для большинства типов файловых систем нет специфического модуля демонтирования. Если такой модуль существует, он выполняется; иначе файловая система демонтируется стандартным модулем.

Команды mount и umount воспринимают следующие основные опции:

-v

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

-p

Выдает список смонтированных файловых систем в формате таблицы смонтированных файловых систем.

-F

Задает тип файловой системы для монтирования. Тип файловой системы должен быть либо задан, либо определяется по таблице стандартных файловых систем в ходе монтирования.

-V

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

-o

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

Любой пользователь может вызывать команду mount для получения списка смонтированных файловых систем и ресурсов. Например:

[kravchuk@arturo 13:05:48 /]$ mount -p
/dev/dsk/c1t0d0s0 - / ufs - no 
rw,intr,largefiles,logging,onerror=panic,suid,dev=740040
/dev/dsk/c1t0d0s3 - /usr ufs - no 
rw,intr,largefiles,logging,onerror=panic,suid,dev=740043
/dev/dsk/c1t0d0p0:boot - /boot pcfs - no rw,nohidden,nofoldcase,dev=763050
/proc - /proc proc - no dev=2c00000
fd - /dev/fd fd - no rw,suid,dev=2cc0000
mnttab - /etc/mnttab mntfs - no dev=2dc0000
/dev/dsk/c1t0d0s1 - /var ufs - no 
rw,intr,largefiles,logging,onerror=panic,suid,dev=740041
swap - /var/run tmpfs - no dev=1
swap - /tmp tmpfs - no dev=2
/dev/dsk/c1t0d0s4 - /home ufs - no 
rw,intr,largefiles,logging,onerror=panic,suid,dev=740044
/dev/dsk/c2t0d0s1 - /fs ufs - no 
rw,intr,largefiles,logging,onerror=panic,suid,dev=740401

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

Таблица смонтированных файловых систем

Команда mount по умолчанию добавляет запись в таблицу смонтированных файловых систем (файл /etc/mnttab в SVR4); umount удаляет запись из этой таблицы. Поля в таблице смонтированных устройств разделены пробелами и представляют блочное специальное устройство, точку монтирования, тип смонтированной файловой системы, опции монтирования и время, когда файловая система была смонтирована.

Таблица стандартных файловых систем

Таблица стандартных файловых систем (в файле /etc/vfstab или /etc/fstab, в зависимости от разновидности UNIX) описывает стандартные параметры для физических файловых систем. Поля в таблице (их 7) разделены пробелами и символами табуляции, и представляют, соответственно:

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

Если в поле нет значения, используется дефис (-). Рассмотрим пример записей из таблицы стандартных файловых систем из ОС Solaris 8:

#device           device                  mount   FS      fsck  mount   mount
#to mount         to fsck                 point   type    pass  at boot options
/dev/dsk/c1t0d0s0 /dev/rdsk/c1t0d0s0      /       ufs     1     no      logging
/dev/dsk/c1t0d0s3 /dev/rdsk/c1t0d0s3      /usr    ufs     1     no      logging
/dev/dsk/c1t0d0s1 /dev/rdsk/c1t0d0s1      /var    ufs     1     no      -
/dev/dsk/c1t0d0s4 /dev/rdsk/c1t0d0s4      /home   ufs     2     yes     logging
...

Получение информации о файловых системах

Для получения информации о смонтированных физических файловых системах используется команда df со следующим синтаксисом:

df [ -F ТипФС ] [ -abegklntV ] [ -o специфические_опции ]
   [ устройство | каталог | файл | ресурс ... ]

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

Рассмотрим примеры выполнения команды df в ОС Solaris:

[kravchuk@arturo 12:11:00 /]$ df -k
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c1t0d0s0     245983   20713  200672    10%    /
/dev/dsk/c1t0d0s3    3096090 1782106 1252063    59%    /usr
/dev/dsk/c1t0d0p0:boot
                       10797    1622    9175    16%    /boot
/proc                      0       0       0     0%    /proc
fd                         0       0       0     0%    /dev/fd
mnttab                     0       0       0     0%    /etc/mnttab
/dev/dsk/c1t0d0s1     491983  204863  237922    47%    /var
swap                  324832      16  324816     1%    /var/run
swap                  337828   13012  324816     4%    /tmp
/dev/dsk/c1t0d0s4    2305873 1021225 1238531    46%    /home
/dev/dsk/c2t0d0s1    6192197 5633827  496449    92%    /fs
[kravchuk@arturo 12:45:58 /]$ df
/                  (/dev/dsk/c1t0d0s0 ):  450540 blocks   120616 files
/usr               (/dev/dsk/c1t0d0s3 ): 2627968 blocks   338652 files
/boot              (/dev/dsk/c1t0d0p0:boot):   18350 blocks       -1 files
/proc              (/proc             ):       0 blocks     3615 files
/dev/fd            (fd                ):       0 blocks        0 files
/etc/mnttab        (mnttab            ):       0 blocks        0 files
/var               (/dev/dsk/c1t0d0s1 ):  574236 blocks   240784 files
/var/run           (swap              ):  647568 blocks    43108 files
/tmp               (swap              ):  647568 blocks    43108 files
/home              (/dev/dsk/c1t0d0s4 ): 2569298 blocks   379999 files
/fs                (/dev/dsk/c2t0d0s1 ): 1116738 blocks   688872 files