mount - سوار کردن پارتیشن

mount کردن یعنی سوار کردن یک پارتیشن، یعنی یک دایرکتوری در محل دلخواه‌مون رو به عنوان درگاهی که از طریق اون می‌تونیم به محتویات پارتیشن دسترسی پیدا کنیم انتخاب می‌کنیم. به اون دایرکتوری دلخواه mount point می‌گن. معمولا mount point رو داخل پوشه media/ یا mnt/ تنظیم می‌کنن.

معمولا دیوایس‌های موقت مثل مموری، سی‌دی رام، فلش مموری و... رو داخل پوشه mnt/ موینت می‌کنن.

برای موینت کردن یک پارتیشن یا هر واحد حافظه، سی‌دی رام، فلاپی و... احتیاج به device name داریم که در پوشه dev/ قرار دارد. برای اطلاعات بیشتر در این مورد به دستور fdisk مراجعه کنید.

شکل کلی دستور mount:

# mount [options] [device] [dir]

مثلا برای موینت کردن یک پارتیشن با دیوایس آدرس dev/sda7/ در محل media/TEST/ دستور رو به شکل زیر می‌نویسیم (توضیحات آپشن‌ها و غیره دستور زیر کامل در ادامه اومده):

# mount /dev/sda7 -t ext4 -o defaults /media/TEST

و برای unmount کردنش دستور رو به شکل زیر بزنین:

umount /dev/sda7

یا با استفاده از موینت پوینتش unmountش کنین:

umount /media/TEST

مشاهده پارتیشن‌های موینت شده

اگر دستور mount رو به تنهایی به کار ببریم تمام موینت شده‌ها رو بهمون نشون میده:

$ mount
/dev/sdc2 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/alieblice/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=alieblice)
/dev/sda1 on /media/1-TB-2 type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sda2 on /media/New Volume type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdb5 on /media/70E8BF68E8BF2B6C type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/loop0 on /mnt type iso9660 (rw)
tmpfs on /mnt type tmpfs (rw,size=1500m)

با دستور df هم می‌تونیم ببینیم چه چیزهایی موینت شدن.

همچنین در فایل etc/mtab/  و proc/mounts/ هم پارتیشن‌های موینت شده نوشته می‌شن فایل etc/mtab/ فایل مطمئنی برای دیدن پارتیشن‌های موینت شده نیست چون با آپشن n-می‌تونیم به دستور mount بگیم که چیزی در mtab ننویسه.

موینت کردن یک CD-ROM

# mount -t iso9660 -o ro /dev/cdrom /mnt

موینت کردن Floppy Disk

# mount /dev/fd0 /mnt

آپشن‌ها

آپشن‌های دستور mount به دو صورت هست:

۱. آپشن‌هایی که مربوط به خود دستور mount می‌شوند.

a-: یعنی تمام پارتیشن‌هایی که داخل پوشه etc/fstab/ تنظیم شدند رو موینت کند. در مورد fstab در آخر کامل توضیح داده شده.

# mount -a

n-: با این آپشن داخل etc/mtab چیزی نمی‌نویسه. فایل mtab فایلی است که لیست تمام پارتیشن‌های موینت شده در اون نوشته می‌شود. این آپشن برای زمانی مفید هست که پوشه etc/ به صورت read only باشد.

r-: پارتیشن رو به صورت read only موینت می‌کند.

w-: به‌صورت read/write پارتیشن رو موینت می‌کند. پیش‌فرض خود دستور هم همین کار رو می‌کند.

L LABEL-: پارتیشنی که دارای LABEL هست رو موینت می‌کند.

U UUID-: پارتیشنی که دارای UUID هست رو موینت می‌کند.

uuid رو می‌تونین از طریق دستور blkid بدست بیارین.

mount -U 806024e0-4938-4536-bf9d-b0db5433442b /mnt

t FSTYE-: پارتیشن با نوع FSTYPE رو موینت می‌کند (مثلا ext ،reiserfs ،nfs ،iso9660). برای تعیین چندین فایل‌سیستم اونا رو با , از هم جدا کنین. اگر همراه با آپشن a-استفاده شود تمام اون پارتیشن‌هایی که از نوع FSTYPE هستن رو موینت می‌کند. اگر همراه با کلمه no نوع پارتیشن رو بیارین معنی عکس می‌دهد. مثلا در دستور زیر تمام پارتیشن‌ها، به غیر از پارتیشن‌های reiserfs و ext4 رو موینت می‌کند.  برای اولیش no بذارین کفایت می‌کنه.

برای دیدن لیست کامل فرمت‌هایی که پشتیبانی می‌کند به صفحه man رجوع کنید.

 # mount -a -t noext4,reiserfs

به کمک t-همچنین می‌تونیم تمام پارتیشن‌های نوع خاصی که موینت شده‌اند رو هم ببینیم.

$ mount -l -t ext4
/dev/sda3 on / type ext4 (rw,errors=remount-ro)

O OPTION-:  به همراه a-استفاده می‌شود. و پارتیشن‌هایی که دارای آپشن OPTION در فایل fstab هستن رو موینت می‌کند. در مورد فایل fstab در آخر کامل توضیح می‌دیم.

مثلا در زیر تمام پارتیشن‌های ext4 که دارای آپشن users هستن موینت می‌شن:

مثل آپشن t-می‌تونیم از no  هم استفاده کنیم.

# mount -a -t ext4 -O users

B-: به وسیله این آپشن می‌تونین یک پارتیشن رو در چندین مکان موینت کنین و از هرکدوم که خواستین یهش دسترسی داشته باشین (پارتیشن قبلا باید یک بار موینت شده باشد). شکل استفاده به شکل زیر است:

# mount -B /OLD-Dir /New-Dir

در بالا OLD-Dir آدرس موینت پوینت قبلی و New-Dir آدرس موینت پوینت جدید هست. بعد از دستور بالا از هردو موینت پوینت (OLD-Dir و New-Dir ) می‌تونین به محتویات پارتیشن دسترسی داشته باشین.

M-: به وسیله این آپشن می‌تونیم محل موینت پوینت رو تغییر بدیم مثلا در زیر موینت پونت رو از mnt/  بهmedia/new/ تغییر می‌دیم:

mount -vM /mnt /media/NEW
/mnt on /media/NEW type none (rw)

v-: اگر مثل بالا از v-استفاده کنیم اطلاعات بیشتری در مورد کاری که دارد انجام میده به ما میده.

۲. آپشن‌هایی که مربوط به چگونگی موینت کردن پارتیشن می‌شوند که بعد از آپشن o-نوشته می‌شوند و یا در فایل fstab تنظیم می‌شوند.
نکته: بعضی از اپشن ها خاص یک نوع فایل سیستم خاص هستن مثلا اپشن هایی که فقط برای فایل سیستم NTFS یا ext4 هستن .

auto: اجازه میده تا به وسیله آپشن a-موینت شود. عکسش noautoاست.

exec: قابلیت اجرایی (executable) رو به فایل‌های قابل اجرای روی پارتیشن میده. عکسش noexec.

nosuid: تاثیر suid و sgid رو می‌گیره. عکسش suid.

nouser: موینت کردن پارتیشن رو فقط به کاربر root محدود می‌کند. عکسش user. وقتی از user استفاده می‌کنیم فقط کاربری که پارتیشن رو موینت کرده و کاربر روت می‌تونن پارتیشن رو unmount کنن و کاربری که پارتیشن رو موینت کرده اسمش در etc/mtab/ نوشته می‌شود برای همین فقط اون می‌تونه unmount کنه.

users: به همه کاربران اجازه موینت و unmount کردن رو میده.

ro: مثل آپشن r-

rw: مثل آپشن w-

remount: بدون این که پارتیشن رو unmount کنیم روش تغییرات می‌تونیم ایجاد کنیم. مثلا در زیر بدون این که پارتیشن رو unmount کنیم به‌صورت فقط‌خواندنی درش میاریم:

# mount -o remount,ro /mnt

نکته: همیشه لازم نیست که device address رو بنویسم. می‌تونیم از آدرس mount point به جای دیوایس آدرس استفاده کنیم.

loop: اگر ایمیجی از یک سی‌دی یا دی‌وی‌دی دارین که می‌خواین مثل یک درایو موینتش کنین از این آپشن استفاده کنین مثلا:

اگر لازم به تعیین نوع فایل سیستم بودین ممکنه ایمیج‌تون از فایل سیستم iso9660 یا udf بهره ببره یا فایل سیستم دیگری. ولی udf و iso9660 از همه معروف‌ترن.

# mount -o loop /PATH-TO-MY.iso /mnt

defaults: معمولا به‌صورت پیش‌فرض لازم هست که فقط از defaults استفاده کنیم که معادل: async،nouser،auto،exec،dev،suid،rwاست.

نکته: تعداد آپشن‌ها بسیار بیشتر از آپشن‌هایی که در بالا ذکر شد هستن بعضی از آپشن‌ها فقط مختص یک نوع فایل‌سیستم خاص هستن. در این‌جا سعی شد پرمصرف‌ترین‌هاشون ذکر شود.

موینت کردن قسمتی از فضای رم

مثلا در زیر ۱۵۰۰ مگابایت از فضای رم رو در mnt/ موینت می‌کنیم:

# mount -t tmpfs -o size=1500m tmpfs /mnt

بجای tmpfs از ramfs هم می‌تونیم استفاده کنیم ولی این دو یک‌سری تفاوت‌هایی دارن. برای اطلاعات بیشتر به لینک زیر رجوع کنین:

http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/

اگر قسمتی از رم‌تون رو موینت کردین و از فضای اون استفاده کردین در دستور free چیزی نشون داده نمی‌شه.

موینت کردن NFS

برای موینت کردن فایل های به اشتراک گذاشته شده توسط سرویس NFS به این شکل عمل کنین :

aliabry@lp:~$ sudo mount 172.16.134.163:/home/aliali/Videos/share /mnt

در دستور بالا :

172.16.134.163 : ادرس NFS server که فایل رو به اشتراک گذاشته

/home/aliali/Videos/share : فایلی که در NFS server به اشتراک گذاشته شده .

mnt/ : محلی که میخایم موینت شود .

فایل etc/mtab , /proc/mounts/

در این دو فایل اطلاعاتی مثل پارتیشن‌های موینت شده به همراه  mount pointها و آپشن‌های مورد استفاده و غیره ثبت می‌شن که همیشه هم به‌روز نیستن. مثلا موقعی که از آپشن n-استفاده کنیم دستور mount چیزی در mtab نمی‌نویسه.

اگر خواستین می‌تونین فایل etc/mtab/ رو پاک کنین و یک لینک ازش به فایل proc/mounts درست کنین. طبق گفته صفحه‌ی man دستور mount این کار برای مواقعی خوب هست که سیستم شما تعداد زیادی پارتیشن mount شده دارد، برای این‌که سرعت جستجو و نوشتن بالا بره بهتره که فایل mtab رو به mounts که در proc هست لینک کنیم.

فایل etc/fstab/

از این فایل برای قرار دادن اطلاعات ثابت برای فایل سیستم‌ها استفاده می‌شود. همچنین اگر فایل سیستمی در اون تنظیم شود در موقع بوت اون فایل سیستم به‌صورت خودکار موینت می‌شود.

این فایل از ۶  قسمت تشکیل شده:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

file system: در این قسمت شما آدرس دیوایس آدرس یا uuid یا اسم lable  پارتیشن‌تون رو قرار می‌دین. بهتر هست که همیشه از uuid استفاده کنین چون دیوایس آدرس در هنگام تغییر در پارتیشن‌ها تغییر می‌کند و lable هم به راحتی ممکنه توسط هر کاربری تغییر کند. ولی uuid تا زمانی که پارتیشن رو از نو فرمت نکنین ثابت هست.

mount point: محلی که می‌خواین پارتیشن موینت شود.

type: نوع پارتیشن.

options: در این قسمت آپشن‌هایی که بعد آپشن o-می‌ذاشتیم رو می‌تونیم بذاریم.

dump: برای backup گرفتن هست که امروزه دیگه خیلی ازش استفاده نمی‌شه.

pass: این قسمت برای fsck هست (برای وقتی که از آپشن a-در دستور fsck استفاده می‌کنیم) که سه عدد ۲، ۱ و ۰ رو می‌تونیم بهش اختصاص بدیم. عدد یک باید برای فایل سیستم روت‌مون تنظیم بشه که میگه اول این پارتیشن باید چک بشه. عدد دو میگه که این پارتیشن باید بعد از اونایی که عدد یک دارن چک بشه و عدد صفر میگه که چک نشه.

 یک نمونه فایل fstab:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

/dev/sda1    /            ext3       defaults        1 1

UUID=3631a288-673e-40f5-9e96-6539fec468e9          /usr         reiserfs   defaults        0 0

LABEL=/home  /home        reiserfs   defaults        0 0

/dev/sdb5    /windows     vfat       uid=500,umask=0 0 0

/dev/cdrom   /media/cdrom iso9660    users,noauto    0 0

/dev/sdb1    /media/usb   auto       users,noauto    0 0

server:/home /other/home  nfs        users,exec      0 0

//winsrv/shr /other/win   cifs       users,credentials=/etc/creds 0 0

UUID=4ad9c51e-baaf-4734-9e98-833f5bbd47f5 none            swap    sw              0       0

نکته: برای پارتیشن swap موینت پوینت رو none قرار بدین و در قسمت آپشن sw یا swap قرار بدین.

اگر پارتیشنی رو در fstab تنظیم کردین وبعد خواستیم موینتش کنین فقط لازم هست که دستور رو به شکل زیر بزنین:

# mount /dev/sde5

چند نکته

برای موینت کردن پارتیشن‌های ntfs از ntfs-3g هم میشه استفاده کرد. برای اطلاعات بیشتر به صفحه man این دستور مراجعه کنین.

http://linux.die.net/man/8/ntfs-3g

اگر در مکانی که هم‌اکنون پارتیشن دیگری موینت شده باشد پارتیشن دیگری رو موینت کنیم محتویات پارتیشن اول تا زمانی که پارتیشن دوم unmount نشود قابل دسترسی نیست و همچنین اگر پارتیشنی رو در مکانی که از قبل اطلاعاتی وجود دارد موینت کنیم دسترسی به اون اطلاعات تا زمانی که پارتیشن unmount نشود قابل دسترسی نیست.

از طریق آدرس mount point هم می‌تونین پارتیشن رو موینت کنین که البته باید اون پارتیشن در فایل fstab تنظیم شده باشه.

از نرم افزار autofs می‌تونین برای unmount کردن پارتیشن‌ها در صورتی که برای مدت زمان معینی مورد استفاده قرار نگرفتن استفاده کنین. این نرم افزار در سیستم‌هایی که از پوسته گرافیکی بهره می‌برن بی‌مصرف هست چون فایل‌منیجر‌هایی مثل nautilus موینت پوینت رو مشغول (busy) نگه می‌دارن و از umount شدن جلوگیری می‌کنن. اطلاعات بیشتر دو لینک زیر:

https://help.ubuntu.com/community/Autofs

http://www.mail-archive.com/autofs@linux.kernel.org/msg04737.html

بعضی اوقات فایل سیستم های NTFS رو با دستور mount به دلایلی مثل بد خاموش شدن ویندوز یا مشکلات دیگری نمیشه موینت کرد که در این مواقع بهتره از دستور ntfs-3g استفاده کنیم

$ sudo ntfs-3g /dev/sda7 /mnt/