CacheFS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:45, 27 ноября 2016.

CasheFS — название нескольких похожих технологий, созданных для ускорения работы Network File System. Эти технологии работают схожим образом: они сохраняют (кэшируют) копии файлов на локальном жёстком диске. Если файл потребуется снова, то получить доступ к нему локально будет быстрее, чем через сеть.

CacheFS используется в нескольких UNIX-подобных операционных системах. Оригинальная версия была создана в 1993 корпорацией Sun Microsystems для операционной системы Solaris 2.3. В 1994 технология была применена в IRIX 5.3. Вариант для Linux был реализован только в 2003.[1]

Кэширующая файловая система

Для повышения производительности удаленных файловых систем, таких как NFS, и медленных устройств, таких как дисководы CD-ROM, может применяться кэширующая файловая система (CacheFS).

Кэширующая файловая система (CacheFS). Изображен клиент, подключенный к серверу по сети. На дисках сервера хранится исходная файловая система. На дисках клиента хранится кэшируемая, или целевая файловая система.

В случае ее применения данные, считанные из удаленной файловой системы или с компакт-диска, сохраняются в кэше локальной системы, что обеспечивает немедленный доступ к ним при втором обращении. Алгоритм работы CacheFS заключается в отображении исходной файловой системы (например, NFS) на некоторую целевую (локальную) файловую систему

Алгоритм работы CacheFS:

  1. После создания на клиенте файловой системы CacheFS вы можете указать файловые системы, которые должны быть смонтированы в кэше.
  2. При обращении к файлам исходной файловой системы они загружаются из целевой файловой системы и остаются в кэше. Кэш не заполняется заранее. Поэтому первый запрос к файлу выполняется за обычное время доступа к NFS, а последующие - за время доступа к локальной системе JFS.
  3. CacheFS следит за тем, чтобы содержимое кэша не устаревало. Для этого время последнего изменения файлов в кэше регулярно сравнивается со временем их изменения в целевой файловой системе.
  4. Если эти значения не совпадают, все данные и атрибуты каталога или файла удаляются из кэша и заново загружаются из исходной файловой системы.

CacheFS может применяться, например, в среде CAD. В этом случае все базовые копии чертежей будут храниться на сервере, в то время как клиенты будут работать с локальными кэшированными копиями.

CacheFS не поддерживает чтение и запись файлов размером больше 2 ГБ.[2]

Преимущества CacheFS

Поскольку все данные после получения с сервера кэшируются, скорость выполнения запросов к файловой системе существенно увеличивается.

Небольшие объемы данных могут храниться в памяти клиента, поэтому преимущества кэширующей файловой системы проявляются в основном при работе с большими объемами данных. Дополнительное преимущество состоит в том, что данные остаются в кэше и после перезапуска системы, в то время как данные, находящиеся в оперативной памяти, при этом теряются.

Производительность NFS может быть ограничена "медленными" сетями или перегруженным сервером. В этом случае непосредственная работа клиентов с сервером будет медленной. CacheFS не ускоряет первое обращение к данным, но ускоряет обработку всех последующих запросов к тем же данным, которые выполняются без участия сервера и передачи по сети.

По мере увеличения объема данных в кэш-памяти клиентов нагрузка на сервер NFS уменьшается. Это означает, что сервер может обслуживать больше клиентов.

Уменьшение числа запросов, передаваемых по сети, снижает нагрузку на сеть, освобождая ее для других задач.

Не каждое приложение выиграет от применения CacheFS. Поскольку CacheFS повышает только производительность чтения, ее применение эффективно только для приложений, много раз считывающих одни и те же данные. Примером могут служить приложения CAD, которые часто обращаются к большим моделям при вычислениях.

Проведенные тесты показывают, что в случае применения файловой системы CacheFS скорость последовательного чтения возрастает в 2,4 - 3,4 раза по сравнению с чтением данных из памяти или с диска сервера NFS.[3]

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

CacheFS не повышает производительность записи. Однако при монтировании файловой системы CacheFS командой mount вы можете указать в опции -o ряд параметров, управляющих записью. Они влияют на производительность последующего чтения данных.

