লিনাক্সের আইওনডগুলি সম্পর্কে আপনি যা যা জানতে চেয়েছিলেন সেগুলি

লিনাক্স ফাইল সিস্টেম ইনোডের উপর নির্ভর করে। ফাইল সিস্টেমের অভ্যন্তরীণ কাজগুলির এই গুরুত্বপূর্ণ অংশগুলি প্রায়শই ভুল বোঝা যায়। আসুন তারা কী এবং তারা কী করে তা ঠিক দেখুন।

একটি ফাইল সিস্টেমের উপাদানসমূহ

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

লিনাক্সের এক্সট 4 ফাইল সিস্টেমে, ইনোড এবং ডিরেক্টরি কাঠামোগুলি এক সাথে কাজ করে এমন একটি আন্ডারপিনিং ফ্রেমওয়ার্ক সরবরাহ করে যা প্রতিটি ফাইল এবং ডিরেক্টরিগুলির জন্য সমস্ত মেটাডেটা সঞ্চয় করে। কার্নেল, ব্যবহারকারীর অ্যাপ্লিকেশন, বা লিনাক্স ইউটিলিটিগুলি যেমন এটির প্রয়োজন হয় তাদের জন্য তারা মেটাডেটা উপলব্ধ করে তোলে ls, স্টেট, এবং df.

ইনোড এবং ফাইল সিস্টেমের আকার

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

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

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

সমস্ত ইনোডগুলি একটি টেবিলে রাখা হয়। একটি ইনোড নম্বর ব্যবহার করে, ফাইল সিস্টেমটি সহজেই সেই ইনোড সারণিতে অফসেটটি গণনা করে যেখানে সেই ইনোডটি অবস্থিত। আপনি দেখতে পারেন কেন ইনোডের "i" ইনডেক্সের জন্য দাঁড়ায়।

ইনোড নম্বর থাকা ভেরিয়েবলটি সোর্স কোডে 32-বিট, স্বাক্ষরবিহীন দীর্ঘ পূর্ণসংখ্যার হিসাবে ঘোষিত হয়। এর অর্থ ইনোড নম্বরটি 2 32 সর্বাধিক আকারের একটি পূর্ণসংখ্যার মান, যা 4,294,967,295- এ 4 বিলিয়ন আইনেরও বেশি ধরে গণনা করে।

এটি তাত্ত্বিক সর্বাধিক। অনুশীলনে, একটি ফাইল ফাইল সিস্টেমের 16 কেবি প্রতি 1 ইনোডের একটি ডিফল্ট অনুপাতের ভিত্তিতে ফাইল সিস্টেমটি তৈরি করা হলে একটি ext4 ফাইল সিস্টেমে আইনের সংখ্যা নির্ধারণ করা হয়। ফাইল সিস্টেমের মধ্যে ফাইল-ডিরেক্টরি তৈরি হওয়ার সাথে সাথে ফাইল সিস্টেম ব্যবহারের সময় ডিরেক্টরি কাঠামো তৈরি করা হয়।

আপনার কম্পিউটারে কোনও ফাইল সিস্টেমে কতটি ইনোড রয়েছে তা দেখতে আপনি একটি আদেশ ব্যবহার করতে পারেন। দ্য -আই (আইওনড) বিকল্পটি df কমান্ডটি এর আউটপুটটি ইনোডের সংখ্যাতে প্রদর্শন করার নির্দেশ দেয়।

আমরা প্রথম হার্ড ড্রাইভের প্রথম পার্টিশনে ফাইল সিস্টেমটি দেখতে যাচ্ছি, সুতরাং আমরা নিম্নলিখিতটি টাইপ করি:

ডিএফ-আই / দেব / এসডিএ 1

আউটপুট আমাদের দেয়:

  • নথি ব্যবস্থা: ফাইল সিস্টেমটি রিপোর্ট করা হচ্ছে।
  • ইনোডস: এই ফাইল সিস্টেমে মোট ইনোডের সংখ্যা।
  • আমি ব্যবহার করতাম: ব্যবহৃত ইনোডের সংখ্যা।
  • আমি মুক্ত: ব্যবহারের জন্য উপলভ্য অবশিষ্ট আইওডগুলির সংখ্যা।
  • আমি ব্যবহার করি%: ব্যবহৃত ইনোডের শতাংশ।
  • মাউন্ট করা: এই ফাইল সিস্টেমের জন্য মাউন্ট পয়েন্ট।

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

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

