লিনাক্স ডিরেক্টরি আকার / ব্লক গণনা মনোটোনিক বৃদ্ধি


8

লিনাক্সে, (সম্ভবত ফাইল সিস্টেম ব্লক আকারের ফাংশন হিসাবে), যখন আমি একটি ডিরেক্টরি তৈরি করি এবং statএটি 4096 আকারের আকার দেয় the আমি এই ডিরেক্টরিতে একটি বিন্দু পর্যন্ত ফাইলগুলি তৈরি করতে পারি, এটির অনুমান আকার না বাড়িয়েই ডিরেক্টরি (হিসাবে রিপোর্ট stat)।

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

এখানে একটি দ্রুত উদাহরণ:

[root@uxlabtest:/]$ mkdir test
[root@uxlabtest:/]$ stat test
  File: `test'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 1396685     Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-07-26 14:06:04.000000000 -0400
Modify: 2011-07-26 14:06:04.000000000 -0400
Change: 2011-07-26 14:06:04.000000000 -0400

তারপরে একগুচ্ছ ফাইল স্পর্শ করুন:

[root@uxlabtest:/]$ for i in `seq 1 10000`; do touch /test/$i; done
[root@uxlabtest:/]$ stat test
  File: `test'
  Size: 155648          Blocks: 312        IO Block: 4096   directory
Device: fd00h/64768d    Inode: 1396685     Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-07-26 14:06:04.000000000 -0400
Modify: 2011-07-26 14:06:56.000000000 -0400
Change: 2011-07-26 14:06:56.000000000 -0400

তারপরে ফাইলগুলি মুছুন:

