"Mahdi"
"Mahdi"
خواندن ۳ دقیقه·۱ سال پیش

لینوکس؛ فایل سیستم، Inode و لینک ها

در سیستم‌عامل لینوکس، مفهوم آینود‌ها (Inodes) اساسی برای مدیریت فایل‌ها و دایرکتوری‌ها در سیستم فایل می‌باشد. آینود‌ها نقش کلیدی در اختصاص حافظه، نام‌گذاری فایل‌ها، دسترسی به آن‌ها و مدیریت فضای دیسک دارند. در این مقاله، به بررسی مفهوم آینود‌ها، وظایف آن‌ها و نحوه عملکرد آینود‌ها در سیستم‌عامل لینوکس می‌پردازیم.


هارد دیسک ها ساختار بلوکی دارند . این بلوک ها نوعی واحد تقسیم بندی فضای دیسک میباشند که ذخیره سازی و دسترسی راحت تر به داده ها را فراهم میکنند . تعداد بایت های تشکیل دهنده‌ی یک بلوک متغیر است و در زمان ساختن پارتیشن میتوان مقدار آن را مشخص کرد. با دستور زیر میتوان فهمید که در پارتیشن مشخص شده هر بلوک از چند بایت تشکیل شده است .

sudo blockdev --getbsz /dev/sdX

زمانی که یک فایل جدید میسازیم با توجه به اندازه‌، این فایل میتواند یک یا بیشتر از یک بلوک را اشغال کند . نکته‌ی حائز اهمیت این است که بلوک های تشکیل دهنده یک فایل لزوما پشت سر یکدیگر و به صورت خطی نیستند . دلایل زیادی برای ذخیره‌ی غیر خطی بلوک های تشکیل دهنده‌ی یک فایل وجود دارد اما شاید اصلی ترین دلیل توانایی افزایش اندازه‌ی فایل با دردسر کمتر باشد .

پس تا به اینجا فهمیدیم که هارد دیسک ها ساختار بلوکی دارند و فایل ها نیز در صورت نیاز به بیش از یک بلوک در بلوک های مختلف که معمولا کنار یکدیگر نیستند ذخیره میشوند . حال این سوال پیش می‌آید که اگر بخواهیم یک فایل را از روی دیسک بخوانیم چگونه میتوان مکان دقیق بلاک های تشکیل دهنده‌ی این فایل را پیدا کرد ؟

پاسخ : Inode

آینود نوعی ساختمان داده شبیه به مپ است که اطلاعاتی در مورد فایل بجز محتوای فایل و نام فایل را ذخیره میکند . معمولا آینودها در ابتدای هر پارتیشن قرار میگیرند . زمانی که فایلی ساخته میشود، علاوه بر محتویات فایل که بر روی دیسک ذخیره میشوند یک آینود هم برایش ساخته شده که اطلاعاتی زیر را در مورد فایل ذخیره میکند :

  • سطوح دسترسی به فایل
  • تاریخ آخرین تغییر ایجاد شده
  • سایز فایل
  • گروه و مالک فایل
  • مکان محتویات فایل بر روی دیسک ( بلاک های تشکیل دهنده‌ی محتویات فایل)
  • سایر
نه تنها برای فایل های معمولی بلکه برای هر دایرکتوری، فایل بلاک و فایل کرکتر نیز یک آینود ساخته میشود

زمانی که در سیستم عامل فایلی میسازیم، سیستم عامل نام فایل + ادرس آینود مربوط به فایل را در محل مربوطه در فایل سیستم نگهدرای میکند (نوعی ساختمان داده درخت) . این ساختار به ما این اجازه را میدهد که برای هر فایل نام های مختلفی بسازیم . بدین صورت که نام های مختلف همگی آینود های یکسان داشته که اساس کار hardlink ها در لینوکس نیز به همین صورت است .

در ادامه به بررسی چند دستور کاربردی مربوط به آینود ها و لینک ها میپردازیم


sssss
sssss

دستور بالا اطلاعات مربوط به آینود های هر دیوایس متصل به دستگاه را نشان میدهد


با اضافه کردن آپشن i- به کامند ls میتوان آینود هر فایل را نیز در ستون اول مشاهده کرد


کامند stat اطلاعات بیشتری در مورد فایل را نشان میدهد . از جمله متادیتای فایل که در آینود ذخیره شده است

دستورات مربوط به ساختن لینک :


$ ln file link #Creates a hard link from the given file
$ ln -s item link #Creates a soft link from the given file or directory




این چند تصویر هم برای درک بهتر مفاهیم گفته شده میتونه مفید باشه :

سیستم عاملفایل سیستم
مینویسم، پس هستم
شاید از این پست‌ها خوشتان بیاید