Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Судаков / Лекции / lec12_fs.ppt
Скачиваний:
62
Добавлен:
20.03.2015
Размер:
2.76 Mб
Скачать

Структурная схема

Клиент

выполняется ядром

Сервер

Ядром

В пространстве пользователя

Виртуальная файловая система

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

Виртуальная файловая система

Каждая файловая система должна выполнять некоторый набор операций

Read

Write

Mkdir

Rmdir

Каждая файловая система имеет свою организацию структур на диске

С точки зрения пользовательских программ

С файлом на дискете можно работать так же как с файлом на жестком диске или файлом на удаленной машине

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

Структура VFS

Пользовательские программы Функции read() write() open() close()

Виртуальная файловая система Независимое от файловой системы представление

Файлов, каталогов, операций read() write() open() close()

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

 

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

 

Код ФС

Реализация

 

Функций read() write()

 

 

 

 

 

Функций read() write() open() close()

 

open() close()

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

Протокол NFS

Клиент – «умный»

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

VFS вызывает на сервере соответствующие процедуры RPC

Почти всю логику работы выполняет клиент

Сервер – «тупой»

Быстро выполняет все запросы клиентов по доступу к своим ресурсам

В новых версиях позволяет также управлять клиентами

Сервера NFS

SUN RPC

Сервера

Nfsd – файловые операции

Mountd – обработка операций монтирования

Lockd – блокировки файлов

Statd – отработка перегрузок

Rquotad – квоты файловой системы

Statd – сигнализация о перегрузках машин

Клиенты

Вызывают необходимые Rpc

Номера программ, версий

NFS демон (Nfsd)

Работает с одним клиентом

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

чтение

Запись

Создание каталогов

При большом количестве клиентов необходимо запускать больше серверов

program NFS_PROGRAM { version NFS_VERSION {

void

NFSPROC_NULL(void)=0; attrstat

NFSPROC_GETATTR(fhandle)=1; attrstat

NFSPROC_SETATTR(sattrargs)=2; void

NFSPROC_ROOT(void)=3;

} = 2;

version NFS_VERSION {

} = 3;

} = 10003;

Экспортирование и монтирование

Чтобы к файловой системе (каталогу) можно было обращаться ее необходимо экспортировать с сервера

Разрешить доступ

Чтобы клиент мог воспользоваться экспортированной файловой системой ее необходимо смонтировать

mountd – сервер монтирования

принимает запрос на монтирование

регистрирует клиента

возвращает клиенту дескриптор (file handle)

Пример экспортирования

Экспорт

/

@polygon(no_root_squash,rw)

/usr/

@polygon(no_root_squash,rw)

/usr/local

@polygon(no_root_squash,rw)

/var

@polygon(no_root_squash,rw)

/home

@polygon(no_root_squash,rw)

Монтирование

mount cluster:/ /mnt/cluster

Блокировки

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

Пока один удерживает блокировку, другой не может ее захватить

Lockd

Получение и освобождение блокировок

Statd

Сигнал о перегрузке машины, которая захватила блокировку

Блокировка освобождается

Соседние файлы в папке Лекции