2. Четверть века CIFS
• 1984: IBM, Sytec
– проф. Барри Фейгенбаум
• 1985-1998: Intel, 3Com, Microsoft
• 1992: сервер Samba 0.1
– экспорт ресурсов Unix в DOS
• 2008: Samba 3.2
3. Почему CIFS?
• Кроссплатформенная поддержка
– Windows *, Mac OS X, *BSD, GNU/Linux
• Стандарт де-факто для миллионов
машин (и не только Windows)
• Все альтернативы имеют свои
проблемы
5. Альтернативные проблемы
• Блокировки
– «Падчерица» POSIX
– Advisory против Mandatory
– Сброс при закрытии файла (POSIX)
– Вне протокола (NFSv3)
• Блокировки POSIX не готовы к
горизонтальной кластеризации
6. Проблемы кластерных ФС
• Сетевой координатор блокировок
– Много дополнительного трафика
– Плохое масштабирование (десятки, не
сотни узлов)
• Сервер метаданных
– Плохая локализация метаданных
– Много дополнительного трафика
7. Если все так плохо, то ...
• К счастью:
– Традиционные POSIX приложения
редко используют файловые
блокировки внутри себя
– Традиционные POSIX приложения
редко требуют координации между
протоколами доступа к одним и тем
же данным
8. Если все так плохо, то ...
• ... всё может стать еще хуже
– Новые типы нагрузки
– Кросс-протокольный доступ к данным
– Рост неструктурированных данных
• Особенно в Web и социальных сетях
9. Почему CIFS?
• CIFS удивительно богат
функционально
• Легкость адаптации к новым
нагрузкам
• Хорошая производительность
– Компактный RPC
– Понятная модель кэширования
10. Особенности CIFS
• Обратная модель ответственности
– Сервер не отвечает за
метаинформацию приложения
– Гибель сессионной информации
некритична
– Автоматическое восстановление
соединений без помощи приложения
12. Samba
• Семантический преобразователь
– Файловые операции
– Учетные записи
– Информация об авторизации
– Информация об устройствах
• 12-15 баз данных в типичной среде
13. Samba
• Файловые операции
– Богатая семантика Win32
– Более бедная семантика POSIX
– NTCreateX vs CreateFile() vs fopen():
• CreateFile в Win32: 6 параметров
• NTCreateX в CIFS: 13 параметров
• fopen() в POSIX: 2 параметра
14. Samba и базы данных
• tdb: trivial data base
– Простая база <ключ>:<значение>
– Быстрое чтение, быстрая запись
между процессами
– Отражение в память (mmap) на
большинстве архитектур
17. Помощь от природы (CIFS)
• Кластерная файловая система
– Не может потерять данные и
метаинформацию
– Принцип «всё или ничего»
• CIFS
– Можно потерять метаинформацию
– За все отвечает клиент
18. Помощь от природы (CIFS)
• Пример: opendb
– Открытый файл — запись в opendb
– Открыт файл на узле N — информация
только на узле N
– Падение узла — автоматическое
уничтожение записей (и закрытие
файлов)
19. Помощь от природы (CIFS)
• Восстановление после сбоя
– Пометка записей (RSN = record
sequence number)
– Очистка записей, связанных с узлом N
– Выбор оставшейся записи с
наивысшим RSN
– Результат — прежнее рабочее
состояние
21. TDB → Clustered TDB
• http://ctdb.samba.org/
• Два уровня поиска записей
– Location master: определение
положения data master
– Data master: определение хранилища
данных
23. TDB → Clustered TDB
• Location master
– Фиксированный хэш по ключу записи
• Data master
– Переменное положение
– Зависит от активности работы с
записью
– Смена владельца через Location master