Bagaimana cara mengatur server NFS yang cache berbagi jaringan?

14

Data pengguna disimpan di dua cluster penyimpanan OpenStack Swift yang cukup besar (> 1 PB). Biarkan mereka menjadi Cluster A dan Cluster B .

Selain itu, ada beberapa PoP yang perlu berinteraksi dengan data itu. Server dalam PoPs ini secara efektif tidak memiliki disk, artinya tidak ada data pengguna yang disimpan atau pernah diunduh ke mereka. PoP dapat dikelompokkan ke dalam wilayah dunia umum (misalnya Amerika Utara , Afrika Selatan , Eropa Tengah dkk.).

Beberapa PoPs berada cukup jauh dari titik akhir Swift dari salah satu cluster, memperkenalkan latensi yang tidak diinginkan. Untuk mengurangi ini, saya ingin mengatur server gateway caching di masing-masing wilayah, yang akan men-cache permintaan r / w ke cluster terdekat.

Saat ini, klien di salah satu PoP mengakses data pengguna dengan sistem file virtual swift yang dipasang secara permanen , yang merupakan modul FUSE yang memasang Swift Object Storage sebagai perangkat blok (kurang lebih). Namun, svfs tidak terlalu stabil di tempat pertama dan di masa depan, klien harus mengakses server cache melalui NFS.

Ini adalah diagram dari satu cabang arsitektur yang diinginkan:

+------------------+                +------------------+    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|
                                    +------------------+          +------------------+

Saya akrab dengan dasar - dasar pengaturan NFS dan svfs.

Pertanyaannya adalah : Bagaimana saya bisa mengatur server caching untuk menggunakan semua sumber daya yang tersedia (partisi cache yang ditunjuk, RAM) untuk cache sebagai agresif dan data sebanyak mungkin sebelum menulis ke titik mount svfs? Pada dasarnya turun ke: Bagaimana saya bisa men-cache direktori di linux?

Jika memungkinkan, membaca dan menulis harus dikonsolidasikan dan ukuran blok dalam permintaan FUSE harus setidaknya 128rb jika mungkin untuk memaksimalkan throughput dan meminimalkan latensi jika cache perlu menulis ke cluster.

Tambahan 1 : Saya telah beralih modul mount cluster dari svfs ke S3QL pada beberapa server. Caching S3QL telah sedikit meningkatkan kinerja. Saya akan mencoba mendapatkan beberapa data kinerja untuk kelengkapan.

mınxomaτ
sumber
Anda dapat mencoba untuk mengaktifkan fs-cache pada klien nfs: cyberciti.biz/faq/…
kofemann
Silakan lihat serverfault.com/a/441443/345699 . Mungkin ini akan membantu dalam pencarian Anda
Steven K7FAQ

Jawaban:

1

Jika mekanisme linux yang melekat (seperti cachefsalias cachefilesd) tidak berfungsi DAN Anda memiliki anggaran, Anda dapat melihat WAFS (layanan file area luas). Ini adalah perangkat yang dirancang untuk caching agresif NFS (dan CIFS), untuk mencoba dan menyembunyikan latensi yang biasanya terlibat dalam tautan WAN.

Kristen
sumber
1

Saya benar-benar bukan ahli di bidang ini (tapi itu pasti menarik!).

Apa yang saya cari akhir-akhir ini terutama dm-cache untuk LVM, dengan SSD untuk bagian caching itu. Berikut ini adalah contoh teks dari readhat yang memiliki ikhtisar yang baik, tetapi tidak terikat dengan RH: https://www.redhat.com/en/blog/improving-read-performance-dm-cache

Fredrik Lundhag
sumber