
- •Распределенные файловые системы
- •План
- •Литература
- •Кластеры хранения данных
- •Преимущества
- •Сложности
- •файловые системы
- •Классификация
- •Пути обеспечения надежности
- •Структурная схема
- •Виртуальная файловая система
- •Структура VFS
- •Протокол NFS
- •Сервера NFS
- •Номера программ, версий
- •NFS демон (Nfsd)
- •Экспортирование и монтирование
- •Пример экспортирования
- •Блокировки
- •Кэширование
- •Версии NFS
- •Особенности NFS
- •SMB/CIFS
- •Структура сообщений SMB
- •Протокол – ориентированный на сеансы
- •Особенности SMB/CIFS
- •Автомонтирование
- •Демон amd
- •Карта монтирования
- •Пример
- •Возможности
- •Другие сетевые файловые системы
- •Andrew File System (AFS)
- •Распределенность
- •Основные логические компоненты
- •Пример
- •Свойства
- •Особенности архитектуры
- •Структурная схема
- •Особенности кэширования
- •Обеспечение безопасности и устойчивости
- •Сравнение c другими fs
- •Global File System (GFS)
- •Клиенты и сервера
- •Структурная схема
- •Основные компоненты
- •Служба файловой системы
- •Служба блокировки
- •Служба информации
- •Служба отключения узлов
- •Другие распределенные файловые системы
- •GRID системы
- •Вопросы

Структурная схема
Клиент
выполняется ядром
Сервер
Ядром
В пространстве пользователя
Виртуальная файловая система
Специальный уровень абстракции файловых систем

Виртуальная файловая система
Каждая файловая система должна выполнять некоторый набор операций
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
Сигнал о перегрузке машины, которая захватила блокировку
Блокировка освобождается