เอา ssd มาทำ cache ให้ Hdd ในระดับ kernel ด้วย FlashCache

เริ่มด้วยการไปโหลดไฟล์มาก่อน

แล้วก็อ่าน doc มันซะ

 

# Install prerequisite build packages:

   yum install dkms gcc make yum-utils kernel-devel

# CentOS kernel-headers/devel packages don't include internal headers, we've got to configure the full source:

   yumdownloader --source kernel-`uname -r`

   sudo rpm -ivh kernel-`uname -r`.src.rpm





#At the top directory, run



make KERNEL_TREE=<Path ของ kernel source>


เสร็จพิธิ

ใช้คำสั่ง flashcache_create flashcache_destroy flashcache_load เพื่อ สร้าง ลบ หรือเรียกใช้งาน แคชได้ตามใจชอบ

หลักการง่ายๆคือ เลือก ว่าแต่หละพาทิชั่นของ harddisk จะให้แบ่งเนื้อที่บน ssd มาแคชเท่าไหร่

ข้อดี

  • ช่วยเพิ่มประสิทธิภาพ ของฮาร์ดดิสมากขึ้น เพราะได้แคชที่มีขนาดใหญ่ และมีความเร็วในการอ่านเขียนสูง มาก โดยเฉพาะ การอ่านเขียน ไฟล์เล็กๆ จำนวนมาก นี้จะเห็นผลชัดมาก สามารถทำให้เซิฟเวอร์ของท่าน ถลุงแบนวิธของ idc เพิ่มได้กว่าเดิมอีกมากๆๆๆๆๆ

  • ลดความเสี่ยงในการที่ข้อมูลหาย ในกรณีไฟดับ เพราะ ว่า ssd ไฟดับแล้วข้อมูลไม่หาย แต่ถ้าใช้แรมมาแคช ข้อมูลที่ยังไม่ sync ลง ดิส จะหายเกลี้ยง

  • ได้ความจุเท่า harddisk แต่ได้ความเร็วไกล้เคียงกับใช้ ssd เพียวๆ ลดปัญหา เรื่อง ssd พังง่าย และพังแบบไม่มีปี่มีขลุ่ย รวมถึง พื้นที่อันจำกัดของ ssd

โปรเจคต่อไปจะเอามาทดสอบกับ Revodrive ซึ่งมี bw ของ io สูงถึง 10Gbps น่าจะแรงน่าดู

ไว้ผมลองละเอียดๆ แล้วมาอธิบายเพิ่มเติม

ตอนนี้ เพื่อนผมได้เอาระบบนี้ไปติดตั้งกับเว็บดูละครย้อนหลังแห่งหนึ่ง สามารถ ทำให้ Server เครื่องเดียว ram 16g hdd 6 ลูก จากเดิม รับโหลดได้ราว 400-500Mbps ตอนนี้วิ่งเต็มสาย Gbps ไปหละครับ

ส่วนผมก็เพิ่งลองหัดใช้แบบงูๆปลาๆ มีอะไรก็มาแลกเปลี่ยนกันได้ครับ ^^

มาลงชื่อไว้ก่อน

เดี๋ยวค่อยมาดูครับ

พี่ไอซ์ ก็ใช้วิธีนี้อยู่ แหล่มจริงๆ

ขอบคุณมากครับ

อ่ะ น่าสนใจแฮะ

ใช้กับ openvz เหนื่อยกว่านี้เยอะเลยครับ kernel update ถี่ up ทีก็มาลุ้นทีว่ามันจะพังไม่พัง

เบื้องต้นมี 3 mode การทำงานนะครับ

  • Writethrough : เขียนลง ssd+harddisk พร้อมกัน ใช้ ssd เป็น backup write cache ในตัว (แต่ถ้า ssd เขียนข้อมูลช้าจะทำให้เครื่องอืด)

  • Writearound : เขียนลง harddisk อย่างเดียว โอกาสพังถ้าไฟดับระหว่าเขียนก็เท่าๆ กะปกติ

  • Writeback : เขียนลง ssd ก่อน แล้วว่างเมื่อไหร่ค่อย flush ลง harddisk … mode นี้ลองแล้วเร็วมาก แต่ค่อนข้างเสี่ยงกรณี ssd พัง - -’