আপনার ফাইল সিস্টেমে ডিস্ক ব্লকের আকার দেখতে, আপনি এটি ব্যবহার করতে পারেন ব্লকদেব কমান্ড --getbsz (ব্লকের আকার পান) বিকল্প:

sudo blockdev --getbsz / dev / sda

ব্লকের আকার 4096 বাইট।

এর ব্যবহার করুন -বি (ব্লকের আকার) বিকল্পটি 4096 বাইটের একটি ব্লক আকার নির্দিষ্ট করতে এবং নিয়মিত ডিস্ক ব্যবহার পরীক্ষা করতে:

df -B 4096 / dev / sda1

এই আউটপুট আমাদের দেখায়:

  • নথি ব্যবস্থা: আমরা যে ফাইল সিস্টেমটির প্রতিবেদন করছি।
  • 4 কে-ব্লক: এই ফাইল সিস্টেমে মোট 4 কেবি ব্লক।
  • ব্যবহৃত: কত 4K ব্লক ব্যবহার করা হচ্ছে?
  • উপলব্ধ: ব্যবহারের জন্য উপলভ্য বাকি 4 কেবি ব্লকের সংখ্যা।
  • % ব্যবহার করুন: 4 কেবি ব্লকের যে শতাংশ ব্যবহার করা হয়েছে
  • মাউন্ট করা: এই ফাইল সিস্টেমের জন্য মাউন্ট পয়েন্ট।

আমাদের উদাহরণস্বরূপ, ফাইল স্টোরেজ (এবং ইনোড এবং ডিরেক্টরি স্ট্রাকচারের স্টোরেজ) এই ফাইল সিস্টেমে ইনোডের 10 শতাংশের ব্যয় করে ২৮ শতাংশ স্থান ব্যবহার করেছে, সুতরাং আমরা ভাল অবস্থায় আছি।

ইনোড মেটাডেটা

কোনও ফাইলের ইনোড নম্বর দেখতে, আমরা ব্যবহার করতে পারি ls সাথে -আই (ইনোড) বিকল্প:

ls -i geek.txt

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

এই পদ্ধতিটি একটি নতুন স্কিম দ্বারা বাতিল করা হয়েছিল যা "এক্সটেন্টস" ব্যবহার করে। এগুলি ফাইল সঞ্চয় করার জন্য ব্যবহৃত প্রতিটি সংকলনের ব্লকের শুরু এবং শেষের ব্লকটি রেকর্ড করে। যদি ফাইলটি সীমিত না হয় তবে আপনাকে কেবল প্রথম ব্লক এবং ফাইলের দৈর্ঘ্য সংরক্ষণ করতে হবে। যদি ফাইলটি খণ্ডিত হয় তবে আপনাকে ফাইলের প্রতিটি অংশের প্রথম এবং শেষ ব্লকটি সংরক্ষণ করতে হবে। এই পদ্ধতিটি (স্পষ্টতই) আরও দক্ষ।

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

এই উদাহরণ কমান্ডটি দেখতে কেমন তা এখানে রয়েছে:

sudo ডিবাগস -আর "স্ট্যাট" / দেব / এসডিএ 1

নীচে দেখানো হয়েছে হিসাবে ডিবাগস কমান্ড ইনোড থেকে তথ্যটি বের করে এবং আমাদের কাছে এটি উপস্থাপন করে কম:

