ابزار کاربر

ابزار سایت


tutorials:file_system:what_is_the_linux_fstab_file_and_how_does_it_work

فایل fstab در لینوکس چیست؟

fstab مخفف File System Table محلی برای اطلاعات ثابت سیستم است. نگاشت های پارتیشن ها به دایرکتوری های مورد نظر به همراه گزینه های آنها در این فایل ذخیره میشود.
برای راه اندازی لینوکس حداقل سه دایرکتوری root, دایرکتوری boot و حافظه swap لازم است.
در این فایل پس از راه اندازی سیستم حداقل دایرکتوری هایی که هستند این سه دایرکتوری گفته شده و به همراه یک دایرکتوری منطقی به نام proc وجود دارند. پیشنهاد میکنم آموزش معرفی سلسله مراتب فایل سیستم را مطالعه کنید
دستورهایی که با این فایل کار میکنند مانند دستور Mount ) Mount کردن سیستم فایل یا دیسک )است که برای اتصال یک پارتیشن یا دایرکتوری به دایرکتوری دیگر بکار میرود.
فایل fstab در دایرکتوری etc/ قرار دارد و برای مشاهده آن همه میتوانند از cat استفاده کنید.

cat /etc/fstab

ولی فقط کاربر root حق ویرایش آن را دارد و میتواند از vi یا Vim استفاده کند.
جای دیگری که از این فایل استفاده میشود در راه اندازی NFS یا Network File System است. در هر خط این فایل یک سیستم فایل (پارتیشن) بصورت مجزا نوشته میشوند.
فیلدها با چندین Space و یا tab از هم جدا میشوند اطلاعات درون این فایل ثابت یا Static است و هنگام boot شدن سیستم این فایل خوانده میشود و پارتیشن های نوشته شده در این فایل load خواهند شد پس یکی از فایلهای که هنگام boot شدن توسط سیستم خوانده میشود همین فایل است.
هنگامیکه سیستم را با shutdown راه اندازی مجدد میکنید و طوری آنرا تنظیم کردید که پس از boot شدن مجدد fsck سیستم فایل را بررسی کند این دستور این فایل را میخواند. فرمت کلی هر خط از این فایل بصورت ۶ فیلد زیر است:

FS_REMOTE_FS MOUNT_POINT FS_TYPE MOUNT_OPTIONS DUMP_OPTIONS FSCK_OPTIONS

فیلد اول

این فیلد پارتیشن یا دایرکتوری را که قصد MOUNT کردن آن را دارید را تعیین میکند. این پارتیشن یا دایرکتوری یا بصورت محلی هستند و یا بصورت راه دور و از یک سیستم دیگر که این حالت برای پیاده سازی nfs و mount کردن یک سیتم فایل درون شبکه استفاده میشود در هنگام استفاده از این حالت باید آدرس ip و یا نام سروری که سیستم فایل را اشتراکی کرده است را بیاورید.مانند مثال زیر:

nfssrv.linuxfedora.ir:/tmp/sharefiles

حالت بالا برای nfs استفاده میشود.

فیلد دوم

mount point یعنی نقطه اتصال و تعیین می کند که پارتیشن یا دایرکتوری را که در فیلد اول مشخص کردید به کدام دایرکتوری باید متصل شود. بعد از متصل یا mount کردن دایرکتوری فیلد اول روی دایرکتوری فیلد دوم دایرکتوری دوم همانند دایرکتوری اول و با همان محتوا خواهد بود معمولا برای نقطه اتصال یک دایرکتوری در زیر دایرکتوری mnt/ می سازند و فیلد اول را به آن متصل یا mount میکنند.

فیلد سوم

این فیلد نوع سیستم فایل برای نقطه اتصال را نشان میدهد. انواع ext2,ext3 و ext4 برای توزیع های لینوکسی نوع vfat برای ویندوزی ها نوع ufs برای سیستم عامل های BSD و auto برای فلاپی و CD/DVD ها و SWAP برای حافظه بکار میرود.البته استفاده از فرمت vfat به منزله این نیست که نمیتوانیم از ویندوزهای xp به بعد که از ntfs استفاده میکنند را به سیستم mount کنیم

فیلد چهارم

این فیلد شامل گزینه ها یا option های هنگام mount شدن بکار می روند. گزینه هایی مانند auto و یا ro/rw که روی دایرکتوری نقطه اتصال بکار میروند چند گزینه مهم در زیر گفته شده است گزینه ها بدون فاصله و با کاما(,) از هم جدا میشوند.

