Як налаштувати сервер NFS, який кешує загальну мережу?


14

Дані користувача зберігаються на двох досить великих (> 1 PB) сховищах OpenStack Swift. Нехай вони будуть Кластер А і кластер В .

Окрім того, є кілька ПЗ, які потребують взаємодії з цими даними. Сервери в цих PoPs фактично без диска, тобто жодні користувацькі дані не зберігаються на них і ніколи не завантажуються на них. Поп-групи можна згрупувати у загальносвітові регіони (наприклад, Північна Америка , Південна Африка , Центральна Європа та ін.).

Деякі PoPs знаходяться досить далеко від кінцевих точок Swift будь-якого з кластерів, вводячи небажану затримку. Щоб дещо пом’якшити це, я хочу встановити сервер шлюзу кешування у кожному з регіонів, який кешуватиме r / w запити до найближчого кластеру.

В даний час клієнти в будь-якому з PoPs отримують доступ до даних користувачів постійною змонтованою швидкою віртуальною файловою системою , яка є модулем FUSE, який монтує Swift Object Storage як блок-пристрій (більш-менш). Однак насамперед svfs не все так стабільно, і в майбутньому клієнти повинні отримати доступ до кеш-серверів через NFS.

Це схема однієї гілки потрібної архітектури:

+------------------+                +------------------+    NFS   +------------------+
|    Cluster A     |     SVFS       |  Region 1 Cache  +---------->  R1 PoP a Client |
|                  +---------------->                  |          |                  |
|Persistent Storage|                |Ephemeral  Storage+----+     |Generates R/W Load|
+-----------------++                +------------------+    |     +------------------+
                  |                                         |
                  |                 +------------------+    | NFS +------------------+
                  |      SVFS       |  Region 2 Cache  |    +----->  R1 PoP b Client |
                  +----------------->                  |          |                  |
                                    |Ephemeral  Storage|          |Generates R/W Load|
                                    +------------------+          +------------------+

Мені знайомі основи налаштування NFS та svfs.

Питання полягає в тому, як я можу налаштувати кешуючий сервер для використання всіх доступних ресурсів (призначений розділ кеша, оперативна пам'ять) для кешування якомога агресивніше і якомога більше даних, перш ніж записати в точку монтажу svfs? В основному це зводиться до: Як я можу кешувати каталог у Linux?

Якщо можливо, читання та запис має бути консолідовано, а розміри блоків у запитах FUSE повинні бути не менше 128 кб, якщо це можливо для максимальної пропускної здатності та мінімізації затримок, якщо кеш потрібно записувати в кластер.

Додаток 1 : Я переключив модуль кріплення кластера зі svfs на S3QL на кількох серверах. Кешування S3QL трохи покращило продуктивність. Я спробую отримати деякі дані про ефективність для повноти.


ви можете спробувати включити fs-кеш для клієнтів nfs: cyberciti.biz/faq/…
kofemann

Перегляньте сторінку serverfault.com/a/441443/345699 . Можливо, це допоможе у ваших пошуках
Стівен K7FAQ

Відповіді:


1

Якщо вбудовані механізми Linux (наприклад, cachefsака cachefilesd) не працюють, і у вас є бюджет, ви можете заглянути в WAFS (файлові послуги широкої області). Це пристрої, розроблені для агресивного кешування NFS (і CIFS), щоб спробувати приховати затримки, зазвичай пов'язані з посиланнями WAN.


1

Я насправді не експерт у цій галузі (але це впевнено цікаво!).

Що я шукав останнім часом, це в основному dm-кеш для LVM, з SSD-файлами для кешування його частини. Ось приклад тексту з readhat, який має хороший огляд, але він не прив’язаний до RH: https://www.redhat.com/en/blog/improving-read-performance-dm-cache

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.