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.