আমরা নিম্নলিখিত তথ্য প্রদর্শিত হয়েছে:

  • ইনোড: আমরা যে ইনোডটি দেখছি তার সংখ্যা।
  • প্রকার: এটি একটি নিয়মিত ফাইল, ডিরেক্টরি বা প্রতীকী লিঙ্ক নয়।
  • মোড: অষ্টালে ফাইল অনুমতি।
  • পতাকা: সূচকগুলি যা বিভিন্ন বৈশিষ্ট্য বা কার্যকারিতা উপস্থাপন করে। 0x80000 হ'ল "এক্সটেন্টস" পতাকা (এটি নীচে আরও)।
  • জেনারেশন: কোনও নেটওয়ার্ক ফাইল সিস্টেম (এনএফএস) এটি ব্যবহার করে যখন কোনও ব্যক্তি যদি কোনও স্থানীয় সংযোগে নেটওয়ার্ক সংযোগের মাধ্যমে দূরবর্তী ফাইল সিস্টেমগুলিতে অ্যাক্সেস করে। ইনোড এবং প্রজন্মের নম্বরগুলি ফাইল হ্যান্ডেলের একটি ফর্ম হিসাবে ব্যবহৃত হয়।
  • সংস্করণ: ইনোড সংস্করণ।
  • ব্যবহারকারী: ফাইলের মালিক।
  • দল: ফাইলটির গ্রুপের মালিক।
  • প্রকল্প: সর্বদা শূন্য হওয়া উচিত।
  • আকার: ফাইলের আকার।
  • এসিএল ফাইল করুন: ফাইল অ্যাক্সেস নিয়ন্ত্রণের তালিকা। এগুলি আপনাকে মালিক গোষ্ঠীতে নেই এমন লোকদের নিয়ন্ত্রিত অ্যাক্সেস দেওয়ার অনুমতি দেওয়ার জন্য ডিজাইন করা হয়েছিল।
  • লিঙ্কগুলি: ফাইলটিতে হার্ড লিঙ্কের সংখ্যা।
  • ব্লককઉન્ટ: 512-বাইট খণ্ডে দেওয়া এই ফাইলটিতে বরাদ্দ হওয়া হার্ড ড্রাইভের পরিমাণ। আমাদের ফাইলটি এর মধ্যে আটটি বরাদ্দ করা হয়েছে, যা 4,096 বাইট। সুতরাং, আমাদের 98-বাইট ফাইলটি একটি একক 4,096-বাইট ডিস্ক ব্লকের মধ্যে বসে।
  • টুকরা: এই ফাইলটি খণ্ডিত নয়। (এটি একটি অপ্রচলিত পতাকা)
  • সিটাইম: যে সময় ফাইলটি তৈরি হয়েছিল।
  • একটি সময়: এই ফাইলটি সর্বশেষে অ্যাক্সেস করা হয়েছিল এমন সময়।
  • এমটাইম: এই ফাইলটি সর্বশেষে সংশোধন করার সময়।
  • ক্রাইটটাইম: যে সময় ফাইলটি তৈরি হয়েছিল।
  • অতিরিক্ত ইনোড ক্ষেত্রগুলির আকার: Ext4 ফাইল সিস্টেমটি বিন্যাসের সময় বৃহত্তর ডিস্ক ইনোড বরাদ্দ করার ক্ষমতা চালু করে। এই মানটি ইনোডটি ব্যবহার করছে এমন অতিরিক্ত বাইটের সংখ্যা। এই অতিরিক্ত স্থানটি নতুন কার্নেলগুলির জন্য ভবিষ্যতের প্রয়োজনীয়তাগুলিকে সামঞ্জস্য করতে বা বর্ধিত বৈশিষ্ট্যগুলি সঞ্চয় করতে ব্যবহার করা যেতে পারে।
  • ইনোড চেকসাম: এই ইনোডের জন্য একটি চেকসাম, যা ইনোডটি দূষিত হয়েছে কিনা তা সনাক্ত করা সম্ভব করে।
  • এক্সটেন্টস: যদি এক্সটেন্টগুলি ব্যবহার করা হয় (এক্সট 4 এ, তারা ডিফল্টরূপে), ফাইলগুলির ডিস্ক ব্লক ব্যবহার সম্পর্কিত মেটাডেটাতে দুটি সংখ্যা রয়েছে যা খণ্ডিত ফাইলের প্রতিটি অংশের শুরু এবং শেষের ব্লকগুলি নির্দেশ করে। এটি ফাইলের প্রতিটি অংশের দ্বারা নেওয়া প্রতিটি ডিস্ক ব্লক সংরক্ষণের চেয়ে বেশি দক্ষ। আমাদের একটি পরিমাণ রয়েছে কারণ আমাদের ছোট ফাইলটি এই ব্লক অফসেটে একটি ডিস্ক ব্লকে বসে।

ফাইলের নাম কোথায়?

ফাইলটি সম্পর্কে এখন আমাদের কাছে প্রচুর তথ্য রয়েছে, তবে আপনি যেমন খেয়াল করেছেন, আমরা ফাইলের নাম পাইনি। এখানেই ডিরেক্টরি কাঠামো কার্যকর হয়। লিনাক্সে, কোনও ফাইলের মতোই ডিরেক্টরিতে একটি ইনোড থাকে। ফাইল ডেটাযুক্ত ডিস্ক ব্লকগুলিতে ইঙ্গিত করার পরিবর্তে, ডিরেক্টরি ইনওড ডিরেক্টরি স্ট্রাকচারযুক্ত ডিস্ক ব্লকে নির্দেশ করে।

