আমি কীভাবে স্বচ্ছভাবে কোনও ডিরেক্টরি বা মাউন্ট করা ফাইল সিস্টেমকে পড়তে এবং আবার লেখার জন্য ক্যাশে করতে পারি?


22

বলুন আমি এখানে একটি FUSE ক্লায়েন্টের সাথে কিছু মেঘ সঞ্চয় (আমার ক্ষেত্রে অ্যামাজন ক্লাউড ড্রাইভ) মাউন্ট করেছি /mnt/cloud। তবে সরাসরি ফাইল পড়া এবং লেখা /mnt/cloudধীর গতির কারণ এটি ইন্টারনেটে যেতে হবে, তাই আমি যে ফাইলগুলি পড়ছি সেগুলি ক্যাশে করতে চাই এবং ক্লাউড স্টোরেজে লিখছি। যেহেতু আমি একবারে প্রচুর ডেটা লিখতে পারি, তাই ক্যাশেটি আমার ডিস্কে বসে উচিত, র‌্যামে নয়। তবে আমি আমার ডিস্কের পুরো ক্লাউড স্টোরেজটির অনুলিপি করতে চাই না, কারণ আমার ডিস্কটি খুব ছোট হতে পারে।

তাই আমি একটি ক্যাশে দৃশ্যে করতে চান /mnt/cloudএ মাউন্ট /mnt/cloud_cache, যা অন্য পথ ব্যবহার করে, বলে /var/cache/cloudক্যাশে অবস্থান হিসাবে।

আমি যদি এখন পড়ি /mnt/cloud_cache/file, আমি চাই যে নিম্নলিখিতগুলি ঘটুক:

fileক্যাশে করা হয়েছে কিনা তা পরীক্ষা করুন /var/cache/cloud/file

  1. যদি ক্যাশে থাকে: fileমোডটাইম এবং / অথবা চেকসাম এনে চেক ইন চেক আপ টু ডেট /mnt/cloud। এটি যদি আপ টু ডেট থাকে তবে ক্যাশে থেকে ফাইলটি পরিবেশন করুন, অন্যথায় 2 এ যান।
  2. যদি ক্যাশে না হয় বা ক্যাশে পুরানো হয়: ক্যাশে থেকে অনুলিপি /mnt/cloud/fileকরুন /var/cache/cloud/fileএবং পরিবেশন করুন।

আমি যখন লিখি তখন আমি /mnt/cloud_cache/fileএটি ঘটতে চাই:

  1. লেখা /var/cache/cloud/fileএবং জার্নালে রেকর্ড যে fileচাহিদা ফিরে লেখার প্রয়োজন হবে/mnt/cloud
  2. /var/cache/cloud/fileসম্পন্ন হতে লেখার জন্য অপেক্ষা করতে হবে এবং / অথবা পূর্ববর্তী লেখার ব্যাক /mnt/cloudসম্পূর্ণ হবে
  3. অনুলিপি /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

2
কৌতূহল যদি আপনি কখনও সমাধান খুঁজে পান? অনুরূপ একটি অনুরূপ ক্যাশে'র স্তর খুঁজছেন আপনার নিজের প্রয়োজন।
এসএস 44

1
bitbucket.org/nikratio/s3ql আমি যা চাই তা বেশ কার্যকর করে। তবে, দুর্ভাগ্যক্রমে, এটি বিশেষ করে অ্যামাজন ক্লাউড ড্রাইভের সাথে খুব সুন্দরভাবে খেলছে না (মূলত ভাল লিনাক্স ক্লায়েন্টের অভাবে এসিডি এর দোষ)
ফ্লেক্টো

আমি আগে আমি s3ql ব্যবহার করেছি, তবে আমার ফাইলগুলির জন্য এসিডি-তে স্থানান্তরিত হয়ে মনে হয়েছিল যে এটি সরবরাহকারীর সাথে এটির ব্যবহার সীমাবদ্ধ করে। ডেটা সংগ্রহ> 2 টিবি যখন s3ql এর সাথে ডেটা ধারাবাহিকতায় সমস্যা তৈরি করেছিল। আরক্লোন আশাবাদী বলে মনে হচ্ছে তবে সেই অত্যাবশ্যক ক্যাচিং অংশটি অনুপস্থিত।
এসএস 44

আপনি যদি এতে গুরুত্ব সহকারে আগ্রহী হন - আমরা এটি tmpfs এবং স্ট্যাট ব্যবহার করে সি ++ তে লিখতে পারি।
GOST

উত্তর:


3

ক্যাটফস ব্যবহার করার চেষ্টা করুন , আমি বর্তমানে কাজ করছি এমন একটি জেনেরিক ফিউজ ক্যাশিং ফাইল সিস্টেম।


1
আমি এখন পর্যন্ত যা দেখছি তা থেকে এটি মনোহর মত কাজ করে। অনেক ধন্যবাদ!
আলফ

2

কোনও ফিউজ-মাউন্টড সিস্টেমকে ক্যাশে করার জন্য এফএস-ক্যাশে / ক্যাশেএফএস ব্যবহার করা সম্ভব, একটি এনএফএস ইন্ডিয়ারেশন ইনবিটইন যোগ করে: যদি আপনার ফিউজ মাউন্টটি / ফিউজফগুলি চালু থাকে, তবে এটি / etc / এক্সপোর্ট / এ লিখে আপনার নিজের সাথে এনএফএসে ভাগ করুন:

/fusefs localhost(fsid=0)

এখন আপনি এটি করতে পারেন:

mount -t nfs -o fsc localhost:/fusefs /nfs systemctl start cachefilesd

এবং / এনএফএস / ফিউজফেসে ক্যাশেড অ্যাক্সেস সরবরাহ করবে।

আমি sshfs এর সাথে এই পদ্ধতিকে পিছনের এফএস হিসাবে ব্যবহার করছি, এটি দুর্দান্তভাবে কাজ করে।

(দুর্ভাগ্যক্রমে, এটি কেবল ফাইল সামগ্রীর অ্যাক্সেসকে গতি দেয়; ফাইলের মেটাডেটা যাতে ক্যাশে হয় না statএবং openএখনও ধীর হয়)।


1

এটি একটি অজ্ঞতাজনক উত্তর, যেহেতু এটি পরীক্ষা করার মতো কোনও আমাজন ক্লাউড ডিরেক্টরিতে আমার অ্যাক্সেস নেই। তবে "এটি কীভাবে করবেন" স্পিরিটে: এনএফএস পরিবেশন করতে অ্যামাজন ক্লাউড সেটআপ করুন , তারপরে ব্যবহার করে সেই এনএফএস সার্ভারে দূরবর্তীভাবে লগইন করুনcachefilesd

"সম্পন্ন করার চেয়ে সহজ বলেছেন ..."

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.