- สร้างสตอเรจ S3 ของตัวเองด้วย Framework โน้ตบุ๊กและ JBOD เพื่อให้ใช้งานความจุ 10TB ได้ในต้นทุนต่ำ และทำงานได้เสถียรแม้ปล่อยทิ้งไว้ 4 เดือนโดยไม่ต้องดูแล
- ใช้ Framework โน้ตบุ๊กมือสองที่ไม่มีหน้าจอ ติดตั้ง ZFS และ garage S3 เพื่อทำเป็นโฮมเซิร์ฟเวอร์ และใช้เป็นพื้นที่เก็บข้อมูลขนาดใหญ่สำหรับโปรเจกต์ติดตาม SDK ของ AppGoblin
- หลังจากไม่แตะเซิร์ฟเวอร์เลยเป็นเวลา 4 เดือน เมื่อล็อกอินเข้าไปพบว่า มีการใช้งานไปแล้ว 10TB และระบบกำลังรอการอัปเกรด และหลังรีสตาร์ตก็ยังทำงานได้ตามปกติทั้งหมด
- กระบวนการ อัปเกรด garage S3 จาก v1 ไป v2 ก็เสร็จสิ้นได้โดยไม่มีปัญหา ทำให้มั่นใจในประสบการณ์การใช้งานที่เสถียร
- การเชื่อมต่อโน้ตบุ๊กกับ JBOD ผ่าน USB ซึ่งเป็น การตั้งค่า ZFS ที่ไม่ค่อยเป็นมาตรฐาน เคยทำให้เกิดปัญหาในช่วงแรก แต่แก้ไขได้ด้วยการย้ายเมทาดาทาไปไว้ในเครื่องโน้ตบุ๊ก
ที่มาและแรงจูงใจของโปรเจกต์
- ตัดสินใจโฮสต์ S3 เองเมื่อ 5 เดือนก่อน
- กำลังทำงานติดตาม SDK ของแอป Android และ iOS ชั้นนำ 100,000 แอปของ AppGoblin
- ต้องการพื้นที่จัดเก็บข้อมูลขนาดใหญ่ แต่ก็อยากประหยัดค่าใช้จ่าย
- จึงเลือกแนวทาง self-hosting แทน cloud S3 แบบเดิม
ฮาร์ดแวร์ที่ใช้
- ใช้ Framework โน้ตบุ๊ก
- ซื้อ Framework โน้ตบุ๊กมือสองที่ไม่มีหน้าจอมาในราคาถูก
- เป็นรุ่นเก่าจึงเหมาะกับการนำมาใช้เป็นโฮมเซิร์ฟเวอร์
- ใช้ประโยชน์จากความพกพาสะดวกและการใช้พลังงานต่ำของโน้ตบุ๊ก
- เพิ่ม JBOD (Just a Bunch of Disks)
- อาร์เรย์ดิสก์ภายนอกสำหรับการจัดเก็บข้อมูลความจุสูง
- เชื่อมต่อกับโน้ตบุ๊กผ่าน USB
ซอฟต์แวร์สแตก
- ระบบไฟล์ ZFS
- ให้ความสามารถด้านความสมบูรณ์ของข้อมูลและ snapshot
- จัด JBOD เป็น ZFS pool
- garage S3
- โซลูชันสตอเรจแบบกระจายน้ำหนักเบาที่เข้ากันได้กับ S3
- เป็นโปรเจกต์โอเพนซอร์สที่พัฒนาโดย Deuxfleurs
- รองรับความเข้ากันได้กับ S3 API
การใช้งานแบบไม่ต้องดูแลตลอด 4 เดือน
- หลังติดตั้งแล้วไม่ได้สนใจเซิร์ฟเวอร์เลยตลอด 4 เดือน
- ระหว่างการเดินทาง งาน และชีวิตประจำวันที่ยุ่ง S3 ก็ยังถูกใช้งานอย่างต่อเนื่อง
- แทบไม่ต้องนึกถึงเซิร์ฟเวอร์เลย
- สิ่งที่พบหลังล็อกอินกลับเข้าไป
- มีการใช้พื้นที่จัดเก็บไปแล้ว 10TB
- ระบบกำลังรอการรีสตาร์ตเพื่ออัปเกรดอย่างอดทน
- ผลลัพธ์หลังรีสตาร์ต
- กดรีสตาร์ตด้วยความลุ้น
- ทุกอย่างกลับมาทำงานได้ตามปกติ ทำให้โล่งใจ
การอัปเกรด garage S3
- อัปเกรดจาก v1 ไปเป็น v2
- พบว่ามีการอัปเกรดเวอร์ชันหลักที่รออยู่
- กระบวนการอัปเกรดดำเนินไปโดยไม่มีปัญหา
- ประเมินว่าเป็นสุดสัปดาห์ที่ดี
ข้อควรระวังทางเทคนิคและวิธีแก้ไข
- รับรู้ถึงการตั้งค่า ZFS ที่ไม่เป็นมาตรฐาน
- การเชื่อมต่อโน้ตบุ๊กกับ JBOD ผ่าน USB เป็นกรณีใช้งาน ZFS ที่ค่อนข้างไม่เป็นมาตรฐาน
- ได้รับคำเตือนเกี่ยวกับเรื่องนี้จากชุมชน Reddit
- ปัญหาที่เกิดขึ้นในช่วงแรก
- เกิดปัญหากับ ZFS เมื่อ garage ทำการอ่านและเขียนข้อมูลจำนวนมาก
- ในการตั้งค่าเริ่มต้น เมทาดาทา SQLite ก็ถูกเก็บไว้บน JBOD/ZFS ด้วย
- การแก้ปัญหา
- ย้ายเมทาดาทาไปไว้บนสตอเรจภายในของโน้ตบุ๊ก
- หลังจากนั้นปัญหา ZFS ก็หายไปและระบบทำงานได้เสถียร
3 ความคิดเห็น
การกล้าลองทำโฮสต์เองก็ถือว่ายอดเยี่ยมมากแล้ว
แม้ว่าราคาจะแตกต่างกันมาก แต่ดูเหมือนว่าเมนบอร์ดของ Framework จะกลายเป็น Raspberry Pi ยุคใหม่ไปแล้วนะ
ความคิดเห็นใน Hacker News
zfs send/recv” ดูเหมือน workflow แบบนี้จะเหมาะกับการใช้งานของผมมากกว่า เดิมที RAID5 ก็ทำไว้เผื่อดิสก์เสียหนึ่งลูก แต่ถ้าจะทำชุดเดียวกันไว้อีกสถานที่หนึ่ง ค่าใช้จ่าย (~$1,000 USD) ก็ยังค่อนข้างสูงเลยยังไม่ได้ทำzfs send/recvข้อดีคือยืดหยุ่นในการผสมดิสก์ได้มากขึ้น (เช่น ลูกหนึ่งเป็น SSD อีกลูกเป็น HDD) แต่ก็ต้องยอมแลกเรื่องความเร็วอ่านและ uptime และยังสามารถใช้ external hard drive เป็นดิสก์แบ็กอัปแล้วค่อยเอามาต่อทุกสองสามวันก็ได้ ส่วนข้อมูลสำคัญจริง ๆ ผมก็แยกไว้ใน RAID pool แบบ mirrored อีกชุดหนึ่ง บทความเกี่ยวกับ ZFS ส่วนใหญ่มักเน้นเรื่อง RAID แต่ดูเหมือนข้อมูลเกี่ยวกับการตั้งแบบฮาร์ดแวร์น้อยที่สุดอย่างที่พูดมาข้างต้นจะยังมีไม่มากlvm2แทน ZFS และมันทำงานได้ดีบน RPi5 ส่วน ZFS ใช้ RAM มากเกินไปเลยไม่ค่อยเหมาะกับงานนี้