একটি ইনোডের সাথে তুলনা করে, একটি ডিরেক্টরি স্ট্রাকচারে একটি ফাইল সম্পর্কে সীমিত পরিমাণে তথ্য থাকে। এটি কেবলমাত্র ফাইলের ইনোড নম্বর, নাম এবং নামের দৈর্ঘ্য ধারণ করে।

ইনোড এবং ডিরেক্টরি কাঠামোতে আপনার (বা কোনও অ্যাপ্লিকেশন) কোনও ফাইল বা ডিরেক্টরি সম্পর্কে যা জানা দরকার তা ধারণ করে। ডিরেক্টরি কাঠামো একটি ডিরেক্টরি ডিস্ক ব্লকে থাকে, সুতরাং আমরা জানি ফাইলটি ডিরেক্টরিটি রয়েছে The ডিরেক্টরি কাঠামোটি আমাদের ফাইলের নাম এবং ইনোড নম্বর দেয়। ইনোড আমাদের ফাইলের টাইমস্ট্যাম্পগুলি, অনুমতিগুলি এবং ফাইল সিস্টেমে ফাইলের ডেটা কোথায় সন্ধান করতে পারে সে সম্পর্কে সমস্ত কিছু বলে।

ডিরেক্টরি ইনোডস

আপনি ডিরেক্টরিগুলির ইনোড নম্বর ঠিক তত সহজেই দেখতে পারা যেতে পারেন কেবল ফাইলগুলির জন্য।

নিম্নলিখিত উদাহরণে, আমরা ব্যবহার করব ls সাথে -লি (দীর্ঘ বিন্যাস), -আই (ইনোড), এবং -ডি (ডিরেক্টরি) বিকল্পগুলি, এবং দেখুন কাজ ডিরেক্টরি:

এলএস-লিড কাজ /

কারণ আমরা ব্যবহার করেছি -ডি (ডিরেক্টরি) বিকল্প,ls ডিরেক্টরিতে নিজেই রিপোর্ট করে, এর বিষয়বস্তু নয়। এই ডিরেক্টরিটির ইনোডটি 1443016।

জন্য যে পুনরাবৃত্তি বাড়ি ডিরেক্টরি, আমরা নিম্নলিখিত টাইপ করুন:

ls -lid

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

আমরা নিম্নলিখিত টাইপ:

এলএস-লিয়া কাজ /

কারণ আমরা ব্যবহার করেছি -এ (সমস্ত) বিকল্প, একক- (।) এবং ডাবল-ডট (..) এন্ট্রি প্রদর্শিত হয়। এই এন্ট্রিগুলি ডিরেক্টরিটি নিজেই (একক বিন্দু) এবং এর পিতামহুল ডিরেক্টরি (ডাবল-ডট।) উপস্থাপন করে

আপনি যদি একক-বিন্দু প্রবেশের জন্য ইনোড নম্বরটি দেখেন তবে আপনি যে এটি 1443016 — একই ইনোড নম্বরটি পেয়েছিলাম যখন আমরা ইনড নম্বরটি আবিষ্কার করি কাজ ডিরেক্টরি এছাড়াও, ডাবল-ডট প্রবেশের জন্য ইনোড নম্বরটি এর জন্য ইনোড নম্বর হিসাবে একই বাড়ি ডিরেক্টরি

এজন্য আপনি এটি ব্যবহার করতে পারেন সিডি .. ডিরেক্টরি ট্রিতে একটি স্তর সরাতে কমান্ড। তেমনি, আপনি যখন কোনও অ্যাপ্লিকেশন বা স্ক্রিপ্টের নামটি আগে রেখে যান./অ্যাপ্লিকেশন বা স্ক্রিপ্টটি কোথা থেকে চালু করতে হবে তা আপনি শেলটিকে জানাতে পারেন।

ইনোড এবং লিঙ্কগুলি

যেমনটি আমরা আচ্ছাদন করেছি, তিনটি উপাদানগুলির ফাইল সিস্টেমে একটি সুগঠিত এবং অ্যাক্সেসযোগ্য ফাইল থাকা দরকার: ফাইল, ডিরেক্টরি কাঠামো এবং ইনোড। ফাইলটি হার্ড ড্রাইভে থাকা ডেটা, ডিরেক্টরি স্ট্রাকচারিতে ফাইলটির নাম এবং তার ইনোড নম্বর থাকে এবং ইনোডে ফাইলটির জন্য সমস্ত মেটাডেটা থাকে।

