วิธีตั้งค่าเซิร์ฟเวอร์ NFS ที่แคชเครือข่ายใช้ร่วมกันได้อย่างไร


14

ข้อมูลผู้ใช้จะถูกเก็บไว้ในสองกลุ่มที่มีขนาดค่อนข้างใหญ่ (> 1 PB) กลุ่มการจัดเก็บข้อมูล OpenStack Swift ขอให้เขาเป็นCluster Aและกลุ่ม B

นอกจากนี้ยังมีPoPหลายตัวที่ต้องโต้ตอบกับข้อมูลนั้น เซิร์ฟเวอร์ใน PoP เหล่านี้ไม่มีดิสก์อย่างมีประสิทธิภาพซึ่งหมายความว่าไม่มีการจัดเก็บข้อมูลผู้ใช้ไว้ในเครื่องหรือดาวน์โหลดไปยังพวกเขา PoPs สามารถแบ่งออกเป็นภูมิภาคทั่วโลก(เช่นอเมริกาเหนือ , แอฟริกาใต้ , ยุโรปกลางและคณะ)

PoPs บางตัวอยู่ค่อนข้างไกลจากจุดปลายทางสวิฟต์ของกลุ่มใด ๆ แนะนำความล่าช้าที่ไม่พึงประสงค์ เพื่อบรรเทาปัญหานี้ฉันต้องการตั้งค่าเซิร์ฟเวอร์เกตเวย์แคชในแต่ละภูมิภาคซึ่งจะแคชคำขอ r / w ไปยังคลัสเตอร์ที่ใกล้ที่สุด

ปัจจุบันลูกค้าใน PoP ใด ๆ สามารถเข้าถึงข้อมูลผู้ใช้โดยระบบไฟล์เสมือน swift ที่ติดตั้งถาวรซึ่งเป็นโมดูล 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

คำถามคือ : ฉันจะตั้งค่าเซิร์ฟเวอร์แคชเพื่อใช้ทรัพยากรที่มีอยู่ทั้งหมด (พาร์ทิชันแคชที่กำหนดไว้, RAM) เพื่อแคชได้อย่างก้าวร้าวและให้มากที่สุดเท่าที่จะเป็นไปได้ก่อนที่จะเขียนข้อมูลไปยังจุด svfs? โดยพื้นฐานแล้วจะมาที่: ฉันจะแคชไดเรกทอรีใน linux ได้อย่างไร?

ถ้าเป็นไปได้ควรอ่านและเขียนรวมและบล็อกขนาดในคำขอ FUSE อย่างน้อย 128k ถ้าเป็นไปได้เพื่อเพิ่มปริมาณงานสูงสุดและลดเวลาแฝงหากแคชจำเป็นต้องเขียนไปยังคลัสเตอร์

ภาคผนวก 1 : ฉันได้เปลี่ยนโมดูลการเมาท์คลัสเตอร์จาก svfs เป็น S3QL บนเซิร์ฟเวอร์บางตัว การแคชของ S3QL ทำให้ประสิทธิภาพดีขึ้นเล็กน้อย ฉันจะพยายามรับข้อมูลประสิทธิภาพเพื่อความสมบูรณ์


คุณสามารถพยายามที่จะช่วยให้ FS-แคชในลูกค้า NFS: cyberciti.biz/faq/...
kofemann

กรุณาดูที่serverfault.com/a/441443/345699 อาจเป็นไปได้ว่าสิ่งนี้จะช่วยในการสืบเสาะของคุณ
Steven K7FAQ

คำตอบ:


1

หากกลไกลินุกซ์โดยธรรมชาติ (เช่นcachefsaka cachefilesd) ไม่ทำงานและคุณมีงบประมาณคุณอาจดูเป็นWAFS (บริการไฟล์บริเวณกว้าง) อุปกรณ์เหล่านี้ได้รับการออกแบบมาเพื่อการแคช NFS (และ CIFS) ที่เข้มงวดเพื่อลองและซ่อนเวลาแฝงที่มักเกี่ยวข้องกับลิงค์ WAN


1

ฉันไม่มีความเชี่ยวชาญในเรื่องนี้ (แต่แน่ใจว่าน่าสนใจ!)

สิ่งที่ฉันได้ดูเมื่อเร็ว ๆ นี้ส่วนใหญ่เป็น dm-cache สำหรับ LVM ด้วย SSD สำหรับส่วนแคชของมัน นี่คือข้อความตัวอย่างจาก readhat ซึ่งมีภาพรวมที่ดี แต่ไม่ได้เชื่อมโยงกับ RH: https://www.redhat.com/th/blog/improving-read-performance-dm-cache

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.