TAHA
06-28-2010, 10:58 PM
ساختار سیستم فایل لینوکس و یونیکس
سیستم فایل هر کامپیوتر، امکان ذخیره سازی فایلها و اطلاعات را روی آن فراهم میسازد. هنگامی که از داخل برنامه واژه پرداز خود سندی را ذخیره میکنید، این سیستم فایل است که تعیین میکند سند چگونه و کجا ذخیره شود.
ابزارهای ذخیره سازی مانند فلاپی دیسکها، دیسکهای سخت، درایوهای CD-ROM، درایوهای Zip و... تا قبل از اینکه سیستمعامل سیستم فایل را روی آنها تشکیل دهد، قابل استفاده نیستند.
سیستم فایلهای گوناگونی برای سیستمعاملهای مبتنی بر یونیکس و لینوکس ارائه شدهاند که برخی از آنها عبارتند از ext2، ext3، xfs، reiserfs و غیره. این سیستم فایلها در جزئیات فنی دارای تفاوتهایی با هم هستند ولی از نظر ساختاری که ایجاد میکنند مشابه بوده و تفاوت چندانی باهم ندارند. در این مقاله ما وارد جزئیات فنی هر نوع از سیستم فایلها نشده و تنها ساختار آنها را بررسی خواهیم کرد.
سیستم فایل یا درخت؟
سیستم فایل سیستمعاملهای مبتنی بر یونیکس و لینوکس بصورت یک درخت وارونه پیاده سازی شده است. در یونیکس و لینوکس دیگر شما چیزی به نام درایوهای A، C و ... ندارید. تمام ابزارها و سیستم فایلها شاخههایی از این درخت وارونه هستند. مرکز این درخت ریشه یا root نام دارد که بالاترین سطح سیستم فایل را تشکیل میدهد. زیر ریشه، پوشههایی قرار دارند که سایر قسمتهای سیستم فایل را تشکیل میدهند که اکنون درباره آنها توضیح میدهم. تصویر ۱ سیستم فایل سیستمهای مبتنی بر یونیکس و لینوکس را نشان میدهد.
http://pnu-club.com/imported/2010/06/63.png
همانطور که میبینید سیستم فایل از تعداد زیادی پوشه تشکیل شدهاست که این پوشهها تقریبا در تمامی سیستمعاملهای مبتنی بر یونیکس و لینوکس مشترک هستند. اکنون به تشریح تک تک این شاخهها پرداخته و در میان آن توضیحات اضافه را به شما ارائه خواهم کرد.
پارتیشنها
در سیستم فایل سیستمعاملهای مبتنی بر لینوکس و یونیکس، دیسکهای سخت میتوانند پارتیشنهای متعددی داشته باشند. در این صورت هر پارتیشن دارای یک نقطه اتصال یا mount point میباشد که در آن نقطه به درخت سیستم فایل متصل میشود. مثلا میتوانید اطلاعات کاربران سیستم را در یک پارتیشن جداگانه ذخیره نموده و نقطه اتصال آنرا home تعیین کنید که محل قرارگیری اطلاعات کاربران است و به همین ترتیب.
بخشهای درخت سیستم فایل
اکنون به بررسی تک تک شاخههای سیستم فایل میپردازیم. توجه داشته باشید که دسترسی به اکثر این شاخهها فقط توسط کاربر ریشه امکان پذیر است.
-شاخه bin: در این شاخه، دستورات سیستمعامل که برای تمام کاربران قابل دستیابی هستند و برخی دستورات مدیریتی سیستم قرار میگیرند.
-شاخه boot: این شاخه که میتواند در یک پارتیشن جداگانه بوده و به پوشه boot متصل شده باشد، حاوی برنامه راهنداز بوت سیستم عامل میباشد. مانند Grub و Lilo.
-شاخه dev: محل قرارگیری نقطه دسترسیهای ابزارهای سخت افزاری است. مثلا تمام پورتها، پارتیشنها و... در اینجا دارای یک فایل هستند. برای مثال فایل dev/fd0 نشاندهنده فلاپی درایو سیستم است و به همین ترتیب. بسیاری از برنامههای کاربردی از این فایلهای دسترسی برای خواندن و نوشتن دادهها بر روی ابزار مورد نظرشان استفاده میکنند. مثلا یک برنامه کاربردی فایل dev/fd0 را باز کرده و در آن مینویسد. در حقیقت اطلاعات روی درایو فلاپی و دیسکی که در آن قرار دارد، نوشته خواهد شد.
-شاخه etc: در این شاخه فایلهای پیکربندی برنامههای سرویس دهنده و برخی فایلهای سیستمی دیگر قرار میگیرند. مثلا فایل پیکربندی سرویس دهنده وب آپاچی در سیستمهای دبیان در etc/apache/http.conf قرار دارد و به همین ترتیب.
-شاخه home: در این شاخه دایرکتوریهای خانگی کاربران سیستم و اطلاعات آنها قرار میگیرد. بهتر است این شاخه در یک پارتیشن جداگانه قرار گرفته و متصل شود. این کار حفاظت از دادههای کاربران را بالاتر خواهد برد. ضمنا در صورت نیاز به فرمت و نصب مجدد سیستم، اطلاعات کاربران دست نخورده باقی مانده و پس از نصب مجدد، کلیه تنظیمات شخصی و اطلاعات آنها بدون تغییر باقی خواهند ماند.
-شاخه lib: این شاخه همانطور که از نام آن پیداست، محل قرار گیری فایلهای کتابخانه برنامهها است. این کتابخانهها توسط برنامههای کاربردی و ابزارهای برنامه نویسی بکار گرفته میشوند.
-شاخه mnt: این شاخه معمولا دارای زیرشاخههایی مانند floppy و cdrom بوده و محل اتصال سنتی درایوهای فلاپی و CD-ROM میباشد. همچنین پارتیشنها دیگر دیسک سخت را نیز میتوانید در این شاخه متصل نمایید. البته اجباری به این کار وجود ندارد. مثلا در سیستمهای مبتنی بر دبیان، درایوهای فلاپی و CDROM در شاخههای floppy و cdrom که در زیر ریشه قرار دارند، متصل میشوند. اتصال و برداشتن اتصال پارتیشنها و درایوها با استفاده از دستور mount صورت میگیرد. اشتراکات شبکه را نیز میتوانید در این شاخه متصل نمایید.
-شاخه proc: این شاخه یک سیستم فایل مجازی است که برخی اطلاعات مربوط به سیستم و هسته از آن قابل دستیابی میباشد. مثلا فایل version در این شاخه حاوی اطلاعات هسته سیستم عامل مانند نسخه آن و ... میباشد.
-شاخه sbin: دستورات و برنامههای مدیریتی سیستم در این شاخه قرار میگیرند که مخصوص کاربر root است.
-شاخه tmp: محل قرارگیری برخی فایلهای موقتی برنامههای کاربردی است.
-شاخه usr: بسیاری از برنامههای کاربردی در این شاخه نصب میشوند. مثلا Xwindow در این شاخه قرار دارد. همچنین برخی دستورات و دستورات مدیریتی نیز در مسیرهای usr/bin و usr/sbin قرار میگیرند.
-شاخه var: این شاخه که معمولا در کامپیوترهای سرویس دهنده در یک پارتیشن جداگانه قرار میگیرد، مخصوص برنامههای سرویس دهندهای مانند وب و FTP و بانکهای اطلاعاتی است. مثلا فایلهای مربوط به یک وب سایت میتوانند در var/www قرار گیرند. به دلیل اینکه در برخی از حملات DOS دیسک سخت سیستم با فایلهای آشغال پر میشود، این شاخه را در یک پارتیشن جداگانه قرار میدهند که در صورت قرارگیری تحت حمله و پرشدن احتمالی دیسک سخت، کل سیستم عامل دچار وقفه نگردد و آسیب به همان قسمت محدود شود.
تمامی شاخههایی که در بالا توضیح داده شد، میتوانند در پارتیشنهای جداگانه قرار داده شوند. ولی ضرورتی ندارد.
پارتیشن swap
هنگام نصب لینوکس، پارتیشنی به نام swap میسازید. کاربرد این پارتیشن چیست؟ این پارتیشن که تحت ساختار سیستم فایل جایی متصل نمیشود، محل قرارگیری swapping file لینوکس که همان حافظه مجازی روی دیسک سخت است، میباشد. بهتر است حجم آنرا برابر یا ۲ برابر حافظه سیستم خود تعیین نمایید.
سیستم فایل هر کامپیوتر، امکان ذخیره سازی فایلها و اطلاعات را روی آن فراهم میسازد. هنگامی که از داخل برنامه واژه پرداز خود سندی را ذخیره میکنید، این سیستم فایل است که تعیین میکند سند چگونه و کجا ذخیره شود.
ابزارهای ذخیره سازی مانند فلاپی دیسکها، دیسکهای سخت، درایوهای CD-ROM، درایوهای Zip و... تا قبل از اینکه سیستمعامل سیستم فایل را روی آنها تشکیل دهد، قابل استفاده نیستند.
سیستم فایلهای گوناگونی برای سیستمعاملهای مبتنی بر یونیکس و لینوکس ارائه شدهاند که برخی از آنها عبارتند از ext2، ext3، xfs، reiserfs و غیره. این سیستم فایلها در جزئیات فنی دارای تفاوتهایی با هم هستند ولی از نظر ساختاری که ایجاد میکنند مشابه بوده و تفاوت چندانی باهم ندارند. در این مقاله ما وارد جزئیات فنی هر نوع از سیستم فایلها نشده و تنها ساختار آنها را بررسی خواهیم کرد.
سیستم فایل یا درخت؟
سیستم فایل سیستمعاملهای مبتنی بر یونیکس و لینوکس بصورت یک درخت وارونه پیاده سازی شده است. در یونیکس و لینوکس دیگر شما چیزی به نام درایوهای A، C و ... ندارید. تمام ابزارها و سیستم فایلها شاخههایی از این درخت وارونه هستند. مرکز این درخت ریشه یا root نام دارد که بالاترین سطح سیستم فایل را تشکیل میدهد. زیر ریشه، پوشههایی قرار دارند که سایر قسمتهای سیستم فایل را تشکیل میدهند که اکنون درباره آنها توضیح میدهم. تصویر ۱ سیستم فایل سیستمهای مبتنی بر یونیکس و لینوکس را نشان میدهد.
http://pnu-club.com/imported/2010/06/63.png
همانطور که میبینید سیستم فایل از تعداد زیادی پوشه تشکیل شدهاست که این پوشهها تقریبا در تمامی سیستمعاملهای مبتنی بر یونیکس و لینوکس مشترک هستند. اکنون به تشریح تک تک این شاخهها پرداخته و در میان آن توضیحات اضافه را به شما ارائه خواهم کرد.
پارتیشنها
در سیستم فایل سیستمعاملهای مبتنی بر لینوکس و یونیکس، دیسکهای سخت میتوانند پارتیشنهای متعددی داشته باشند. در این صورت هر پارتیشن دارای یک نقطه اتصال یا mount point میباشد که در آن نقطه به درخت سیستم فایل متصل میشود. مثلا میتوانید اطلاعات کاربران سیستم را در یک پارتیشن جداگانه ذخیره نموده و نقطه اتصال آنرا home تعیین کنید که محل قرارگیری اطلاعات کاربران است و به همین ترتیب.
بخشهای درخت سیستم فایل
اکنون به بررسی تک تک شاخههای سیستم فایل میپردازیم. توجه داشته باشید که دسترسی به اکثر این شاخهها فقط توسط کاربر ریشه امکان پذیر است.
-شاخه bin: در این شاخه، دستورات سیستمعامل که برای تمام کاربران قابل دستیابی هستند و برخی دستورات مدیریتی سیستم قرار میگیرند.
-شاخه boot: این شاخه که میتواند در یک پارتیشن جداگانه بوده و به پوشه boot متصل شده باشد، حاوی برنامه راهنداز بوت سیستم عامل میباشد. مانند Grub و Lilo.
-شاخه dev: محل قرارگیری نقطه دسترسیهای ابزارهای سخت افزاری است. مثلا تمام پورتها، پارتیشنها و... در اینجا دارای یک فایل هستند. برای مثال فایل dev/fd0 نشاندهنده فلاپی درایو سیستم است و به همین ترتیب. بسیاری از برنامههای کاربردی از این فایلهای دسترسی برای خواندن و نوشتن دادهها بر روی ابزار مورد نظرشان استفاده میکنند. مثلا یک برنامه کاربردی فایل dev/fd0 را باز کرده و در آن مینویسد. در حقیقت اطلاعات روی درایو فلاپی و دیسکی که در آن قرار دارد، نوشته خواهد شد.
-شاخه etc: در این شاخه فایلهای پیکربندی برنامههای سرویس دهنده و برخی فایلهای سیستمی دیگر قرار میگیرند. مثلا فایل پیکربندی سرویس دهنده وب آپاچی در سیستمهای دبیان در etc/apache/http.conf قرار دارد و به همین ترتیب.
-شاخه home: در این شاخه دایرکتوریهای خانگی کاربران سیستم و اطلاعات آنها قرار میگیرد. بهتر است این شاخه در یک پارتیشن جداگانه قرار گرفته و متصل شود. این کار حفاظت از دادههای کاربران را بالاتر خواهد برد. ضمنا در صورت نیاز به فرمت و نصب مجدد سیستم، اطلاعات کاربران دست نخورده باقی مانده و پس از نصب مجدد، کلیه تنظیمات شخصی و اطلاعات آنها بدون تغییر باقی خواهند ماند.
-شاخه lib: این شاخه همانطور که از نام آن پیداست، محل قرار گیری فایلهای کتابخانه برنامهها است. این کتابخانهها توسط برنامههای کاربردی و ابزارهای برنامه نویسی بکار گرفته میشوند.
-شاخه mnt: این شاخه معمولا دارای زیرشاخههایی مانند floppy و cdrom بوده و محل اتصال سنتی درایوهای فلاپی و CD-ROM میباشد. همچنین پارتیشنها دیگر دیسک سخت را نیز میتوانید در این شاخه متصل نمایید. البته اجباری به این کار وجود ندارد. مثلا در سیستمهای مبتنی بر دبیان، درایوهای فلاپی و CDROM در شاخههای floppy و cdrom که در زیر ریشه قرار دارند، متصل میشوند. اتصال و برداشتن اتصال پارتیشنها و درایوها با استفاده از دستور mount صورت میگیرد. اشتراکات شبکه را نیز میتوانید در این شاخه متصل نمایید.
-شاخه proc: این شاخه یک سیستم فایل مجازی است که برخی اطلاعات مربوط به سیستم و هسته از آن قابل دستیابی میباشد. مثلا فایل version در این شاخه حاوی اطلاعات هسته سیستم عامل مانند نسخه آن و ... میباشد.
-شاخه sbin: دستورات و برنامههای مدیریتی سیستم در این شاخه قرار میگیرند که مخصوص کاربر root است.
-شاخه tmp: محل قرارگیری برخی فایلهای موقتی برنامههای کاربردی است.
-شاخه usr: بسیاری از برنامههای کاربردی در این شاخه نصب میشوند. مثلا Xwindow در این شاخه قرار دارد. همچنین برخی دستورات و دستورات مدیریتی نیز در مسیرهای usr/bin و usr/sbin قرار میگیرند.
-شاخه var: این شاخه که معمولا در کامپیوترهای سرویس دهنده در یک پارتیشن جداگانه قرار میگیرد، مخصوص برنامههای سرویس دهندهای مانند وب و FTP و بانکهای اطلاعاتی است. مثلا فایلهای مربوط به یک وب سایت میتوانند در var/www قرار گیرند. به دلیل اینکه در برخی از حملات DOS دیسک سخت سیستم با فایلهای آشغال پر میشود، این شاخه را در یک پارتیشن جداگانه قرار میدهند که در صورت قرارگیری تحت حمله و پرشدن احتمالی دیسک سخت، کل سیستم عامل دچار وقفه نگردد و آسیب به همان قسمت محدود شود.
تمامی شاخههایی که در بالا توضیح داده شد، میتوانند در پارتیشنهای جداگانه قرار داده شوند. ولی ضرورتی ندارد.
پارتیشن swap
هنگام نصب لینوکس، پارتیشنی به نام swap میسازید. کاربرد این پارتیشن چیست؟ این پارتیشن که تحت ساختار سیستم فایل جایی متصل نمیشود، محل قرارگیری swapping file لینوکس که همان حافظه مجازی روی دیسک سخت است، میباشد. بهتر است حجم آنرا برابر یا ۲ برابر حافظه سیستم خود تعیین نمایید.