সিম্বলিক লিঙ্কগুলি ফাইল সিস্টেমের এন্ট্রি যা ফাইলগুলির মতো দেখায় তবে সেগুলি সত্যই শর্টকাট যা বিদ্যমান ফাইল বা ডিরেক্টরিতে নির্দেশ করে। আসুন দেখুন কীভাবে তারা এটি পরিচালনা করে এবং কীভাবে তিনটি উপাদান এটি অর্জন করতে ব্যবহৃত হয়।

আসুন ধরা যাক আমরা এতে দুটি ফাইল সহ একটি ডিরেক্টরি পেয়েছি: একটি স্ক্রিপ্ট, এবং অন্যটি নীচে দেখানো হিসাবে একটি অ্যাপ্লিকেশন।

আমরা ln কমান্ড এবং -স (প্রতীকী) বিকল্পটি স্ক্রিপ্ট ফাইলটিতে একটি নরম লিঙ্ক তৈরি করার জন্য:

ls -s my_script geek.sh

আমরা এর লিঙ্ক তৈরি করেছি my_script.sh বলা হয় geek.sh। আমরা নিম্নলিখিত টাইপ এবং ব্যবহার করতে পারেনls দুটি স্ক্রিপ্ট ফাইল তাকান:

ls -li * .sh

জন্য প্রবেশ geek.sh নীল চেহারা। অনুমতিগুলির পতাকাগুলির প্রথম অক্ষরটি লিঙ্কের জন্য একটি "এল" এবং এটি-> পয়েন্ট my_script.sh । এই সমস্ত ইঙ্গিত দেয় geek.sh একটি লিঙ্ক।

আপনি সম্ভবত প্রত্যাশা হিসাবে, দুটি স্ক্রিপ্ট ফাইল পৃথক ইনোড নম্বর আছে। এর চেয়ে অবাক হওয়ার মতো বিষয়টি হ'ল নরম লিঙ্কটি, geek.sh, মূল স্ক্রিপ্ট ফাইলের মতো একই ব্যবহারকারীর অনুমতি নেই। আসলে, জন্য অনুমতিgeek.sh আরও অনেক উদার - সমস্ত ব্যবহারকারীর সম্পূর্ণ অনুমতি আছে।

জন্য ডিরেক্টরি কাঠামো geek.sh লিঙ্কটির নাম এবং এর ইনোড রয়েছে। আপনি যখন লিঙ্কটি ব্যবহার করার চেষ্টা করবেন, তখন নিয়মিত ফাইলের মতোই এর ইনোডটি উল্লেখ করা হয়। লিঙ্ক ইনোডটি একটি ডিস্ক ব্লকের দিকে নির্দেশ করবে তবে ফাইল সামগ্রীর ডেটা থাকার পরিবর্তে ডিস্ক ব্লকে মূল ফাইলটির নাম রয়েছে। ফাইল সিস্টেমটি মূল ফাইলটিতে পুনঃনির্দেশ করে।

আমরা আসল ফাইলটি মুছব এবং এর লিখিত সামগ্রীগুলি দেখার জন্য আমরা যখন নিম্নলিখিতটি টাইপ করি তখন কী হয় তা দেখুনgeek.sh:

rm my_script.sh
বিড়াল geek.sh

প্রতীকী লিঙ্কটি ভাঙা হয়েছে এবং পুনর্নির্দেশ ব্যর্থ হয়।

অ্যাপ্লিকেশন ফাইলটিতে একটি হার্ড লিঙ্ক তৈরি করতে আমরা এখন নিম্নলিখিতটি টাইপ করি:

ln বিশেষ অ্যাপ্লিকেশন geek- অ্যাপ্লিকেশন

এই দুটি ফাইলের ইনোডগুলি দেখতে, আমরা নিম্নলিখিতটি টাইপ করি:

ls -li

দু'জনেই নিয়মিত ফাইলের মতো লাগে। কিছুই নেই geek-app ইঙ্গিত দেয় যেভাবে এটি একটি লিঙ্ক ls জন্য তালিকা geek.sh করেছিল. প্লাস,geek-app মূল ফাইলের মতো একই ব্যবহারকারীর অনুমতি রয়েছে। যাইহোক, অবাক করার মতো বিষয়টি হ'ল উভয় অ্যাপ্লিকেশনের একই ইনোড নম্বর রয়েছে: 1441797।

