আমি একটি দ্রুত বিকল্প রেটারমাউন্ট লিখেছি , যা "আমার পক্ষে কাজ করে", কারণ এই সমস্যাটি আমাকে বক করতে থাকে ।
আপনি এটি এর মতো ব্যবহার করতে পারেন:
pip3 install --user ratarmount
ratarmount my-huge-tar.tar mount-folder
ls -la mount-folder # will show the contents of the tar top-level
আপনার কাজ শেষ হয়ে গেলে আপনি এটিকে কোনও ফুস মাউন্টের মতো আনমাউন্ট করতে পারেন:
fusermount -u mount-folder
এটি আর্কাইভ মাউন্টের চেয়ে দ্রুত কেন?
এটি নির্ভর করে আপনি কী পরিমাপ করেন।
এখানে মেমরি পদচিহ্নের একটি মাপদণ্ড এবং প্রথম মাউন্টিংয়ের জন্য প্রয়োজনীয় সময় পাশাপাশি সাধারণ cat <file-in-tar>
কমান্ড এবং সাধারণ কমান্ডের অ্যাক্সেসের সময় find
।
প্রতিটি 1k ফাইলযুক্ত ফোল্ডার তৈরি করা হয়েছিল এবং ফোল্ডারের সংখ্যা বৈচিত্রপূর্ণ।
নীচের বাম প্লটটি cat <file>
এলোমেলো বার দেখায় যা এলোমেলোভাবে 10 টি বেছে নেওয়া ফাইলের জন্য সর্বনিম্ন এবং সর্বাধিক পরিমাপ করা বারের ইঙ্গিত করে ।
ফাইল সময় সন্ধান করুন
হত্যাকারীর তুলনা cat <file>
শেষ হতে সময় লাগে । কোনও কারণে, রেটারমাউন্টে স্থির সময় থাকার সময় এই সংরক্ষণাগারটি মাউন্টের জন্য TAR ফাইলের আকারের (আনুমানিক ar বাইটগুলিতে প্রতি ফাইল x সংখ্যক বাইটস) সাথে রৈখিকভাবে স্কেল করে। এটি দেখে মনে হচ্ছে আর্কাইভ মাউন্ট এমনকি চাওয়াও সমর্থন করে না।
সংকুচিত টিএআর ফাইলগুলির জন্য, এটি বিশেষভাবে লক্ষণীয়।
cat <file>
পুরো .tar.bz2 ফাইলটি মাউন্ট করার ক্ষেত্রে দ্বিগুণের বেশি সময় লাগে! উদাহরণস্বরূপ, টিআরআর 10 কে খালি (!) ফাইলগুলি আর্কাইভমাউন্ট সহ মাউন্ট করতে 2.9s লাগে তবে যে ফাইলটি অ্যাক্সেস করা হয় তার উপর নির্ভর করে এর সাথে অ্যাক্সেসটি 3 এমএস cat
এবং 5 এর মধ্যে লাগে। সময় লাগে এটি টিএআর এর ভিতরে থাকা ফাইলের অবস্থানের উপর নির্ভর করে। টিআর শেষে ফাইলগুলি সন্ধান করতে আরও বেশি সময় নেয়; ইঙ্গিত করে যে "সন্ধান করুন" অনুকরণ করা হয়েছে এবং ফাইলটি পড়ার আগে টিএআর-এর সমস্ত সামগ্রী রয়েছে।
ফাইলের বিষয়বস্তুগুলি পেতে পুরো টিআরটি মাউন্ট করার চেয়ে দ্বিগুণের বেশি সময় নিতে পারে যা নিজেই অপ্রত্যাশিত। কমপক্ষে, এটি মাউন্ট হিসাবে একই পরিমাণে শেষ করা উচিত। একটি ব্যাখ্যা হ'ল ফাইলটি অনুকরণীয়ভাবে একাধিকবার সন্ধান করা হচ্ছে, সম্ভবত তিনবার।
রतारমাউন্ট আপাতদৃষ্টিতে একটি ফাইল পেতে সর্বদা একই পরিমাণ সময় নেয় কারণ এটি সত্য অনুসন্ধানকে সমর্থন করে। Bzip2 সংকুচিত টিএআর জন্য, এটি এমনকি bzip2 ব্লকের সন্ধান করে, যার ঠিকানাগুলি সূচী ফাইলটিতেও সঞ্চিত থাকে। তাত্ত্বিকভাবে, ফাইলগুলির সংখ্যার সাথে একমাত্র অংশ যা স্কেল করা উচিত তা হ'ল সূচকটিতে লুক করা এবং এটি ও (লগ (এন)) দিয়ে স্কেল করা উচিত কারণ এটি ফাইলের পথ এবং নাম অনুসারে বাছাই করা হয়।
স্মৃতি পদচিহ্ন
সাধারণভাবে, যদি টিআর এর ভিতরে আপনার 20k এর বেশি ফাইল থাকে তবে রেটারমাউন্টের মেমরির পদচিহ্নটি ছোট হবে কারণ সূচিটি তৈরি হওয়ার সাথে সাথে ডিস্কে লেখা হয় এবং তাই আমার সিস্টেমে প্রায় 30MB এর ধ্রুবক মেমরির পদচিহ্ন থাকে।
একটি ছোট ব্যতিক্রম হ'ল জিজিপ ডিকোডার ব্যাকএন্ড, যা জিজিপ বড় হওয়ার সাথে সাথে কিছু কারণে আরও স্মৃতি প্রয়োজন। এই মেমরির ওভারহেড টিএআর এর অভ্যন্তরের অনুসন্ধানের জন্য প্রয়োজনীয় সূচক হতে পারে তবে আমি সেই ব্যাকএন্ডটি লিখিনি বলে আরও তদন্তের প্রয়োজন।
বিপরীতে, আর্কাইভমাউন্ট পুরো সূচকটি রাখে, যেমন, 2 এম ফাইলগুলির জন্য 4 জিবি, যতক্ষণ না টিআর মাউন্ট হয় ততক্ষণ সম্পূর্ণরূপে মেমরিতে থাকে।
মাউন্টিং টাইম
আমার পছন্দের বৈশিষ্ট্যটি পরবর্তী কোনও চেষ্টাতে লক্ষণীয়ভাবে দেরি না করে টিএআরআরটি মাউন্ট করতে সক্ষম হচ্ছে tar কারণ সূচিটি, যা মেটাডেটাতে ফাইলের নাম এবং টিআর এর ভিতরে অবস্থানের মানচিত্র তৈরি করে, টিআর ফাইলের পাশের তৈরি একটি সূচী ফাইলে লিখিত হয়।
মাউন্ট করার জন্য প্রয়োজনীয় সময় আর্কাইভমাউন্টে কিন্ডা অদ্ভুত আচরণ করে। মোটামুটি 20 কে ফাইল থেকে শুরু করে এটি ফাইলের সংখ্যার সাথে সামঞ্জস্য রেখে রৈখিকতার পরিবর্তে চতুর্ভুজ স্কেল শুরু করে। এর অর্থ দাঁড়ায় যে মোটামুটি 4M ফাইল থেকে শুরু করে, রেটারমাউন্টটি আর্কাইভমাউন্টের চেয়ে অনেক দ্রুত গতিতে শুরু হয় যদিও ছোট টিএআর ফাইলের জন্য এটি 10 গুণ বেশি ধীর হয়! তারপরে আবার ছোট ফাইলগুলির জন্য, টার মাউন্ট করতে 1s বা 0.1s লাগবে কিনা তা প্রথম বিবেচনায় আসে না (প্রথমবার)।
Bz2 সংক্ষেপিত ফাইলের জন্য মাউন্টিং সময় সর্বকালের তুলনায় সবচেয়ে বেশি। এটি খুব সম্ভবত কারণ এটি bz2 ডিকোডারের গতির সাথে আবদ্ধ। রেটারমাউন্ট এখানে প্রায় 2x ধীর। আমি আশা করি অদূর ভবিষ্যতে bz2 ডিকোডারকে সমান্তরাল করে সুস্পষ্ট বিজয়ী হিসাবে গড়ে তুলতে পারব, যা আমার 8 বছরের পুরানো সিস্টেমের জন্যও 4x স্পিডআপ অর্জন করতে পারে।
মেটাডাটা পাওয়ার সময়
যখন কেবলমাত্র find
টিআরএর ভিতরে সমস্ত ফাইল তালিকাভুক্ত করা হয় (প্রতিটি ফাইলের জন্য স্ট্যাটাকে কল বলে মনে হয় !?), রেটারমাউন্টটি সমস্ত পরীক্ষিত ক্ষেত্রে আর্কাইভমাউন্টের চেয়ে 10x ধীর হয়। ভবিষ্যতেও এর উন্নতি হবে বলে আমি আশাবাদী। তবে বর্তমানে খাঁটি সি প্রোগ্রামের পরিবর্তে পাইথন এবং এসকিউএলাইট ব্যবহার করার কারণে এটি একটি ডিজাইনের সমস্যার মতো দেখাচ্ছে।