น่าสนใจมากครับ ลองทดสอบความเร็วแล้วได้เพิ่มขึ้นเท่าไหร่ครับ (hdparm -tT)

น่าสนใจครับ ต้องลอง

ขอถามท่านเทพหน่อยครับว่า. ด้วยเทคนิคนี้กับ เทคนิคอีกแบบคือผม install os ทั้งหมด ทุก partition ยกเว้น /home ไว้ใน ssd ส่วน /home ผมไว้ใน harddisk ปกติ. ไม่ทราบว่าแบบไหนจะให้ประสิทธิภาพด้าน i/o ที่ดีกว่ากันครับ

flashcache ไวกว่าครับ เพราะ cover ทุกอย่างเลย

ลงบน debian ยังไงครับ มันถามหา grep: /etc/redhat-release: No such file or directory

เหมือนว่า Makefile เค้าทำมาสำหรับ redhat อย่างเดียวอะครับ

เจอวิธีละครับ https://github.com/facebook/flashcache/blob/master/README-DKMS

ขอบคุณครับ. ได้ไอเดียเพิ่มหลายอย่างทีเดียวจากกระทู้นี้

คุณอุ้ยถ้าจะให้ดีต้องใช้ case ผม

อยู่ระหว่างกระบวนการผลิต ยังไม่เสร็จครับ

ขนาด 5 U

[Edit By MOD] ท่านใดจะสอบถามเพิ่มเติมเกี่ยวกับ case นี้ รบกวน PM สอบถามหรือตั้งกระทู้ใหม่เลยครับ เดี๋ยว How-to จะเสียความต่อเนื่องครับ

เสี่ยโป้งครับ debian ไม่น่าจะมีปัญหานะ เพื่อนผมลงกับ ubuntu อะ แรงเลย

ส่วนการเอา ssd ไปเก็บ os แล้ว hdd ไปเก็บ data ขอบอกว่าไม่คุ้มครับ ตัวที่กิน io หนัก ไม่ใช่ส่วนของ os ครับ บูตเสร็จ os ก็ไปอยูใน RAM หมดแล้วครับ

ส่วนที่กินหนัก คือ data ที่โดนเรียกใช้งานนี่แหละครับ flashcash เลยมาช่วยตรงนี้เพราะ เหมือนเป็นแคช ขนาดใหญ่มาก (เมื่อเทียบกับแรม) ไฟล์อะไรที hit บ่อยๆ ก็ดึงจากแคชได้เลยไม่ต้องดึงจาก disk

ไฟล์อะไรที่ โดน write บ่อยๆ ก็ write ลงแคชไปไว้ก่อน ไม่ต้อง รอ hdd

บางที hdd พัง ไปครึ่งปี ยังไม่รู็เลยครับ เพราะ os มันอยุ่ในแรม มารู้อีกที ก็ตอนรีบูต ทุกสิ่งพังทลาย เหลือแต่ initramfs# T_T

ชอบประโยคนี้

ลงไม่ได้ครับ

server209:~/facebook-flashcache-ba8f6bd# make -f Makefile.dkms

fatal: Not a git repository (or any of the parent directories): .git

install -o root -g root -m 0755 -d /var/lib/dkms/flashcache//source

rsync -r src/ /var/lib/dkms/flashcache//source/

sed “s/PACKAGE_VERSION=/PACKAGE_VERSION=/” src/dkms.conf > “/var/lib/dkms/flashcache//source/dkms.conf”

dkms build -m flashcache -v

Error! Invalid number of parameters passed.

Usage: build -m <module> -v <module-version>

make: *** [build] Error 1

แก้ยังไงหน๋อ Debian

เออ ต้องใช้ SSD ความจุขนาดไหนมาทำ cache ครับ. มีสูตรในการคำนวณไหมครับ เช่นผมมีพื้นที่ hdd รวม 1T ควรใช้ SSD เท่าไหร่ ?

60GB ขึ้นไปครับ อันนี้ ท่านพี่ท่านนึงแนะนํามา