در سیستمعامل لینوکس، مفهوم آینودها (Inodes) اساسی برای مدیریت فایلها و دایرکتوریها در سیستم فایل میباشد. آینودها نقش کلیدی در اختصاص حافظه، نامگذاری فایلها، دسترسی به آنها و مدیریت فضای دیسک دارند. در این مقاله، به بررسی مفهوم آینودها، وظایف آنها و نحوه عملکرد آینودها در سیستمعامل لینوکس میپردازیم.
هارد دیسک ها ساختار بلوکی دارند . این بلوک ها نوعی واحد تقسیم بندی فضای دیسک میباشند که ذخیره سازی و دسترسی راحت تر به داده ها را فراهم میکنند . تعداد بایت های تشکیل دهندهی یک بلوک متغیر است و در زمان ساختن پارتیشن میتوان مقدار آن را مشخص کرد. با دستور زیر میتوان فهمید که در پارتیشن مشخص شده هر بلوک از چند بایت تشکیل شده است .
sudo blockdev --getbsz /dev/sdX
زمانی که یک فایل جدید میسازیم با توجه به اندازه، این فایل میتواند یک یا بیشتر از یک بلوک را اشغال کند . نکتهی حائز اهمیت این است که بلوک های تشکیل دهنده یک فایل لزوما پشت سر یکدیگر و به صورت خطی نیستند . دلایل زیادی برای ذخیرهی غیر خطی بلوک های تشکیل دهندهی یک فایل وجود دارد اما شاید اصلی ترین دلیل توانایی افزایش اندازهی فایل با دردسر کمتر باشد .
پس تا به اینجا فهمیدیم که هارد دیسک ها ساختار بلوکی دارند و فایل ها نیز در صورت نیاز به بیش از یک بلوک در بلوک های مختلف که معمولا کنار یکدیگر نیستند ذخیره میشوند . حال این سوال پیش میآید که اگر بخواهیم یک فایل را از روی دیسک بخوانیم چگونه میتوان مکان دقیق بلاک های تشکیل دهندهی این فایل را پیدا کرد ؟
پاسخ : Inode
آینود نوعی ساختمان داده شبیه به مپ است که اطلاعاتی در مورد فایل بجز محتوای فایل و نام فایل را ذخیره میکند . معمولا آینودها در ابتدای هر پارتیشن قرار میگیرند . زمانی که فایلی ساخته میشود، علاوه بر محتویات فایل که بر روی دیسک ذخیره میشوند یک آینود هم برایش ساخته شده که اطلاعاتی زیر را در مورد فایل ذخیره میکند :
نه تنها برای فایل های معمولی بلکه برای هر دایرکتوری، فایل بلاک و فایل کرکتر نیز یک آینود ساخته میشود
زمانی که در سیستم عامل فایلی میسازیم، سیستم عامل نام فایل + ادرس آینود مربوط به فایل را در محل مربوطه در فایل سیستم نگهدرای میکند (نوعی ساختمان داده درخت) . این ساختار به ما این اجازه را میدهد که برای هر فایل نام های مختلفی بسازیم . بدین صورت که نام های مختلف همگی آینود های یکسان داشته که اساس کار hardlink ها در لینوکس نیز به همین صورت است .
در ادامه به بررسی چند دستور کاربردی مربوط به آینود ها و لینک ها میپردازیم
دستور بالا اطلاعات مربوط به آینود های هر دیوایس متصل به دستگاه را نشان میدهد
با اضافه کردن آپشن 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
این چند تصویر هم برای درک بهتر مفاهیم گفته شده میتونه مفید باشه :