মাস্টোডনের ক্যাশে মুছে স্টোরেজ ক্ষমতা কমানো এবং MinIO ও LocalStack নিয়ে আলোচনা
হ্যালো, আমি অযোগ্য।
মাস্টোডন ইনস্ট্যান্স তৈরি করার সময় স্টোরেজ সমস্যা অনিবার্যভাবে দেখা দেয়।
এটি অন্যান্য সার্ভার থেকে সমস্ত তথ্য সংগ্রহ করে, তাই এর স্ফীতি এড়ানো যায় না।
তাই, আমি একটি ভালো স্ক্রিপ্ট খুঁজে পেয়েছি।
Bash দিয়ে স্ক্রিপ্টিং
দেখা যাচ্ছে, Mastodon v4.1 বা তার পরের সংস্করণ থেকে উপলব্ধ tootctl নামক একটি টুল ব্যবহার করে এগুলি একসাথে মুছে ফেলা সম্ভব।
Improving Mastodon’s disk usage
সেই অনুযায়ী, আমি এটিকে 1 দিনে পরিবর্তন করে নিচে হুবহু কপি করেছি।
#!/bin/bash
# Prune remote accounts that never interacted with a local user
RAILS_ENV=production /home/sns/mastodon/bin/tootctl accounts prune;
# Remove remote statuses that local users never interacted with older than 1 days
RAILS_ENV=production /home/sns/mastodon/bin/tootctl statuses remove --days 1;
# Remove media attachments older than 1 days
RAILS_ENV=production /home/sns/mastodon/bin/tootctl media remove --days 1;
# Remove all headers (including people I follow)
RAILS_ENV=production /home/sns/mastodon/bin/tootctl media remove --remove-headers --include-follows --days 0;
# Remove link previews older than 1 days
RAILS_ENV=production /home/sns/mastodon/bin/tootctl preview_cards remove --days 1;
# Remove files not linked to any post
RAILS_ENV=production /home/sns/mastodon/bin/tootctl media remove-orphans;
এতে অনেক সময় লাগছে, তাই কতটা স্টোরেজ খালি হবে তা আমি এখনও নির্ধারণ করতে পারিনি ^^;
আদর্শ হোম অবজেক্ট স্টোরেজ
সম্প্রতি, আমি প্রোডাকশন সার্ভার থেকে আলাদা একটি স্টোরেজ সার্ভার স্থাপন করার কথা ভাবছি।
কারণগুলি নিম্নরূপ:
- আলাদা ডিস্কে বড় ফাইল রাখার সময় ডিস্ক নষ্ট হওয়ার সাথে সাথে লিনাক্স কার্নেল ডিস্ক I/O ত্রুটির কারণে আটকে যায়।
- ফাইল সিস্টেম নির্ভরতা থেকে মুক্তি।
- এক্সিকিউটেবল বাইনারি থেকে আলাদা রাখলে তা আরও স্পষ্ট হয়।
অন্যান্য কারণও আছে, তবে সংক্ষেপে উপরের মতো।
বিশেষ করে, প্রথম পয়েন্টে উল্লিখিত I/O ত্রুটি রিবুটের সময়ও সিস্টেমকে আটকে দিতে পারে, কখনও কখনও সরাসরি ডিস্ক অপসারণের প্রয়োজন হয় (যদিও কার্নেল প্যারামিটার পরিবর্তন করে এবং রিবিল্ড করে এটি এড়ানো সম্ভব), তাই এটি বাস্তবায়ন করা প্রয়োজন বলে মনে হচ্ছে।
ফাইল সিস্টেম নির্ভরতা থেকে মুক্তির বিষয়ে, আমি শক্তিশালী ZFS ব্যবহার করতে চাই, কিন্তু লিনাক্স পরিবেশে উপলব্ধ ZFS একটি ছদ্ম-কপি হওয়ায় এটি সম্পূর্ণ ZFS নয়।
যদি আপনি ZFS ব্যবহার করতে চান, তাহলে আপনাকে একটি FreeBSD পরিবেশ সেট আপ করে ব্যবহার করতে হবে।
RAID আরও জটিল, এবং আমি এটি ব্যবহার করব না কারণ RAID কার্ড নষ্ট হয়ে গেলে পুনরুদ্ধার করা সম্ভব নাও হতে পারে।
অতএব, আমি একটি অবজেক্ট স্টোরেজ সার্ভার হিসাবে FreeBSD ব্যবহার করতে চাই।
এক্সিকিউটেবল বাইনারি থেকে আলাদা রাখলে তা আরও স্পষ্ট হয়, এই বিষয়ে বলতে গেলে, বিতরণকৃত সিস্টেমের কথা মাথায় রেখে, আমি অতীতের Plan9-এর মতো একটি সাধারণ-উদ্দেশ্যের স্টোরেজ এলাকা হিসাবে একটি পৃথক পরিবেশ তৈরি করতে চাই।
শুধুমাত্র প্রোগ্রাম চালানোর জন্য কয়েকশ জিবি বা কয়েক টেরাবাইট প্রয়োজন হয় না।
MinIO এবং LocalStack
LocalStack AWS S3 অনুকরণ করতে পারে বলে মনে হয়, তবে বিনামূল্যে সংস্করণটি স্থায়ী নয় এবং এর সীমাবদ্ধতা রয়েছে।
একটি আরও OSS অবজেক্ট স্টোরেজ হিসাবে, যদি আপনি এটি সার্ভারে স্থাপন করেন, তাহলে MinIO ভালো হবে বলে মনে হয়।
LocalStack: AWS S3-এর একটি সিমুলেটেড পরিবেশ অস্থায়ীভাবে ব্যবহার করার জন্য, যেমন ডেভেলপমেন্ট পরিবেশে।
MinIO: যখন আপনি অবজেক্ট স্টোরেজ হিসাবে একটি সার্ভার সেট আপ করতে চান।
এভাবে এগুলি আলাদাভাবে ব্যবহার করা উচিত বলে মনে হয়।
সুতরাং, আমি একটি MinIO সার্ভার সেট আপ করব।
তাহলে আবার দেখা হবে। শুভেচ্ছা রইল।