Описание параметров: write around

     В режиме write around (применяется по умолчанию) операции записи обрабатываются также как в NFS. В этом режиме данные записываются в исходную файловую систему, а соответствующий файл удаляется из кэша. Это означает, что при последующем чтении только что записанных данных они будут получены с сервера.

non-shared

     Режим non-shared применяется при исключительном доступе на запись к исходной файловой системе. В этом режиме все операции записи выполняются одновременно в локальной и в исходной файловых системах, причем соответствующий файл остается в кэше. При последующем чтении возвращаются данные из кэша без обращения к серверу.

Поскольку результаты небольших операций чтения сохраняются в памяти в любом случае, их кэширование на диске не повышает производительность. Также при кэшировании не повышается производительность неупорядоченного чтения различных блоков данных, кроме случаев повторного обращения к тем же блокам.

Первый запрос на чтение отправляется серверу, поскольку данные кэшируются только после получения запроса от пользователя. Поэтому первый запрос выполняется с такой же скоростью, как и обычные запросы NFS. Все последующие запросы к тем же данным выполняются со скоростью доступа к JFS.

Актуальность данных в кэше проверяется периодически, с некоторым интервалом. Поэтому кэшировать часто изменяющиеся данные опасно. Рекомендуется применять CacheFS для кэширования только неизменяемых или редко изменяемых данных.

Производительность записи данных в кэширующие файловые системы в NFS версий 2 и 3 различается. Проведенные тесты указывают на следующие особенности:

  • Последовательная запись в новый файл из кэширующей файловой системы NFS версии 2 может выполняться на 25 процентов медленнее по сравнению с обычной версией той же файловой системы.
  • Последовательная запись в новый файл из кэширующей файловой системы NFS версии 3 может выполняться в 6 раз медленнее по сравнению с обычной версией той же файловой системы.[4]

Поддержка кэширующей файловой системы

Кэширующая файловая система (CacheFS) представляет собой механизм кэширования общего назначения, увеличивающий производительность и масштабируемость NFS за счет уменьшения нагрузки на сервер и сеть.

Обладая многослойной структурой, CacheFS дает возможность кэшировать одну файловую систему в другой. Использование CacheFS в среде NFS увеличивает соотношение количества клиентов к количеству серверов, уменьшает нагрузку на сервер и сеть, и увеличивает производительность клиентов, соединенных через медленные каналы связи, например по двухточечному протоколу (PPP).

Создание кэша в системе клиента ускоряет доступ к смонтированным файловым системам, поскольку для получения доступа к данным не нужно отправлять запрос по сети. Данные помещаются в кэш при первом обращении пользователя к этим данным. До тех пор, пока пользователь не запросит какие-либо файлы с сервера, кэш будет оставаться пустым. Первое обращение к файлу может занять много времени, но последующие запросы к тем же файлам будут выполняться значительно быстрее.

Особенности:

  1. Кэширование файловых систем / (корневая) и /usr невозможно.
  2. Монтировать можно только общие файловые системы.
  3. Кэширование локальной дисковой журналируемой файловой системы (JFS) не дает никакого выигрыша в производительности.
  4. Для выполнения задач, перечисленных в приведенной ниже таблице, необходимы системные права доступа или права доступа root.
Процедура Команды быстрого доступа SMIT Команда или файл
Создать кэш cachefs_admin_create cfsadmin -c каталог-монтирования1
Указать файлы, предназначенные для монтирования cachefs_mount mount -F cachefs -o backfstype=тип-файловой-системы, cachedir=каталог-кэша[,options] резервная-файловая-система каталог-монтирования2 или измените файл /etc/filesystems
Изменить кэш cachefs_admin_change Удалите кэш, а затем снова создайте его командой mount с нужными параметрами
Показать данные о кэшировании cachefs_admin_change cfsadmin -l каталог-монтирования
Удалить кэш cachefs_admin_remove
  1. Размонтировать файловую систему: umount каталог-монтирования
  2. Определить ИД кэша: cfsadmin -l каталог-монтирования
  3. Удалить файловую систему: cfsadmin -d ИД-кэша каталог-кэша
