ext4 এ ডিরেক্টরি প্রতি সর্বোচ্চ ফাইল


16

আমি এমন একটি অ্যাপ্লিকেশন পরিচালনা করি যাতে একটি ফাইলের দোকান থাকে যার মধ্যে সমস্ত ফাইলগুলি তাদের এমডি 5 এর সমান ফাইলের নামের সাথে সঞ্চিত থাকে। সমস্ত ফাইল একটি ডিরেক্টরিতে সংরক্ষণ করা হয়। বর্তমানে হাজার হাজার রয়েছে, তবে শীঘ্রই সেগুলি সার্ভারে কয়েক মিলিয়ন ফাইল হওয়া উচিত। বর্তমান সার্ভারটি একটি এক্সট 4 ফাইল সিস্টেমে উবুন্টু ১১.১০ চালাচ্ছে।

কেউ আমাকে বলেছিল যে একটি ডিরেক্টরিতে অনেকগুলি ফাইল স্থাপন করা বুদ্ধিমানের কাজ নয়, কারণ এটি দেখার সময় এবং নির্ভরযোগ্যতার ক্ষেত্রে উল্লেখযোগ্য পরিমাণে বৃদ্ধি পাবে (একক দির যে সর্বাধিক ফাইলগুলি নির্দেশ করতে পারে তার সর্বাধিক গল্পের একটি গল্প ছিল যার ফলে একটি বড় লিঙ্কযুক্ত তালিকার ফলস্বরূপ)। পরিবর্তে তিনি ফাইলের নামের সাবস্ট্রিং সহ উপ ডিরেক্টরি তৈরি করার পরামর্শ দিয়েছিলেন। তবে এটি আমার অ্যাপ্লিকেশনটিতে কিছু জিনিসকে আরও জটিল করে তুলবে।

এটি কি এখনও সত্য, বা আধুনিক ফাইল সিস্টেমগুলি (যেমন ext4) এর সাথে এবং প্রাকৃতিকভাবে স্কেল মোকাবেলা করার আরও কার্যকর উপায় আছে? উইকিপিডিয়ায় ফাইল সিস্টেমগুলিতে কিছু বিশদ রয়েছে তবে এটি প্রতি ডিরেক্টরি প্রতি সর্বাধিক ফাইল, বা দেখার সময় সম্পর্কে কিছুই বলে না।

উত্তর:


8

ext3এবং পরে ফাইল সিস্টেম সমর্থন কুচি-কুচি করিয়া কাটা বস্তু বি-গাছ ডিরেক্টরির ইন্ডেক্স। আপনি কেবলমাত্র ক্রিয়াকলাপ যোগ না করে, মুছুন এবং নাম দ্বারা অ্যাক্সেস করেন ততক্ষণ এই স্কেলগুলি খুব ভাল। যাইহোক, আমি এখনও ডিরেক্টরিগুলি ভাঙ্গার সুপারিশ করব। অন্যথা, আপনি টুলস জন্য একটি বিপজ্জনক মানসিক ফাঁদ তৈরি করুন ( updatedb, ls, du, ইত্যাদি) যে ডিরেক্টরি যদি ডিরেক্টরির অনেকগুলি এন্ট্রি আছে যা উড়িয়ে পারে অন্যান্য অপারেশন সঞ্চালন।


8

সমস্যার মূলটি আপনার চাইলে যে কোনও ফাইলের জন্য ডিরেক্টরি ইনোডের মাধ্যমে খনন করা হয়। কিছু ফাইল সিস্টেম অন্যদের চেয়ে এটি আরও ভাল করে। কোটি কোটি কিছু স্কেল ঘনিষ্ঠ, কিন্তু আপনি যদি শুধুমাত্র নেই ... 20K ফাইল চাওয়ার ঐ ফাইল লক্ষণীয়ভাবে দ্রুততর। এছাড়াও, বড় ফাইল-গণনা নির্দিষ্ট সরঞ্জামগুলির জন্য সমস্যা তৈরি করে এবং এর ফলে ব্যাকআপ / পুনরুদ্ধার করতে পারে আরও শক্ত সমস্যা।