জন্য ডিরেক্টরি এন্ট্রি geek-app "গিক-অ্যাপ" নাম এবং একটি ইনোড নম্বর রয়েছে তবে এটি মূল ফাইলের ইনোড সংখ্যার মতো। সুতরাং, আমাদের দুটি পৃথক নাম সহ দুটি ফাইল সিস্টেম এন্ট্রি রয়েছে যা উভয়ই একই ইনোডকে নির্দেশ করে। আসলে, আইটেমের যে কোনও সংখ্যা একই ইনোডে নির্দেশ করতে পারে।

আমরা নিম্নলিখিতটি টাইপ করব এবং এটি ব্যবহার করব স্টেট লক্ষ্য ফাইলটি দেখার জন্য প্রোগ্রাম:

স্ট্যাট বিশেষ অ্যাপ্লিকেশন

আমরা দেখতে পাই যে দুটি হার্ড লিঙ্কগুলি এই ফাইলটিতে নির্দেশ করে। এটি ইনোডে সংরক্ষণ করা হয়।

নিম্নলিখিত উদাহরণে, আমরা মূল ফাইলটি মুছুন এবং একটি গোপন, সুরক্ষিত পাসওয়ার্ড সহ লিঙ্কটি ব্যবহার করার চেষ্টা করুন:

আরএম বিশেষ অ্যাপ্লিকেশন
./geek-app সংশোধনঘড়িরব্যাটরিস্ট্যাপল

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

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

আমরা নিম্নলিখিত টাইপ করব এবং আরও একবার স্ট্যাট ব্যবহার করব — এবার geek-app:

স্থিতিস্থাপক অ্যাপ্লিকেশন

এই বিবরণগুলি আগের মতো একই ইনোড (1441797) থেকে টানা হয় স্টেট আদেশ লিঙ্কের গণনা এক করে হ্রাস করা হয়েছিল।

কারণ আমরা মুছে ফেললে আমরা এই ইনোডের একটি হার্ড লিঙ্কে নেমেছিgeek-appএটি সত্যই ফাইলটি মুছে ফেলবে। ফাইল সিস্টেমটি ইনোডটি মুক্ত করবে এবং শূন্যের একটি ইনোড দিয়ে ডিরেক্টরি কাঠামো চিহ্নিত করবে। তারপরে একটি নতুন ফাইল হার্ড ড্রাইভে ডেটা স্টোরেজ ওভাররাইট করতে পারে।

সম্পর্কিত:লিনাক্স-এ স্ট্যাট কমান্ড কীভাবে ব্যবহার করবেন

ইনোড ওভারহেডস

এটি একটি ঝরঝরে সিস্টেম, কিন্তু ওভারহেড রয়েছে। একটি ফাইল পড়ার জন্য, ফাইল সিস্টেমের নিম্নলিখিত সমস্ত কাজ করতে হবে:

  • সঠিক ডিরেক্টরি কাঠামোটি সন্ধান করুন
  • ইনোড নম্বরটি পড়ুন
  • সঠিক ইনোডটি সন্ধান করুন
  • ইনোড তথ্য পড়ুন
  • আইওনড লিঙ্কগুলি বা প্রাসঙ্গিক ডিস্ক ব্লকগুলিতে এক্সটেন্টগুলি অনুসরণ করুন
  • ফাইল ডেটা পড়ুন

যদি ডেটা অবিসংবাদিত হয় তবে আরও কিছুটা লাফিয়ে উঠতে হবে।

যে কাজটি করতে হবে তা কল্পনা করুনls একটি দীর্ঘ ফর্ম্যাট ফাইল ফাইল তালিকা সম্পাদন করতে। এখানে পিছনে পিছনে অনেক কিছুই রয়েছে ls তথ্য পেতে এর আউটপুট উত্পন্ন করতে হবে।

অবশ্যই, ফাইল সিস্টেমের অ্যাক্সেসকে ত্বরান্বিত করার কারণে লিনাক্স যথাসম্ভব প্রিপ্রিমটিভ ফাইল ক্যাশে করার চেষ্টা করে। এটি ব্যাপকভাবে সহায়তা করে, তবে কখনও কখনও - যেমন কোনও ফাইল সিস্টেমের মতো - ওভারহেডগুলি স্পষ্ট হয়ে উঠতে পারে।

এখন আপনি কেন জানবেন।