কেন একটি ডিরেক্টরি আকার সর্বদা ইউনিক্সে 4096 বাইট হয়?


26

আমি নিশ্চিত যে ডিরেক্টরি ফাইলটিতে 4096 বাইটের চেয়ে কম তথ্য রয়েছে has আমি জানি খাতটির আয়তন 4096 বাইট। তবে এর চেয়ে কম ছোট ফাইল উপস্থিত রয়েছে।

ইউনিক্স কেন প্রতিটি ফোল্ডারে 4096 বাইট সংরক্ষণ করে?

উত্তর:


30

ডিরেক্টরিতে অন্তর্ভুক্ত থাকা ফাইল (নাম সহ) সম্পর্কিত মেটা-ডেটা সংরক্ষণ করার জন্য এটি প্রাথমিক আকারের প্রয়োজনীয়। প্রাথমিক বরাদ্দটি একটি খাতের আকারের সমান, তবে প্রয়োজনে এটির উপরে বাড়তে পারে। বরাদ্দ হয়ে গেলে, খণ্ডগুলি হ্রাস করার জন্য, ফাইলগুলি সরানো হলে স্থান মুক্ত করা হয় না।

উদাহরণ স্বরূপ:

$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/

সূত্র


3
"ফাইলগুলি সরানো থাকলে স্থানটি মুক্ত হয় না" অংশটির জন্য ধন্যবাদ। আমি একটি ব্যাকআপ পুনরুদ্ধার করেছি এবং নিশ্চিত ছিলাম না যে দুটি অন্যরকম অভিন্ন ডিরেক্টরিতে ভিন্ন আকার রয়েছে।
টমাসজ জিলিয়াস্কি

11

কখনও কখনও 4096 বাইট কিছু ফাইল সিস্টেমের জন্য ক্ষুদ্রতম বরাদ্দ ইউনিট। এই কারণেই ডিরেক্টরিতে 4096 রয়েছে।

একই জিনিস ফাইলগুলিতে প্রয়োগ করা হয়। যদিও কিছু ফাইল 4096 এর চেয়ে কম রিপোর্ট করতে পারে, তারা আসলে ডিস্ক থেকে কমপক্ষে 4096 স্টোরেজ নিচ্ছে।


4
হ্যাঁ, পাবলো যেমন বলেছিল। আপনি ফাইলটির সাথে যে আকারটি দেখছেন সেটি হ'ল ফাইল সামগ্রীর আকার, ডিস্ক আকারের ফাইলগুলি নয়। এই ছোট ফাইলগুলির ডিস্ক আকারটি প্রকৃতপক্ষে 4096 হয় ঠিক যেমন ডিরেক্টরি এটি কেবলমাত্র সেই আকারের ব্লকগুলিতে ডিস্কের স্থান বরাদ্দ করতে পারে
ড্যান ম্যাকগ্রা

1
এই প্রশ্নের সাথে কোন সম্পর্ক নেই।
harrymc

এটি ভুল। গৃহীত উত্তর দেখুন।
ডানকান এক্স সিম্পসন

ত্রুটিপূর্ণ? এটি কি উভয় উত্তরের সংমিশ্রণ নয়? 4096 হ'ল পৃষ্ঠার আকার, আরও তথ্যের জন্য মেমরি পেজিং সিস্টেমগুলি দেখুন।
হ্যারিকেল

5

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


3

এটি ফাইল সিস্টেমের উপর নির্ভর করে। Ext2 / 3/4 এ এটি "4096" হয় re পুনরস্পষ্টে এটি 9608 (আমার $HOME) 1032 ( /tmp) বা 48 (কিছুটা dir /tmp) হতে পারে।

ডিফল্টরূপে ext2 / 3/4 ব্লকে 4096 হয় - এবং ফাইলটি এর চেয়ে কম নিতে পারে না। ফাইল যদি ছোট হয় তবে যাইহোক এটি পুরো ব্লক লাগে। যেহেতু ডিরেক্টরিটির যৌক্তিক আকার সম্পর্কে জিজ্ঞাসা করা অর্থহীন এবং এই তথ্য সম্ভবত ডিস্কে নেই এবং এটি এমন কিছু রিপোর্ট করতে হবে যা এটি নেওয়া ব্লকের সংখ্যার অর্থ, যে শারীরিক স্থান গ্রহণ করা হয়েছিল তার বারের একটি আকারের প্রতিবেদন করে।


আমি নিশ্চিত যে ফাইলের আকারও ফাইলগুলির সাথে সঞ্চয় করা হয়নি। এটি প্রয়োজন হয় যখন গণনা করা হয়। তবে ফাইলগুলির জন্য এটি actualফাইলের আকারের প্রতিবেদন করে ।
লেজার

1
ফাইলের আকারটি ইনোডের সাথে সঞ্চয় করা হয়। নিশ্চিতরূপে ext2 ইনোড এর ভিতরে বাইট আকার ধারণ করে। অন্যথায় \0বাইনারি ফাইলগুলিতে আইনী চরিত্র হিসাবে ফাইলটি কোথায় শেষ হয়েছিল তা খুঁজে পাওয়া অসম্ভব । গীত। এফএস তৈরি করা সম্ভব যা এটি সঞ্চয় করে না - তবে কেবল ফ্যামিলি নয় (এবং সম্ভবত কোনও জনপ্রিয় নেই)।
ম্যাকিয়েজ পাইচোটকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.