এটি ঘটে যাওয়ার সাথে সাথে আমরা আমাদের নিজস্ব বিকাশের ঠিক একই সমস্যার দিকে দৌড়েছি (ফাইলের নাম হিসাবে এমডি 5সাম, এর স্কেলিং)। আমি আমাদের বিকাশকারীদের কাছে যা প্রস্তাব দিয়েছি তা হ'ল স্ট্রিংকে টুকরো টুকরো করে কাটা। তারা ৪ টি দলের সাথে চলেছিল, তবে ফাইল সিস্টেমে আমরা সেই সময়েও ছিলাম যে অনেকেই পারফরম্যান্সের দৃষ্টিভঙ্গি থেকে সমস্যাযুক্ত প্রমাণিত করতে পারে, তাই তারা প্রথম tri টি ট্রিপল্টের জন্য গ্রুপ-অফ -৩ এ বিভক্ত হয়ে পড়েছিল এবং বাকীগুলি রেখে যায় টার্মিনাল ডিরেক্টরিতে ফাইলের নাম।

4 এর 4976/d70b/180c/6142/c617/d0c8/9d0b/bd2b.txt
গ্রুপ: 3 এর গ্রুপ:497/6d7/0b1/80c/614/2c6/17d0c89d0bbd2b.txt

ডিরেক্টরি মাপ ছোট রাখার সুবিধা রয়েছে এবং MD5sum যেহেতু বেশ এলোমেলো, এটি ভারসাম্যযুক্ত ডিরেক্টরি ট্রি তৈরি করবে create এই শেষ ডিরেক্টরিটি আর কয়েকটি ফাইলের বেশি পাওয়ার সম্ভাবনা কম। এবং আমাদের কোডটিতে কাজ করা এত কঠিন ছিল না। আমরা বহু মিলিয়ন ফাইল প্রকল্পের সাথে কাজ করি, সুতরাং স্কেলিংটি আমাদের কাছে খুব গুরুত্বপূর্ণ ছিল।


4
কেবল সতর্ক থাকুন যে কোনও আক্রমণকারীর যদি গণনার সংস্থান থাকে তবে তিনি ইচ্ছাকৃতভাবে দূষিত ডেটা তৈরি করতে পারবেন যা একই ডিরেক্টরিতে অবতরণ করবে। শালীন সংস্থান এবং আজকের প্রযুক্তির সাথে আক্রমণকারী হ্যাশগুলি তৈরি করতে পারে যা একই প্রথম 9 হেক্স ডিজিটযুক্ত (এবং এভাবে প্রথম তিনটি ডিরেক্টরি স্তরে সংঘর্ষে) প্রতি দশ মিনিটে প্রায় এক হারে তৈরি করতে পারে। এবং, অবশ্যই, পূর্ণ এমডি 5 হ্যাশগুলি আজ তৈরি করা যেতে পারে।
ডেভিড শোয়ার্জ

5

আধুনিক ফাইল-সিস্টেমগুলি খুব বড় ডিরেক্টরীগুলি এমনকি লক্ষ লক্ষ ফাইলগুলিতে খুব ভাল পরিচালনা করে। তবে প্রচলিত সরঞ্জামগুলি তা করে না। উদাহরণস্বরূপ, "ls" এর সাথে এত বড় ডিরেক্টরি তালিকাবদ্ধ করা বেশ দীর্ঘ সময় নিতে পারে যেহেতু এটি সাধারণত পুরো ডিরেক্টরিটি পড়ে এবং এটি সাজিয়ে তোলে (যদিও আপনি বাছাই এড়াতে ls -f ব্যবহার করতে পারেন)। সমস্ত পড়া না হওয়া পর্যন্ত এটি ফাইল দেখাতে শুরু করবে না। নামগুলি বিভক্ত করা কিছু ক্ষেত্রে সহায়তা করে, তবে সবকটিতেই নয় (উদাহরণস্বরূপ, আরএসএনসিইর প্রতিলিপিটি এখনও পুরো নাম সংগ্রহ করতে পারে)।


-1

আমি কি পরিবর্তে একটি এসকিউএল ডাটাবেস ব্যবহার করার পরামর্শ দেব? এটি সম্ভবত আপনার প্রয়োগের এই অনুভূত দুর্বলতাটিকে একটি শক্তিতে রূপান্তরিত করবে।

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