Проверить целостность файловой системы cachefs_admin_check fsck_cachefs каталог-кэша3

Примечания к таблице:

  1. После того как кэш будет создан, выполнять какие-либо операции непосредственно в самом каталоге кэша (cachedir) не рекомендуется. Это может вызвать конфликты с программным обеспечением CacheFS.
  2. Если монтируемые каталоги задаются в команде mount, то эту команду нужно заново выполнять после каждой перезагрузки системы.
  3. Для того чтобы только проверить целостность файловых систем (не внося при этом исправлений), используйте опции -m или -o команды fsck_cachefs.

После миграции прежних версий на версию AIX 6.1 или более позднюю необходимо удалить и снова создать все старые файловые системы кэша.[5]

Настройка CacheFS

Файловая система CacheFS не создается по умолчанию. Кроме того, опцию ее создания нельзя выбрать при создании файловой системы NFS. Вы должны явно указать кэширующие файловые системы.

Вы должны явно указать кэширующие файловые системы. Для этого нужно выполнить следующие действия:

  1. Создайте локальную кэширующую файловую систему командой cfsadmin:
    # cfsadmin -c -o
    где параметры - это параметры выделения ресурсов, а каталог - имя каталога, в котором будет создан кэш.
  2. Смонтируйте поверх нее исходную файловую систему:
    # mount -V cachefs -o backfstype=nfs, cachedir=/каталог-кэша удаленный-хост:/каталог локальная-точка-монтирования
    где удаленный-хост:/каталог - это имя удаленного хоста и файловой системы, в которой находятся данные, а локальная точка монтирования - точка монтирования в системе клиента, в которой будут доступны данные из удаленной файловой системы.
  3. Файловой системой CacheFS можно также управлять с помощью SMIT (команда быстрого доступа: smitty cachefs).

При создании кэширующей файловой системы можно задать несколько параметров:

maxblocks - задает максимальное число блоков локальной файловой системы, возвращаемое в CacheFS. Значение по умолчанию - 90 процентов.
minblocks - задает минимальное число блоков локальной файловой системы, возвращаемое в CacheFS. Значение по умолчанию - 0 процентов.
threshblocks - задает число блоков, доступных клиенту в локальной файловой системе JFS, начиная с которого CacheFS возвращает число блоков, большее minblocks. Значение по умолчанию - 85 процентов.
maxfiles - максимальное число файлов, доступное CacheFS, в процентах от общего числа I-узлов локальной файловой системы. Значение по умолчанию - 90 процентов.
minfiles - максимальное число файлов, доступное CacheFS, в процентах от общего числа I-узлов локальной файловой системы. Значение по умолчанию - 0 процентов.
maxfilesize - наибольший размер кэшируемого файла в мегабайтах. Значение по умолчанию - 3.[6]

Примечания

  1. CacheFS [Электронный ресурс] : Материал из Википедии — свободной энциклопедии: — Режим доступа:https://ru.wikipedia.org/wiki/CacheFS
  2. CacheFS [Электронный ресурс] : Материал из http://www.ibm.com/us-en/?lnk=m: — Режим доступа:http://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/com.ibm.aix.performance/cache_fs.htm
  3. CacheFS [Электронный ресурс] : Материал из http://www.ibm.com/us-en/?lnk=m: — Режим доступа:http://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/com.ibm.aix.performance/cachefs_perf_benefits.htm
  4. CacheFS [Электронный ресурс] : Материал из http://www.ibm.com/us-en/?lnk=m: — Режим доступа:http://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/com.ibm.aix.performance/cachefs_perf_impacts.htm
  5. CacheFS [Электронный ресурс] : Материал из http://www.ibm.com/us-en/?lnk=m: — Режим доступа:http://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/com.ibm.aix.networkcomm/nfs_cachefs.htm
  6. CacheFS [Электронный ресурс] : Материал из http://www.ibm.com/us-en/?lnk=m: — Режим доступа:http://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/com.ibm.aix.performance/config_cachefs.htm