বলুন আমি এখানে একটি FUSE ক্লায়েন্টের সাথে কিছু মেঘ সঞ্চয় (আমার ক্ষেত্রে অ্যামাজন ক্লাউড ড্রাইভ) মাউন্ট করেছি /mnt/cloud
। তবে সরাসরি ফাইল পড়া এবং লেখা /mnt/cloud
ধীর গতির কারণ এটি ইন্টারনেটে যেতে হবে, তাই আমি যে ফাইলগুলি পড়ছি সেগুলি ক্যাশে করতে চাই এবং ক্লাউড স্টোরেজে লিখছি। যেহেতু আমি একবারে প্রচুর ডেটা লিখতে পারি, তাই ক্যাশেটি আমার ডিস্কে বসে উচিত, র্যামে নয়। তবে আমি আমার ডিস্কের পুরো ক্লাউড স্টোরেজটির অনুলিপি করতে চাই না, কারণ আমার ডিস্কটি খুব ছোট হতে পারে।
তাই আমি একটি ক্যাশে দৃশ্যে করতে চান /mnt/cloud
এ মাউন্ট /mnt/cloud_cache
, যা অন্য পথ ব্যবহার করে, বলে /var/cache/cloud
ক্যাশে অবস্থান হিসাবে।
আমি যদি এখন পড়ি /mnt/cloud_cache/file
, আমি চাই যে নিম্নলিখিতগুলি ঘটুক:
file
ক্যাশে করা হয়েছে কিনা তা পরীক্ষা করুন /var/cache/cloud/file
।
- যদি ক্যাশে থাকে:
file
মোডটাইম এবং / অথবা চেকসাম এনে চেক ইন চেক আপ টু ডেট/mnt/cloud
। এটি যদি আপ টু ডেট থাকে তবে ক্যাশে থেকে ফাইলটি পরিবেশন করুন, অন্যথায় 2 এ যান। - যদি ক্যাশে না হয় বা ক্যাশে পুরানো হয়: ক্যাশে থেকে অনুলিপি
/mnt/cloud/file
করুন/var/cache/cloud/file
এবং পরিবেশন করুন।
আমি যখন লিখি তখন আমি /mnt/cloud_cache/file
এটি ঘটতে চাই:
- লেখা
/var/cache/cloud/file
এবং জার্নালে রেকর্ড যেfile
চাহিদা ফিরে লেখার প্রয়োজন হবে/mnt/cloud
/var/cache/cloud/file
সম্পন্ন হতে লেখার জন্য অপেক্ষা করতে হবে এবং / অথবা পূর্ববর্তী লেখার ব্যাক/mnt/cloud
সম্পূর্ণ হবে- অনুলিপি
/var/cache/cloud/file
করুন/mnt/cloud
আমার নিম্নলিখিত প্রয়োজনীয়তা এবং প্রতিবন্ধকতা রয়েছে:
- নিখরচায় ও মুক্ত উত্স
- ক্যাশে একটি স্বেচ্ছাসেবী ক্যাশে অবস্থান সেট করার ক্ষমতা
- একটি স্বেচ্ছাসেবী অবস্থান ক্যাশে করার ক্ষমতা (সম্ভবত কিছু FUSE মাউন্ট পয়েন্ট)
- স্বচ্ছ ক্যাচিং, অর্থাত্
/mnt/cloud_cache
ক্যাচিং প্রক্রিয়াটি ব্যবহার করা স্বচ্ছ এবং এটি অন্য মাউন্ট করা ফাইল সিস্টেমের মতো কাজ করে - কী আবার লেখা দরকার তা রেকর্ড রেখে (ক্যাশে প্রচুর ডেটা পেতে পারে যা কয়েক দিন ধরে মূল স্টোরেজ স্থানে আবার লেখার দরকার পড়ে))
- ক্যাশেড ফাইলগুলিতে স্বয়ংক্রিয়ভাবে মোছা যা আবার লেখা হয়েছে বা কিছুক্ষণের মধ্যে অ্যাক্সেস করা হয়নি
- ধারাবাহিকতা (অর্থাত্ বাহ্যিক পরিবর্তনগুলি প্রতিবিম্বিত করা
/mnt/cloud
) মারাত্মকভাবে গুরুত্বপূর্ণ নয়, কারণ সম্ভবত আমার/mnt/cloud
একসাথে কেবলমাত্র একজন ক্লায়েন্ট অ্যাক্সেস করতে পারে তবে এটি পেতে ভাল লাগবে।
বিদ্যমান সমাধানগুলি সন্ধান করার জন্য আমি বেশ কিছুটা সময় ব্যয় করেছি, তবে সন্তোষজনক কিছু পাই নি।
- FS-Cache মূলত এবং CacheFS ( https://www.kernel.org/doc/Documentation/filesystems/caching/fscache.txt ) সঙ্গে কেবল কাজই বলে মনে হয়
nfs
বাafs
ফাইল সিস্টেম এবং আমি এটি অন্য FUSE ফাইল ক্যাশে করতে কিভাবে জানি না সিস্টেম বা কোনও সাধারণ ডিরেক্টরি। - bcache ( https://bcache.evilpiepirate.org/ ) কেবলমাত্র ব্লক ডিভাইসগুলির সাথেই কাজ করে বলে মনে হচ্ছে, অন্য একটি FUSE ফাইল সিস্টেম ক্যাশে করতে পারেনি
- gcsfuse ( https://github.com/GoogleCloudPlatform/gcsfuse ) আমি মনে করি এটি আমার যা ইচ্ছা তাই করবে তবে এটি গুগল ক্লাউড স্টোরেজের সাথে সংহত হয়েছে। এটি সাধারণভাবে কাজ করতে, আমাকে এটি হ্যাক করতে হবে এবং প্রদত্ত মাউন্ট-পয়েন্টে বা অ্যাক্সেসগুলি অ্যামাজন ক্লাউড ড্রাইভে জিএসএসে কোনও অ্যাক্সেস পরিবর্তন করতে হবে local