فهرست مندرجات
فایل 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
بررسی نشود.