- Framework लैपटॉप और JBOD का उपयोग करके अपना खुद का S3 स्टोरेज बनाया, और 10TB क्षमता को कम लागत पर चला रहे हैं; 4 महीनों तक बिना किसी प्रबंधन के भी यह स्थिर रूप से चलता रहा
- स्क्रीन-रहित सेकंड-हैंड Framework लैपटॉप पर ZFS और garage S3 इंस्टॉल करके उसे होम सर्वर की तरह इस्तेमाल किया गया, और AppGoblin के SDK ट्रैकिंग प्रोजेक्ट के लिए बड़े स्टोरेज के रूप में उपयोग किया जा रहा है
- 4 महीनों तक सर्वर पर बिल्कुल ध्यान नहीं दिया, फिर लॉग इन करने पर पता चला कि 10TB उपयोग हो चुका था और सिस्टम अपग्रेड के इंतज़ार में था; रीस्टार्ट के बाद भी सब कुछ सामान्य रूप से काम करता रहा
- garage S3 को v1 से v2 में अपग्रेड करने की प्रक्रिया भी बिना किसी समस्या के पूरी हुई, जिससे स्थिर संचालन का अनुभव मिला
- USB के जरिए लैपटॉप और JBOD को जोड़ने वाले गैर-मानक ZFS कॉन्फ़िगरेशन में शुरुआत में समस्या आई, लेकिन मेटाडेटा को लैपटॉप के अंदरूनी स्टोरेज में ले जाकर इसे हल कर लिया गया
प्रोजेक्ट की पृष्ठभूमि और प्रेरणा
- 5 महीने पहले self-hosted S3 का फैसला
- AppGoblin के शीर्ष 1 लाख Android और iOS ऐप्स की SDK ट्रैकिंग का काम चल रहा था
- बड़े स्टोरेज स्पेस की ज़रूरत थी, लेकिन लागत कम रखनी थी
- मौजूदा cloud S3 के बजाय self-hosting तरीका चुना गया
हार्डवेयर कॉन्फ़िगरेशन
- Framework लैपटॉप का उपयोग
- स्क्रीन-रहित सेकंड-हैंड Framework लैपटॉप सस्ते में खरीदा गया
- पुराना मॉडल होने के कारण होम सर्वर के रूप में इस्तेमाल के लिए उपयुक्त था
- लैपटॉप की पोर्टेबिलिटी और कम-बिजली खपत वाली विशेषताओं का उपयोग किया गया
- JBOD(Just a Bunch of Disks) जोड़ा गया
- बड़े स्टोरेज के लिए बाहरी डिस्क array
- USB के जरिए लैपटॉप से जोड़ा गया
सॉफ़्टवेयर स्टैक
- ZFS फ़ाइल सिस्टम
- डेटा इंटीग्रिटी और snapshot फीचर प्रदान करता है
- JBOD को ZFS pool के रूप में कॉन्फ़िगर किया गया
- garage S3
- हल्का distributed S3-compatible स्टोरेज solution
- Deuxfleurs द्वारा विकसित open source प्रोजेक्ट
- S3 API compatibility प्रदान करता है
4 महीनों का बिना-प्रबंधन संचालन
- इंस्टॉल के बाद 4 महीनों तक सर्वर पर बिल्कुल ध्यान नहीं दिया गया
- यात्रा, काम और व्यस्त दिनचर्या के दौरान भी S3 लगातार उपयोग में रहा
- सर्वर के बारे में सोचने की ज़रूरत ही नहीं पड़ी
- लॉग इन करने के बाद पता चली बातें
- 10TB स्टोरेज इस्तेमाल हो चुका था
- सिस्टम धैर्यपूर्वक अपग्रेड के लिए रीस्टार्ट का इंतज़ार कर रहा था
- रीस्टार्ट का नतीजा
- घबराहट के साथ रीस्टार्ट किया गया
- सब कुछ फिर से सामान्य रूप से चल पड़ा, जिससे राहत मिली
garage S3 अपग्रेड
- v1 से v2 में अपग्रेड
- लंबित major version अपग्रेड मिला
- अपग्रेड प्रक्रिया बिना किसी समस्या के पूरी हुई
- इसे एक अच्छा वीकेंड बताया गया
तकनीकी चेतावनियाँ और समाधान
- गैर-मानक ZFS कॉन्फ़िगरेशन के बारे में जागरूकता
- USB के जरिए लैपटॉप और JBOD को जोड़ना ZFS का कुछ हद तक गैर-मानक use case है
- इस बारे में Reddit कम्युनिटी से चेतावनी मिली थी
- शुरुआती समस्या
- जब garage बहुत अधिक read और write कर रहा था, तब ZFS समस्या सामने आई
- शुरुआती सेटअप में SQLite मेटाडेटा भी JBOD/ZFS पर स्टोर किया गया था
- समाधान
- मेटाडेटा को लैपटॉप के अंदरूनी स्टोरेज में शिफ्ट किया गया
- इसके बाद ZFS की समस्या हल हो गई और सिस्टम स्थिर रूप से चलने लगा
3 टिप्पणियां
खुद होस्टिंग करने की चुनौती लेना ही अपने आप में बड़ी बात है।
हालांकि कीमत में काफ़ी अंतर है, लेकिन लगता है कि Framework मेनबोर्ड आधुनिक Raspberry Pi बन गया है।
Hacker News राय
zfs send/recvसे backup pool में भेजता हूँ।” ऐसा flow शायद मेरे use case के लिए बेहतर हो, और मूल रूप से RAID5 का मकसद एक disk failure के लिए सुरक्षा था, लेकिन इसे किसी दूसरे location पर वैसा ही बनाना काफ़ी महँगा (~$1,000 USD) पड़ता है, इसलिए अभी तक कर नहीं पाया हूँawscli,s3cmd,rclone,Boto3जैसे S3 API tools से सब काम हो गया। Garage को बस कुछ commands में आसानी से set up किया, और एक बार चलने के बाद 4 महीने तक यह अपने आप बिना दिक्कत चलता रहा। इस मामले में मैं इससे बहुत संतुष्ट हूँzfs send/recvसे backup pool में replicate किया जाता है। इससे disks को mix-and-match करने की flexibility मिलती है, जैसे एक SSD हो और दूसरा HDD आदि। हाँ, read speed और uptime में कुछ समझौता करना पड़ता है। External hard drive को backup disk बनाकर हर कुछ दिनों में connect करने का तरीका भी है। महत्वपूर्ण data के लिए मेरे पास अलग mirrored RAID pool है। ZFS पर बहुत-से लेख RAID पर केंद्रित हैं, लेकिन ऊपर बताए गए hardware-minimized setup पर जानकारी कम मिलती हैlvm2इस्तेमाल करता हूँ, जो RPi5 पर ठीक चलता है। ZFS बहुत ज़्यादा RAM लेता है, इसलिए इस use case के लिए उपयुक्त नहीं है