noauto و auto

گزینه پیش فرض auto است به این معنی است که سیستم فایل یا پارتیشن باید هنگام boot شدن بصورت خودکار mount شوند در غیر اینصورت شما باید اینکار را با کاربر root و بعد وارد شدن به سیستم و بصورت دستی با دستور mount انجام دهید. همانطور که گفته شد این حالت پیش فرض است و اگر میخواهید پارتیشن بصورت خودکار mount نشود باید از گزینه noauto استفاده کنید.

nouser و user

گزینه ای کاربردی و مهم user اجازه میدهد که کاربران معمولی هم بتوانند mount کنند. ولی اگر میخواهید که کاربران معمولی نتوانند این کار را انجام دهند از nouser استفاده کنید. nouser بصورت پیش فرض است. در خط زیر گزینه پیش فرض nouser است ولی اگر میخواهید کاربران معمولی هم پارتیشن را به یک دایرکتوری دیگر mount کنند باید user را بعد از default اضافه کنید. برای جلوگیری از صدمه زدن به سیستم توسط کاربران معمولی و تازه کار گزینه nouser بصورت پیش فرض استفاده شود.

/dev/hdb1 /home ext2 defaults 1 2

exec و noexec

گزینه exec باعث میشود تا بتوان فایل های باینری را اجرا کرد. noexec برعکس exec است و از اجرای فایل های باینری جلوگیری میکند. این گزینه زمانی بکار می آید که نمی خواهید فایل های باینری که در پارتیشن دارید در نقطه اتصال اجرا شوند پیش فرض exec است. فرض کنید یک دایرکتوری را از یک سیستم عامل مانند freebsd در شبکه با nfs اشتراکی میکنید و این دایرکتوری شامل فایلهای معمولی و باینری است و شما نمیخواهید که فایل های باینری اجرا شوند پس از گزینه noexec استفاده میکنید.

ro/rw

گزینه ro یعنی read-only و فقط کاربران حق دیدن فایل ها و محتوا را دارند ولی نمی تواند دایرکتوری یا فایل جدید ایجاد یا در یک دایرکتوری nfs چیزی کپی کنند. اما rw یعنی read-write که هم اجازه خواندن و هم اجازه نوشتن را میدهد که به این معنی است میتوانید فایل و دایرکتوری هم ایجاد کنید. حالت پیش فرض rw است.

async و sysnc

این دو گزینه به ورودی و خروجی اشاره میکنند گزینه sync مخفف synchronously است و اشاره به همگام سازی I/o دارد. بطور مثال با فلاپی ها بکار میرود و مفهوم آن این است که وقتی شما یک فایل را با دستور cp روی فلاپی کپی کنید. تغییرات بصورت همزمان با اجرای دستور روی فلاپی بصورت فیزیکی نوشته میشوند. در نقطه مقابل آن گزینه async که مخفف asynchronously است.
وقتی async را استفاده میکنید تغییرات مدتی پس از اجرای دستور cp روی فلاپی بصورت فیزیکی نوشته میشوند. البته این حالت بد نیست و برخی مواقع مفید هم هست ولی شاید باعث بروز مشکلاتی هم بشود اگر شما بدون unmounting کردن فلاپی آن را بیرون بکشید چون کپی ها مدتی پس از اجرا شدن دستور روی فلاپی نوشته میشوند ممکن است هنوز کپی نشده باشند.
پس بطور خلاصه برای استفاده از async میتوان اینطور گفت که پس از اجرا شدن دستور ابتدا آن را unmount کنید.async بصورت پیش فرض است. در گزینه های بالا گفتیم برخی ها بصورت پیش فرض هستند گزینه دیگری به نام default وجود دارد که پیش فرض هایی مانند:auto,rw,exec,async را بر می گیرد.

فیلدهای پنجم و ششم

dump یک سرویس پشتیبان گیری و fsck سرویسی برای بررسی کردن سیستم فایل است. به جای این دو فیلد اعدادی بکار میروند که معنی خودشان را دارند.فیلد 5 تعیین کننده اجرای dump و گرفتن پشتیبان از سیستم فایل است در این فیلد 0 یعنی عدم dump و عدد 1 یعنی اجرا dump فیلد ششم در ارتباط با برنامه fsck است عدد 0 یعنی سیستم فایل توسط fsck بررسی نشود.

tutorials/file_system/what_is_the_linux_fstab_file_and_how_does_it_work.txt · آخرین ویرایش: 2018/12/27 16:36 توسط phoenix

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki