76.47058823529412% Complete

ساخت پارتیشن و فایل سیستم

در ابتدای مبحث، به یادآوری کمی از مطالب قبلی می پردازیم. بطور کلی برای فایل سیستم ( File System ) دو تعریف رایج و متفاوت وجود دارد.

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

در سیستم عامل لینوکس، فایل سیستم بصورت سلسله مراتبی تعریف و پیاده سازی شده است. مفهوم سلسله مراتبی بدین معناست که هر فایل و یا پوشه بصورت زیرمجموعه ای از یک پوشه دیگر تعریف خواهد شد، و این عمل تا جایی ادامه می یابد، که به پوشه ای می رسیم که تمامی فایل ها و پوشه های موجود در دیسک، زیر مجموعه آن پوشه خواهند بود. آن پوشه، پوشه « ریشه » ( root directory ) نامیده می شود، و در لینوکس با علامت «/» مشخص می شود، و همانطور که دقت کرده اید، آدرس تمامی فایل ها و پوشه ها در لینوکس با این علامت آغاز می شود که خود مشخص کننده این موضوع است که تمامی فایل ها و پوشه ها، به طریقی، زیر مجموعه این پوشه اصلی خواهند بود.

یکی از بزرگترین مزیت های فایل سیستم سلسله مراتبی، اینست که می توان بعضی مسیرها را بصورت پیشفرض و استاندارد، برای بعضی از امور از پیش تعیین شده در نظر گرفت، و برای دستیابی به آن فایل ها و پوشه ها، هیچ مشکلی در آدرس دهی نداشته باشیم. برای مثال، در اکثر سیستم عامل های لینوکس ، فایل های مربوط به بوت سیستم عامل در مسیر مخصوص خود ( ‪/‬boot ) قرار می گیرد. و یا آدرس های مشخص شده دیگر، برای امور مشخص شده دیگر.

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

نحوه نام گذاری پارتیشن ها

در نسخه های پیشین سیستم عامل لینوکس، که البته در آن زمان بیشتر هارد دیسک های موجود در بازار از نوع ATA بودند، دیسک ها و پارتیشن ها به صورت زیر نامگذاری می شدند :

  • دیسک ها بصورت hd‪[‬a‪..‬z‪]‬ نامگذاری می شدند. بعنوان مثال hda و یا hdb .
  • پارتیشن ها نیز بصورت یک عدد، پس نام دیسک مربوطه آورده می شدند. بعنوان مثال hda1 و یا hdb5 . نکته قابل توجه در این نحوه نامگذاری اینست که اعداد ۱ تا ۴ در نامگذاری پارتیشن ها، مخصوص به پارتیشن های Primary بوده و پارتیشن های Logical با اعداد ۵ تا ۱۶ مشخص می شوند. ( با این دو نوع پارتیشن در ادامه آشنا خواهیم شد )
  • رسانه های جانبی همچون سی دی و دی وی دی نیز، در نسخه های قدیمی لینوکس، بصورت آدرس های از پیش تعیین شده تعریف می شدند. بعنوان مثال مسیر ‪/‬dev‪/‬cdrom مخصوص سی دی و نیز مسیر ‪/‬dev‪/‬dvdrw مربوط به دی وی دی رایتر بود. ( این مسیرها نیز مثال هایی از مسیرهای از پیش تعیین شده در فایل سیستم سلسله مراتبی هستند )

در نسخه های اخیر لینوکس، و با توجه به استفاده بیشتر از هارد دیسک های SCSI ، هسته سیستم عامل لینوکس بنحوی تغییر کرده که علی رغم پشتیبانی از هر دو نوع هارد دیسک، با هر دو نوع بعنوان هارد دیسک SCSI رفتار کرده و شناسایی هارد دیسک ها و پارتیشن ها نیز از استاندارد هارد دیسک های SCSI پیروی می کند :

  • در این نوع نام گذاری ( که بسیار شبیه به نام گذاری دیسک های ATA است ) ، هر دیسک بصورت sd‪[‬a‪..‬z‪]‬ ، و هر پارتیشن بصورت شماره بین ۱ تا ۴ برای پارتیشن Primary ، و شماره ۵ تا ۱۶ برای پارتیشن های Logical نام گذاری می شود. بعنوان مثال sda1 و یا sdb5 .
  • همچنین رسانه های جانبی بصورت sr‪[‬0‪-‬ ‪]‬ و یا scd‪[‬0‪-‬ ‪]‬ مشخص می شوند.

تعداد پارتیشن های موجود در یک سیستم، به نوع جدول پارتیشن ( Partition Table ) سیستم بستگی دارد. در اکثر سیستم ها بصورت پیشفرض از MS‪-‬Dos Partition Table استفاده می شود. در این جدول پارتیشن، سیستم می تواند حداکثر دارای ۴ پارتیشن Primary و همچنین ۱۲ پارتیشن Logical باشد. پارتیشن های Logical در ابتدای پارتیشن Extended آدرس دهی می شوند.

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

نکته : در دوره فعلی محدودیتی برای تعداد پارتیشن های Logical نیست.

برای پارتیشن بندی دیسک، ابزاری به نام fdisk ( و نیز cfdisk ) در لینوکس موجود است. با استفاده از این ابزار تحت خط فرمان، می توان انواع عملیات را جهت پارتیشن بندی دیسک انجام داد. ساختار دستور fdisk بصورتی است که برای استفاده از آن، دسترسی ریشه ( root ) مورد نیاز است. این دستور، نام فیزیکی دیسک را بعنوان ورودی می پذیرد ( و نه نام پارتیشن ).

# fdisk /dev/sda   
  • پارامترهای قابل استفاده در محیط تعاملی گزینه توضیحات ‏m راهنمای گزینه ها ‏a ‏Bootable flag ‏d پاک کردن یک پارتیشن. چنانچه یک پارتیشن Logical را پاک کنید، شماره پارتیشن های بعدی یک واحد کم میشود تا شماره پارتیشن ها پشت سر هم باشند ‏n ساخت پارتیشن جدید ‏p ‏Partition Table موجود در حافظه ( و نه واقعی ) را نشان می دهد ‏l انواع پارتیشن های شناخته شده را لیست می کند ‏q خروج بدون ذخیره تغییرات ‏t تغییر نوع پارتیشن ‏w ذخیره تغییرات

نکته : برای استفاده از هریک از گزینه های فوق، و یا مطالعه گزینه های دیگر، می توانید به وبسایت های مربوطه مراجعه کنید.

بعنوان مثال، دستورات و خروجی زیر جهت ایجاد یک پارتیشن در دیسک بوده است :

# fdisk /dev/sda   
Command (m for help) : n‪    ↵‬
Command action 
    l    logical (5 or over)
    p    primary (1-4)
p‪    ↵‬
Partition number (1-4) : 1‪    ↵‬
First cylinder (40-1027, default 40) : ‪    ↵‬
Using default value 40
Last cylinder or +sizeM or +sizeK (40-1027, default 1027) : +400M‪    ↵‬
. . . 

‫تا اینجا با روش ایجاد یک پارتیشن آشنا شدیم. البته باید توجه داشت که پارتیشن، فقط فضای مورد استفاده را مشخص می کند، و برای استفاده از آن، پارتیشن را باید بوسیله یکی از انواع فایل سیستم پیکربندی کرد. بدون پیکربندی، پارتیشن فقط یک فضای خام ایجاد شده خواهد بود و قابلیت استفاده نخواهد داشت. در این قسمت با روش ایجاد فایل سیستم آشنا می شویم.‬ ابزار مورد استفاده جهت ایجاد فایل سیستم در لینوکس، ابزار mkfs بوده و بصورت زیر میتوان از آن استفاده کرد.

mkfs [ -t fstype ] [ fs_option ] device‪    
mkfs.fstype [ fs_option ] device‪    

در دستور فوق، پس از نام ابزار، گزینه جلوی ‪-‬t نوع فایل سیستم انتخابی را مشخص می کند. همچنین بعد از آن، میتوان از گزینه های اضافی فایل سیستم انتخابی استفاده کرد. در آخر نیز، آدرس پارتیشن مورد نظر برای پیکربندی را می آوریم.

  • تعدادی از گزینه های قابل استفاده در پیکربندی : گزینه توضیحات ‏‪-‬c پارتیشن را برای bad block ها جستجو می کند ‏‪-‬L label نام گذاری پارتیشن های ext‪-‬based ‏‪-‬n label نام گذاری پارتیشن های ms‪-‬based ‏‪-‬q اجرای دستورات کمترین خروجی را نمایش می دهد ‏‪-‬v اجرای دستورات بیشترین خروجی را نمایش می دهد (verbose) ‏‪-‬j مانند استفاده از ‪-‬t ext3 و یا mkfs‪.‬ext3 بوده و journal file ها را می سازد

پارتیشن swap : این نوع پارتیشن در سیستم ساخته می شود تا در زمانی که حافظه اصلی کاملا درگیر است، بصورت virtual memory عمل کند. اگرچه فضای این پارتیشن بر روی دیسک سخت بوده و سرعت آن نسبت به حافظه اصلی بسیار کمتر است، ولی در مواقعی که حافظه اصلی کاملا در حال استفاده است، از بروز خطا جلوگیری کرده و تا زمان آزاد سازی حافظه اصلی، بعنوان حافظه مجازی عمل می کند. این پارتیشن از الزامات سیستم عامل لینوکس نیست و صرفا برای جلوگیری از بروز خطا استفاده می شود. گفتنی است معمولا جهت استفاده از این پارتیشن، مقدار آنرا یک تا دو برابر حجم حافظه اصلی در نظر می گیرند. برای ساخت آن، پس از ایجاد پارتیشن، از دستور زیر استفاده می شود :

mkswap device‪   

نگهداری از فایل سیستم

به مرور زمان، مشکلات مختلفی ممکن است برای فایل سیستم بوجود بیاید که در نتیجه آن، فایل ها ممکن است خراب و بلا استفاده شوند. از جمله مشکلات احتمالی می توان به موارد زیر اشاره کرد :

  • پر شدن کامل یه فایل سیستم که نتیجه آن، توقف برنامه و یا کل سیستم خواهد بود.
  • خراب شدن فایل سیستم به دلیل قطع برق.
  • تمام شدن inode ها ، که در نتیجه آن، امکان ایجاد فایل جدید نخواهد بود.

‏inode ساختمان داده ای در فایل سیستم است که مشخصات یک فایل را تشریح میکند (مشخصات فایل را نگهداری می کند). در سیستم فایل، به ازای هر فایل، یک inode وجود خواهد داشت. تعداد inode ها در سیستم فایل محدود بوده، و به این معنا خواهد بود که تعداد فایل موجود در یک فایل سیستم نیز محدود خواهد بود. چنانچه تعداد فایل موجود بسیار بالا بوده و در نهایت به تعداد ممکن فایل در یک فایل سیستم برسد، و برای ایجاد یک فایل جدید ساختمان داده inode دیگر در اختیار نباشد، سیستم در ایجاد فایل جدید با خطا روبرو شده و در نهایت منجر به خراب شدن فایل سیستم خواهد شد. همانطور که پیشتر اشاره شد، با استفاده از دستور ls ‪-‬l میتوان اطلاعات مربوط به فایل (ها) را مشاهده کرد. چنانچه در استفاده از دستور ls از گزینه ‪-‬i نیز استفاده کنیم، در خروجی دستور، شماره ساختمان داده inode مرتبط با فایل (ها) نیز نمایش داده خواهند شد. مانند خروجی زیر :

$ ls -li‪   
429105 ­-rw-r--r--  1  lpi  lpi  3923 Jun 29 2010 Technotux­news
434645 drwxr-xr-x  5  lpi  lpi  4096 Mar 11 2011 temp
429129 -rw-r--r--  1  lpi  lpi  2557 Jun 29 2010 ubuntu910
566474 drwxr-xr-x  2  lpi  lpi  4096 Sep 28 2007 xdb
430125 -rw-------  2  lpi  lpi     5 Dec 22 06:19 xFarDic

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

نوع فایل ، مجوزها ، مالک فایل ، گروه مالک فایل ، اندازه فایل ، زمان دسترسی و تغییر و ویرایش ، لینک ها ، ACL ها. اطلاعات ذخیره شده در inode هر فایل، با استفاده از دستور stat قابل دستیابی و مشاهده است.

$ stat xFarDic‪    
  File: 'xFarDic'
  Size: 5           Blocks: 8        IO Block: 4096 regular file
Device: 806h/2054d Inode: 430951 
Access: (0600/-rw----------) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2011-12-26 07:10:08.000000000 +0330 
Modify: 2011-12-26 07:09:59.000000000 +0330 
Change: 2011-12-26 07:10:00.000000000 +0330

از دیگر دستورات مورد استفاده در بازبینی اطلاعات فایل سیستم، می توان دستور df را نام برد. استفاده این دستور بدون پارامتر و یا ورودی، کل فضاهای mount شده را نشان می دهد.

76.47058823529412% Complete

کامپیوترها، نرم افزارها و سیستم عامل ها کامپیوتر چیست؟ بخش‌های مختلف یک کامپیوتر نرم افزار سیستم عامل‌های مهم لینوکس و نرم افزار آزاد لینوکس: داستان یک موفقیت آزاد یا متن باز نرم افزارهای آزاد مهم توزیع های لینوکس مهم نصب یک توزیع معماری سیستم استخراج و پیکربندی تنظیمات سخت افزار روند بوت سیستم مدیریت Runlevelها و shutdown و reboot نصب لینوکس و مدیریت بسته ها طراحی ساختار دیسک نصب یک مدیر بوت مدیریت Share library ها مدیریت بسته‌های نرم افزاری در دبیان استفاده از RPM و YUM دستورات گنو و یونیکس کار با خط فرمان پردازش جریان‌های داده باکمک فیلتر ها مدیریت فایل‌ها - مقدماتی استفاده از stream‌ها, pipe‌ها و redirect ایجاد، رصد و حذف یک فرایند ویرایش اولویت اجرای فرایندها جستجوی فایل‌های متنی توسط regular expressionها ویرایش فایل با کمک vi تجهیزات، فایل سیستم های لینوکسی و فایل سیستم سلسله مراتبی

ساخت پارتیشن و فایل سیستم

نگهداری از یکپارچگی فایل سیستم کنترل mount و unmount شدن فایل سیستم سهمیه بندی فضای دیسک یا quota مدیریت مجوزهاو مالکیت‌ فایل ساخت و تغییر hard و symbolic link جستجوی فایل سیستم و محل درست فایل‌ها راهنمای استفاده از Docpad نصب و راه اندازی اولیه نحوه تهیه مستندات