mount
فهرست
مقدمه
دستور “mount” در لینوکس برای نصب فایل سیستم ها استفاده می شود و آنها را برای سیستم قابل دسترسی می کند. این دستور به شما امکان دسترسی به فایلها و دایرکتوریهای موجود در دستگاههای خارجی، فایلهای اشتراک گذاری شده شبکه و سایر دستگاههای ذخیرهسازی را می دهد بطوریکه گویی در فایل سیستم لوکال قرار دارند.
ساختار دستور
ساختار دستور اصلی دستور “mount” به شرح زیر است:
$ mount device dir [-t type] [-o options]
device
: فایل سیستم یا دستگاهی است که می خواهید نصب کنید.dir
: دایرکتوری ای که فایل سیستم در آن نصب خواهد شد.[-t type]
: ورودی اختیاری برای تعیین نوع فایل سیستم.[-o options]
: ورودی اختیاری برای سفارشی کردن فرآیند نصب که شامل گزینههای مختلفی است.
گزینه ها
دستور “mount” در لینوکس دارای تعداد زیادی گزینه است که می توان از آنها برای سفارشی کردن فرآیند نصب استفاده کرد. در اینجا یک نمای کلی از رایج ترین گزینه های مورد استفاده آورده شده است:
-a
,--all
همه سیستم های فایل (از انواع داده شده) ذکر شده در /etc/fstab (fstab) را نصب میکند به جز آنهایی که حاوی کلمه کلیدی noauto هستند. این فایل سیستم ها به ترتیب خود در fstab نصب می شوند.
-t
,--type
vfstype
نوع فایل سیستم را مشخص میکند. به عنوان مثال -t ext4
برخی از انواع فایل سیستم ها عبارتند از minix, msdos, ext, ext2, ext3, ext4, exfat, xfs, fat, ntfs, nfs, btrfs, sysfs, proc.
فایل سیستم های قابل پشتیبانی بسته به kernel ممکن است متفاوت باشد.
برای مشاهده لیست فایل سیستم ها به آدرس های زیر را ببینید:
/proc/filesystems
/lib/modules/$(uname -r)/kernel/fs
اگر نوع مشخص نشود ویا از auto استفاده شود دستور mount سعی میکند نوع فایل سیستم را با توجه به superblock و لیست /etc/filesystems و اگر موجود نباشد از /proc/filesystems پیدا کند. در این صورت میتوان استثنا را نیز بوسیله لیبل nodev مشخص کرد. به عنوان مثال:
$ sudo mount -a -t nomsdos,smbfs
همه فایل سیستم ها (-a) به جز msdos و smbfs را نصب میکند.
-B
,--bind
یک فایل یا دایرکتوری را در جای دیگری نصب میکند به طوری که محتویات آن باشد در هر دو مکان در دسترس باشد. مثال:
$ sudo mount --bind olddir newdir
بعد از اجرای این دستور محتوای مورد نظر در هر دو آدرس در دسترس خواهد بود.
-R
,--rbind
تفاوت این سوییچ با --bind
در این است که این سوییچ یک کپی بازگشتی (recursive) از محل نصب اصلی ایجاد می کند که تغییرات ایجاد شده در نسخه اصلی را منعکس می کند. مثال:
$ sudo mount --rbind olddir newdir
با این دستور محل جدید یعنی newdir از محل اصلی کپی میگیرد و تمام تغییراتی که به olddir اعمال شوند در محل جدید نیز اعمال میشود و بالعکس.
--move
یک فایل یا دایرکتوری نصب شده را به مکان دیگری منتقل میکند. مثال:
$ sudo mount --move olddir newdir
این گزینه باعث می شود که محتوایی که قبلا در محل olddir ظاهر می شد اکنون در newdir قابل دسترسی باشد. با این کار محل فیزیکی فایل ها تغییر نمیکند. توجه داشته باشید که olddir باید یک محل از پیش نصب شده باشد و همچنین توجه داشته باشید که جابجایی یک directory در subdirectory آن مشترک نامعتبر است.
-L
,--label
label
این گزینه برای نصب فایل سیستم با تعیین برچسب (label) آن به جای نام دستگاه (که در صورت تعویض دستگاه ذخیرهسازی یا تغییر محل آن در سیستم میتواند تغییر کند) استفاده می شود.
$ sudo mount -L mylabel newdir
با این دستور فایل سیستم با برچسب mylabel در newdir نصب می شود. اگر فایل سیستم قبلا نصب شده باشد، این دستور با شکست مواجه می شود.
-n
,--no-mtab
این گزینه به سیستم میگوید که فایل /etc/mtab را بهروزرسانی نکند. این فایل همه فایل سیستمهای نصب شده را فهرست میکند. به طور پیش فرض، هنگامی که یک فایل سیستم نصب می شود، اطلاعات آن در /etc/mtab نوشته می شود. با این حال با استفاده از گزینه -n می توانید از تغییر فایل /etc/mtab توسط دستور mount جلوگیری کنید.
-r
,--read-only
فایل سیستم را بصورت (read-only) نصب میکند. مشابه گزینه -o ro که در قسمت -o در ادامه توضیح داده خواهد شد.
-w
,--rw
,--read-write
فایل سیستم را برای خواندن و نوشتن (read-write) نصب میکند. این گزینه بصورت پیش فرض در کرنل فعال است. مشابه گزینه -o rw که در قسمت -o در ادامه توضیح داده خواهد شد.
توجه داشته باشید که استفاده از این گزینه دستور mount را مجبور میکند به هیچ وجه روش read-only را بروی دستگاههای write-protected امتحان کند.
اگر دستور mount قبلا فراخوانی شده با روش read-write با شکست مواجه شود پیش فرض به read-only تغییر میکند
-U
,--uuid uuid
این گزینه برای نصب فایل سیستم با UUID آن به جای نام دستگاه استفاده می شود.
-v
,--verbose
حالت پرحرف (verbose). این گزینه خروجی اضافی در مورد فرآیند نصب ارائه می دهد.
-o
,--options
opts
این گزینه خود برای تنظیم گزینه های مختلف نصب استفاده می شود که بر روند نصب تأثیر می گذارند. ورودی opts یک لیست جدا شده با ویرگول است. مثال:
$ sudo mount -o noatime,nodev,nosuid
برخی گزینه های پرکاربرد قابل استفاده برای این سوییچ (مستقل از نوع فایل سیستم):
- sync تمام ورودی/خروجی ها به فایل سیستم را بصورت همزمان انجام میدهد. این گزینه میتواند باعث کوتاه شدن عمر وسیله هایی مثل حافظه های فلش شود که تعداد محدود ی سیکل نوشتن دارند.
- async تمام ورودی/خروجی ها به فایل سیستم را بصورت ناهمگام انجام میدهد.
- atime زمان دسترسی (atime) در inode (index node) توسط کرنل کنترل شود.
- noatime زمان دسترسی با خواندن فایل بروزرسانی نشود. این گزینه میتواند باعث تسریع پروسه خواندن شود.
- relatime زمان دسترسی را نسبت به زمان اصلاح (mtime) یا تغییر فایل (ctime) و دیرکتوری بروزرسانی میکند.
- norelatime مشخصا اعلام میکند که از گزینه realtime استفاده نشود.
- strictatime اجازه میدهد که صریحا بروزرسانی کامل atime درخواست شود. این گزینه پیش فرض کرنل را تغییر میدهد. پیش فرض ها در /proc/mounts قرار دارند.
- nostrictatime از پیش فرض کرنل برای بروزرسانی atime استفاده شود.
- lazytime زمان های فایل را (atime, mtime, ctime) فقط در inode حافظه بروزرسانی میکند.
- nolazytime مشخصا اعلام میکند که از گزینه lazytime استفاده نشود.
- diratime زمان دسترسی دیرکتوری را بروزرسانی میکند. این گزینه بصورت پیش فرض عموما فعال است. اگر noatime استفاده شود این گزینه نادیده گرفته میشود.
- nodiratime زمان دسترسی دیرکتوری را بروزرسانی نمیکند. گزینه noatime این گزینه را هم در بر دارد.
- auto و noauto مشخص میکنند که فایل سیستم با بوت شدن سیستم بصورت خودکار نصب شود یا خیر.
- dev مشخص میکند که فایل سیستم باید اجازه ایجاد فایل های دستگاه (فایل های خاصی هستند که برای تعامل با دستگاه های سخت افزاری یا سایر اجزای سیستم سطح پایین استفاده می شوند) را بدهد.
- nodev این گزینه در شرایطی کاربردی است که میخواهید توانایی تعامل با دستگاههای سیستم را محدود کنید، یا زمانی که میخواهید از ایجاد تصادفی فایلهای دستگاه که میتواند باعث مشکلات امنیتی یا پایداری شود، جلوگیری کنید.
- ro فایل سیستم را فقط خواندنی نصب میکند.
- rw فایل سیستم را برای خواندن و نوشتن نصب میکند.
- exec و noexec مشخص میکند که آیا باید اجرای فایل های باینری و اسکریپت های موجود در فایل سیستم را مجاز یا غیرمجاز کند. exec پیشفرض اکثر فایل سیستم ها است و به کاربران اجازه میدهد تا برنامهها و اسکریپتهای واقع در فایل سیستم را اجرا کنند.
- suid و nosuid برای تعیین اینکه آیا یک فایل سیستم باید اجرای فایل های باینری را با مجموعه بیت set-user-ID (SUID) مجاز یا غیرمجاز کند. بیت SUID یک ویژگی فایل سیستم است که به یک فایل باینری اجازه می دهد تا با امتیازات مالک فایل به جای امتیازات کاربری که فایل را اجرا می کند، اجرا شود. این می تواند یک ویژگی مفید برای sys admin هایی باشد که نیاز به دادن اختیارات بالا به کاربران خاص برای کارهای خاص دارند.
- nofail مشخص میکند که اگر دستگاه در حال نصب وجود نداشته باشد، باید از محل نصب صرفنظر شود و گزارش اخطار داده نشود. این گزینه معمولا با دستگاههای ذخیرهسازی قابل جابجایی، مانند درایوهای USB یا هارد دیسکهای خارجی، که ممکن است همیشه به سیستم متصل نباشند، استفاده میشود.
علاوه بر این گزینه ها، گزینه های بسیار دیگری نیز برای هر نوع فایل سیستم مشخص وجود دارند.
برخی از این گزینه ها میتوانند بصورت پیش فرض غیرفعال یا فعال شوند. برای مشاهده تنظیمات موجود میتوانید /proc/mounts را چک کنید.
خروجی
دستور mount یکی از مقادیر زیر را برمی گرداند که نشان دهنده وضعیت تکمیل فرآیند است:
خروجی | توضیح |
---|---|
0 | موفقیت |
1 | فراخوانی نادرست دستور یا مجوزهای ناکافی |
2 | خطای سیستم |
4 | اشکال نصب داخلی |
8 | عملیات توسط کاربر قطع شده است |
16 | مشکلات مربوط به نوشتن یا قفل کردن فایل /etc/mtab |
32 | شکست در نصب |
64 | حداقل یک عملیات نصب موفقیت آمیز بود، اما نه همه |
مثال
نصب فایل سیستم
برای نصب فایل سیستم، باید نام دستگاه و دایرکتوری را که میخواهید آن را نصب کنید، بدانید. به عنوان مثال، برای نصب یک فایل سیستم واقع در دستگاه “/dev/sdb1” در پوشه “/mnt/sdb1”، از دستور زیر استفاده می کنید:
$ sudo mount /dev/sdb1 /mnt/sdb1
نصب فایل سیستم با گزینه ها
برای نصب فایل سیستم با گزینه ها، می توانید از گزینه “-o” و سپس گزینه های مورد نظر استفاده کنید. به عنوان مثال، برای نصب فایل سیستم “/dev/sdb1” در پوشه “/mnt/sdb1” در حالت خواندن و نوشتن، از دستور زیر استفاده می کنید:
$ sudo mount -o rw /dev/sdb1 /mnt/sdb1
نصب فایل سیستم با نوع
اگر نوع فایل سیستم به طور خودکار شناسایی نشد، می توانید از گزینه “-t” برای تعیین نوع فایل سیستم استفاده کنید. به عنوان مثال، برای نصب یک فایل سیستم NTFS واقع در دستگاه “/dev/sdb1” در پوشه “/mnt/sdb1”، از دستور زیر استفاده می کنید:
$ sudo mount -t ntfs /dev/sdb1 /mnt/sdb1
نصب فایل سیستم شبکه
برای نصب فایل سیستم شبکه، مانند اشتراکگذاری NFS یا SMB، میتوانید از گزینه «-t» برای تعیین نوع فایل سیستم و به دنبال آن دستگاه و دایرکتوری استفاده کنید. به عنوان مثال، برای نصب یک اشتراک NFS واقع در “192.168.1.100:/share” در پوشه “/mnt/nfs”، باید از دستور زیر استفاده کنید:
$ sudo mount -t nfs 192.168.1.100:/share /mnt/nfs