Материал: 6261

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

121

Такая ситуация требует отдельного изучения опций для каждой ФС. Кроме того, /etc/fstab имеет свои специфические опции.

Набор наиболее распространенных опций:

async

Весь ввод/вывод осуществляется асинхронно

sync

Весь ввод/вывод осуществляется синхронно

atime

Обновлять времена обращения (по умолчанию)

noatime

Времена обращения не обновляются

auto

Система может быть смонтирована с опцией -а (для всех)

noauto

Система не может быть смонтирована с опцией -а (для всех)

defaults

Аналог rw,suid,dev,exec,auto,nouser,asunc

dev

Файлы устройств ФС интерпретируются как устройства

nodev

Файлы устройств запрещены

exec

Право на запуск исполняемых файлов

noexec

Запрет на запуск исполняемых файлов

suid

Биты SUID и SGID действуют

nosuid

Биты SUID и SGID не действуют

user

Обычный пользователь может смонтировать систему.

 

Подразумевает опции: noexec,nosuid,nodev

nouser

Только root может монтировать систему

remount

Перемонтировать уже смонтированную систему (например, для

 

изменения опций системы)

ro

Смонтировать ФС только для чтения

rw

Смонтировать ФС для чтения и записи

4.13 Файловые системы loopback, squashfs, overlayfs и fuse

Наряду с рассмотренными выше ФС на разделах дисков и в ядре ОС, используется множество специальных ФС. Мы рассмотрим четыре из них: loopback, squashfs, overlayfs и fuse.

Термин loopback означает - «обратная петля». Применительно к нашей тематике он будет означать:

•циклическое устройство, когда мы будем говорить о блочном устройстве;

•циклическая ФС, когда мы будем говорить о файловой системе, которая соз-

дана в отдельном файле.

Узлы циклических устройств находятся в директории /dev. Следующий пример показывает вариант создания десяти циклических устройств: /dev/loop1, …,

122

/dev/loop9.

 

for x in 0 1 2 3 4 5 6 7 8 9; do

 

[ -e /dev/loop$x ] || mknod /dev/loop$x b 5

$x

done

 

Циклические ФС обычно создаются в файлах, которые могут быть сжатыми и зашифрованными. Для примера рассмотрим создание ФС типа ext2fs в файле /tmp/ramdisk и последующее монтирование созданной ФС в директорию /mnt/initrd:

# Используемые константы

BLKSIZE=1024 #

Размер блока в байтах

RDSIZE=4000

#

Количество блоков в ФС

RBLOCK=0

#

Число резервных блоков

#Создаем файл, забитый нулями

#(dd — преобразование и копирование файлов)

dd if=/dev/zero of=/tmp/ramdisk bs=$BLKSIZE count=$RDSIZE

# Создаем ФС в файле ext2fs

/sbin/mke2fs -F -m $RBLOCK -b $BLKSIZE /tmp/ramdisk $RDSIZE

# Монтируем ФС в файле к директории через устройство /dev/loop0 mount /tmp/ramdisk /mnt/initrd -t ext2 -o loop=/dev/loop0

Широкое распространение получила технология хранения файловых систем в

сильно сжатых файлах для live-дистрибутивов. Такой подход позволяет практически на прямую использовать технологии созданные для работы с ФС на CD дисках. Например, если устройство /dev/sda1 содержит файловую систему ntfs, в которой имеется файл /asu14.04upk/casper/filesystem.squashfs, то монтирование такой ФС (типа squashfs) к директории /rofs ядра ОС осуществляется двумя командами:

#Монтируем устройство /dev/sda1 в директорию /cdrom mount /dev/sda1 /cdrom -t ntfs -o ro

#Монтируем ФС в файле к директории /rofs через устройство /dev/loop1 mount /cdrom/asu14.04.upk/casper/filesystem.squashfs /rofs \

-t squashfs -o loop=/dev/loop1

Другая специальная ФС — overlayfs — является вариантом реализации каскадной файловой системы для ОС Ubuntu и ее клонов.

Каскадная файловая система (КФС) — это виртуальная ФС, позволяющая «прозрачно видеть» две изолированные ФС как одну.

Работы над КФС ведутся с середины 90-х годов. В январе 2007 года, в некоторые дистрибутивы Linux, была включена КФС, названная UnionFS. Альтернативная разработка Aufs (AnotherUnionFS) ведется с 2006 года.

123

