Слайд 1Операційні системи
Лекція 9
Розподілені файлові системи
Слайд 2План лекції
Проблема спільного користування файлами
Семантика UNIX
Сесійна семантика
Структура файлової системи
Зберігання на
серверах інформації про клієнтів
Рішення проблеми узгодження
Реплікація
Слайд 3Проблема спільного користування файлами
Необхідно точно визначити семантику зчитування і записування
Семантика
UNIX
Сесійна семантика
Незмінні файли
Неподільні транзакції
Слайд 4Семантика UNIX
Якщо операція зчитування здійснюється після операції записування, то зчитують
вже оновлений файл
Якщо було дві операції записування, то зчитується результат
останньої операції
У централізованій системі легко і зрозуміти, і реалізувати
У розподіленій системі можна реалізувати лише якщо є лише один файл-сервер і клієнт не кешує файли
Продуктивність значно знижується
Іноді дозволяють клієнтам кешувати файли, але усі зміни одразу надсилають серверу
Це неефективно
Слайд 5Сесійна семантика
Зміни у файлі видимі лише тому процесу, що відкрив
цей файл для модифікації
Усі інші бачать зміни у файлі лише
після його закриття
Існує проблема одночасного використання файлу двома і більше клієнтами
Варіант 1 – остаточним є файл, який був закритий останнім
Варіант 2 – будь-який з відкритих файлів (простіше реалізувати)
Слайд 6Структура файлової системи
Розподіл серверної і клієнтської частин між машинами
Структуризація сервісів
файлів і каталогів
Зберігання на серверах інформації про клієнтів
Слайд 7Розподіл серверної і клієнтської частин між машинами: варіанти
Немає жодної різниці
між клієнтом і сервером
На усіх машинах – одне й те
саме базове програмне забезпечення
Приклад – NFS
Файл-сервер – програма режиму користувача
Система може бути сконфігурована як клієнт, як сервер, як клієнт і сервер одночасно
Клієнт і сервер – принципово різні машини як у термінах апаратури, так і у термінах програмного забезпечення
Слайд 8Структуризація сервісів файлів і каталогів: варіанти
2 сервіси на одному сервері
Різні
машини
Цей варіант більш гнучкий
Крім того, таким чином можна досягти спрощення
ПЗ
Недолік – збільшення інтенсивності мережного обміну
Слайд 9Зберігання на серверах інформації про клієнтів
Не зберігати (stateless)
Зберігати (statefull)
Statefull сервер
пам’ятає, які файли відкрив кожний користувач, положення покажчиків, тощо
У разі
відмови сервера таблиці втрачаються
Слайд 10Переваги statefull і stateless серверів
Stateless
Відмовостійкість
Не потрібні виклики OPEN/CLOSE
Менше пам’яті сервера
витрачається
Немає обмежень на число відкритих файлів
Відмова клієнта не створює проблем
для сервера
Statefull
Коротші повідомлення під час запитів
Краща продуктивність
Можливе зчитування з випередженням
Легше досягти ідемпотентності
Можливе блокування файлів
Слайд 11Кешування
Диск сервера пам’ять сервера пам’ять клієнта диск
клієнта
Кешування на сервері
Якими одиницями оперує кеш
Цілі файли – ефективніше зберігання
на диску (менше число обмінів)
Дискові блоки – ефективніше використання пам’яті кешу і дискового простору
Правило заміни даних у кеші
Наприклад, алгоритм LRU (Last Recently Used)
Кешування на сервері легко реалізується і прозоро для клієнта
Кешування на боці клієнта
Позбавляє від зайвого трафіку
Породжує безліч проблем!
Слайд 12Рішення проблеми узгодження
Алгоритм наскрізного записування
Під час модифікації даних у кеші
нове значення негайно надсилається серверу
Недолік – інтенсивність мережного обміну зменшується
лише при зчитуванні
Відкладене записування
Клієнт помічає, що файл вже змінений
Приблизно один раз за 30 секунд усі зміни збираються разом і надсилаються
Записування-по-закриттю
Сесійна семантика
Алгоритм централізованого керування
Семантика UNIX
Передбачає statefull – підхід
Якщо файл вже кимось відкритий, його не можна відкрити для записування
Слайд 13Реплікація
Система оперує кількома копіями файлів, причому кожна копія знаходиться на
окремому сервері
Переваги:
Підвищення надійності
Розподіл навантаження між кількома серверами
Слайд 14Способи досягнення прозорості реплікації
Програміст, що створює прикладну програму, сам керує
реплікацією
Під час створення файлу автоматично створюються його копії
Наприклад,
/machine1/usr/ast/xyz – основний
файл
/machine2/usr/ast/xyz і
/machine3/usr/ast/xyz – його копії (записують одночасно)
Для розподілених систем такий підхід не рекомендують!
“Ледаща” реплікація
Спочатку записують файл, а потім роблять його копії
Групові зв’язки
Визначені групи
Файл записують у групу, а система автоматично (одночасно) створює його копії
Слайд 15Контроль змін реплікованих файлів
Реплікація першої копії
Виділяють первинний сервер
Зміни надсилають на
первинний сервер, а він – на вторинні
Голосування
Відстежують версії файлів
Нехай є
N серверів з копіями
Під час записування зміни вносять щонайменше у W копій
Під час зчитування переглядають щонайменше R копій
Якщо R+W>N, то буде знайдена хоча б одна з копій останньої версії
Оскільки зчитування здійснюють частіше, ніж записування, то обирають R