[root@uxlabtest:/]$ rm -rf /test/*
[root@uxlabtest:/]$ stat test
  File: `test'
  Size: 155648          Blocks: 312        IO Block: 4096   directory
Device: fd00h/64768d    Inode: 1396685     Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-07-26 14:07:11.000000000 -0400
Modify: 2011-07-26 14:07:12.000000000 -0400
Change: 2011-07-26 14:07:12.000000000 -0400

আমার প্রশ্নগুলি হ'ল:

  • কেন একটি ডিরেক্টরি আকার / ব্লক গণনা একঘেয়েমি বৃদ্ধি করে?
  • এটি কি অন্তর্নিহিত ফাইল সিস্টেমের কাজ বা লিনাক্স ভিএফএসের কাজ?
  • ডিরেক্টরিটি মোছা এবং পুনরায় তৈরি না করে ডিরেক্টরি আকারটি কি কখনও হ্রাস করা যেতে পারে?
  • বোনাস পয়েন্ট: আমাকে কার্নেল উত্স কোডে নির্দেশ করুন যেখানে এই আচরণটি প্রয়োগ করা হয়।

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

উত্তর:


9

Ext2 / ext3 / ext4- এর জন্য সঠিক যে উত্তরগুলি এখানে দেওয়া হল। যদি তারা অন্যান্য ফাইল সিস্টেমের ক্ষেত্রে সত্য হয় তবে তাদের প্রয়োগের উপর নির্ভর করে।

  1. ব্যবহারকারী 48838 এটির সঠিক উত্তর দিয়েছে। আরও ফাইল আরও মেটা ডেটা গ্রাস করে। এগুলি 4k অংশ বা ফাইল সিস্টেমের তৈরির সময় সংজ্ঞায়িত অন্য কোনও আকারে বরাদ্দ করা হয়
  2. হ্যাঁ এটি আসল ফাইল সিস্টেমের একটি বৈশিষ্ট্য / সমস্যা
  3. একটি ext3 ফাইল সিস্টেমে এটি সম্ভব নয়। কেবল (খালি) ডিরেক্টরিটি পুনরায় তৈরি করার মাধ্যমে
  4. উত্স কোডটি এখানে এবং সম্পর্কিত ফাইলে রয়েছে

তবে আপনার ভাগ্য আছে। আপনি ইতিমধ্যে মুছে ফেলা সমান পরিমাণ ফাইল পুনরায় তৈরি করার সময় ডিরেক্টরি আকারটি একই থাকবে। আপনি যখন আরও ফাইল যুক্ত করবেন তখনই এটি বাড়বে।


1
একটি জিনিস: "e2fsck -fD" একটি ext2 / 3 ফাইল সিস্টেমের প্রতিটি ডিরেক্টরি কম্প্যাক্ট করা উচিত। এটি ওপি যা চায় তা করতে পারে, যদিও আমি সন্দেহ করি যে এটি ধীর গতির এবং ফাইল সিস্টেমটি অফলাইনে থাকতে হবে। কোনও নতুন ডিরেক্টরিতে প্রতিটি ফাইল লিঙ্ক করা এবং পুরানো ফাইলগুলি মুছে ফেলার চেয়ে সম্ভবত এটি বেশি সময় নেয়।
আকরামার

4

আপনি যে ব্লক ইনক্রিমেন্টগুলি দেখছেন তা ফাইল সিস্টেমের ফাইল এবং সম্পর্কিত ফাইল পরিচালনা সম্পর্কিত তথ্য কীভাবে এটি পরিচালনা করে to আপনার বর্ণিত পরিস্থিতিতে, এটি 4K এর বৃদ্ধি হিসাবে প্রদর্শিত হবে, সুতরাং ফাইল সিস্টেমে প্রতিটি "নতুন" / "অনন্য" এন্ট্রি 4K সংরক্ষণ করবে, প্রকৃত ডেটার আকার পুরো 4K পূরণ করবে কিনা। যদি সম্পর্কিত ডেটা পুরো 4 কে নেয় তবে সম্পূর্ণ সম্পর্কিত ডেটা স্ট্রিম / সিকোয়েন্সটি সংরক্ষণ করার জন্য আরও 4 কে ব্লক সংরক্ষণ করা হয় এবং পূরণ করা হয়।

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

ফাইল সিস্টেমের মাধ্যমে স্টোরেজ ম্যানেজমেন্টের কাছে কীভাবে যোগাযোগ করা হয় এবং প্রয়োগ করা হয়, তাই একাধিক / মডিউলার ফাইল সিস্টেমগুলিকে সমর্থনকারী ওএসে, ওএস সাধারণত ফাইল সিস্টেমকে একীভূত করার জন্য কেবল "হুক" সরবরাহ করে provide


1

ব্যবহারকারী 48838 এর উত্তরের উত্তরে কিছু দুরন্ত মন্তব্য মন্তব্য যুক্ত করা:

সমস্ত কিছু ডিরেক্টরি সহ একটি ফাইল। ফাইলের সমস্ত তথ্য সঞ্চয় করতে আপনার স্থান দরকার।

এটি একটি ছোট ডিরেক্টরিতে '64 বি ব্যবহৃত' দেখাতে এবং বাস্তবে ব্যবহৃত স্থানের পরিমাণ দেখাতেও বৈধ হবে তবে আমরা যেভাবেই ডিস্কে 4K এর একাধিক ব্যবহার করব, সুতরাং এটি কেবল ডিজাইন করার সিদ্ধান্ত ছিল ব্যবহৃত স্থান পরিমাণ।

একটি এফএস ডিজাইনের দৃষ্টিকোণ থেকে, আপনি কী ব্যবহার করা হয়েছিল তা গণনা করার সমস্যায় পড়তে কেন বিরক্ত করবেন? জরুরী না. এবং তারপরে আপনাকে ছিদ্রগুলি এড়াতে এন্ট্রিগুলি সরাতে হবে… িক

মুছে ফেলার সময় এবং ডির আকারের ড্রপগুলি যাতে আপনি একটি ব্লক মুক্ত করতে পারেন , আপনার প্রকৃতপক্ষে এটি করার আগে সেই সমস্ত ব্যবস্থাপনার দরকার পড়ে। কেন কয়েক কেবি বাঁচাতে বিরক্ত করবেন? অদ্ভুততা যেহেতু আপনাকে পরে এটি প্রসারিত করতে হবে।

পাঠকের জন্য অনুশীলন হিসাবে বাম: আপনার / হারিয়ে যাওয়া + ডিরেক্টরিটি খালি কেন তৈরি করা হয়েছে তবে 16 কে (কমপক্ষে ext3 এ) লাগে কেন তা ভেবে দেখুন।

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