Каскадно-объединенное монтирование — одновременное монтирование разных нескольких файловых систем как одну, например для объединения ФС нескольких сайтов.

Overlayfs обеспечивает надежное монтирование двух файловых систем на разных уровнях. Рассмотрим подробнее этот вопрос на примере:

•пусть устройство CDROM монтировано в директорию /cdrom с возможностью только чтение;

•пусть в директорию /mnt/initrd монтирован, созданный ранее ramdisk, который имеет возможность чтения и записи;

•проведем каскадно-объединенное монтирование в директорию /tmp/mnt,

предполагая, что CDROM будет монтирован на нижнем уровне, а ramdisk — на верхнем;

•учтем, что в ядре ОС имеется имя overlayfs, которое не является

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

# Команда каскадно-объединенного монтирования mount -t overlay overlay /tmp/mnt -o \

rw,upperdir=/mnt/initrd,lowerdir=/cdrom

В результате такого действия, в директории /tmp/mnt, мы будем видеть все файлы директории /cdrom. Кроме того, мы можем редактировать и использовать любой файл директории /cdrom, но сохраняться эти файлы будут в памяти ramdisk.

Последня специальная ФС, которую мы кратко рассмотрим — FUSE.

FUSE — Filesystem in Userspace — файловая система в пространстве пользователя. FUSE реализована в виде модуля для UNIX-подобных ОС. Этот модуль позволяет пользователям без привилегий создавать свои ФС, без необходимости переписывать код ядра ОС. Это достигается за счет запуска кода файловой системы в пространстве пользователя, в то время как модуль FUSE предоставляет мост для актуальных интерфейсов ядра.

На рисунке 4.8 показана схема взаимодействия системных вызовов пользователей с ядром ОС и ПО в пространстве пользователя.

Хорошо видно, что:

•схема взаимодействия системного и прикладного ПО напоминает аналогичное взаимодействие микроядра и серверных сервисов;

•кроме системной библиотеки glibc необходима библиотека libfuse.

124

Рисунок 4.8 - Схема работы модуля FUSE

Для операций монтирования и демонтирования используется специальная утилита fusermount, использующая файл конфигурации /etc/fuse.conf:

fusermount [OPTIONS] MOUNTPOINT

Опция -u используется для демонтирования FUSE.

Следует заметить, что многие видные разработчики ОС критикуют FUSE, но эти вопросы выходят за рамки нашей дисциплины.

Замечание

Разделы винчестера, содержащие ФС ntfs, монтируются в Linux с типом fuseblk.

4.14Дисковые квоты

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

Рано или поздно может случиться так, что некоторая ФС на внешнем носителе, подключенная к древовидной структуре ядра ОС, заполнится и блокирует нормальную работу ОС.

По умолчанию, ФС ext2fs резервирует 5% места для пользователя root.

Принято считать, что для нормальной работы ФС требуется свободное пространство:

•не менее 10% дискового пространства (пространство раздела);

125

• не менее наибольшего файла в файловой системе.

Рекомендуется размешать /home, /opt, /tmp, /var, /usr/local в разных разделах диска.

Определить свободное пространство диска можно командой df:

$ df

Файл.система

1K-блоков Использовано

Доступно Использовано%

Cмонтировано в

/dev/sda5

21356772

14841812

5430084

74%

/

udev

1669124

12

1669112

1%

/dev

tmpfs

670748

780

669968

1%

/run

none

5120

0

5120

0%

/run/lock

none

1676860

84

1676776

1%

/run/shm

none

102400

12

102388

1%

/run/user

/dev/sda1

51199120

26771180

24427940

53%

/cdrom

$

 

 

 

 

 

Администратор ОС должен отслеживать наличие достаточного дискового пространства ФС. Для этих целей имеется специальное системное ПО под общим названием quota. Естественно, ядро ОС должно поддерживать команды этого пакета.

Чтобы включить квоты для конкретной файловой системы, нужно в корень ФС поместить бинарные файлы:

•quota.user — для персональных квот;

•quota.group — для групповых квот.

Управление квотами выполняется с помощью команд:

quotastats

Проверка поддержки квот ядром ОС.

quotacheck

Сканирование заданной ФС и первоначальное создание файлов

 

quota.user и quota.group.

edquota

Редактор квот.

quotaon

Активация настроек квот для ФС.

quotaoff

Деактивация настроек квот для ФС.

quota

Проверка пользователем, установленных для него квот.

Источник: https://studfile.net/preview/16438529/