Файловая система с репликацией данных (CFS)
Начиная с версии Solaris 2.3 Sun
предлагает новую возможность,
называемую файловой системой с
репликацией данных или кэширующей
файловой системой (CFS - Cashed File System). В
соответствии со стандартным
протоколом NFS файлы выбираются блок
за блоком прямо с сервера в память
клиента и все манипуляции с ними
происходят прямо в этой памяти.
Данные записываются обратно на
диск сервера. Программное
обеспечение CFS располагается между
кодом клиента NFS и методами доступа
сервера NFS. Когда блоки данных
получены кодом клиента NFS, они
кэшируются в выделенной области на
локальном диске. Локальная копия
называется файлом переднего плана
(front file), а копия сервера - файлом
заднего плана (back file). Любое
последующее обращение к
кэшированному файлу выполняется к
его копии на локальном диске, а не к
копии, находящейся на сервере. По
очевидным причинам такая
организация может существенно
уменьшить нагрузку на сервер.
К сожалению, CFS - это не
исчерпывающее средство для
снижения нагрузки на сервер.
Во-первых, поскольку она
действительно создает копии блоков
данных, система должна
обеспечивать определенные
мероприятия для поддержания
согласованного состояния этих
копий. В частности, подсистема CFS
периодически проверяет атрибуты
файла заднего плана (периодичность
такой проверки устанавливается
пользователем). Если файл заднего
плана был модифицирован, файл
переднего плана вычищается из кэша
и последующее обращение к
(логическому) файлу приведет к тому,
что он заново будет выбран с
сервера и кэширован. К сожалению,
большинство прикладных программ
продолжают работать с целым файлом,
а не с определенными блоками
данных. Например, программы vi, 1-2-3 и
ProEngineer читают и записывают свои
файлы данных целиком, независимо от
действительных целей пользователя.
(Вообще говоря, программы,
использующие для доступа к файлам
команду mmap(2), не обращаются к файлу
в целом, в то время как, программы,
использующие команды read(2) и write(2),
обычно это делают). Как следствие, CFS
обычно кэширует весь файл. В
результате файловые системы NFS,
подвергающиеся частым изменениям,
оказываются не очень хорошими
кандидатами для CFS: файлы будут
постоянно кэшироваться и
очищаться, что в конце концов
приводит к увеличению общего
сетевого трафика, по сравнению с
простой работой через NFS.
Проблема поддержания
согласованного состояния
кэшированных данных между
клиентами и сервером приводит
также к другой проблеме: когда
клиент модифицирует файл, файл
переднего плана аннулируется, а
файл заднего плана соответствующим
образом обновляется. Последующее
обращение по чтению к этому файлу
будет выбирать и снова кэшировать
файл. Если обновление файлов
является обычной практикой, этот
процесс приводит к большему
трафику, чем при работе стандартной
NFS.
Поскольку CSF является
относительно новой возможностью, к
сожалению было сделано очень мало
измерений ее поведения при
действительном использовании.
Однако, сама идея протокола CSF
приводит к следующим
рекомендациям:
- CSF следует использовать для
файловых систем, из которых
главным образом
осуществляется чтение данных,
например, для файловых систем
разделяемых кодов приложений.
- CSF особенно полезна для
разделения данных между
относительно медленными
сетями, например WAN,
соединенных с помощью линий
связи уровня менее чем Т1.
- CSF полезна и для
высокоскоростных сетей,
соединенных между собой
маршрутизаторами, которые
вносят задержку.
[Предыдущая глава]
[Оглавление] [Следующая
глава]
|