ابزار کاربر

ابزار سایت


terminal:m:mounting_file_systems_mount_command

دستور Mount ) Mount کردن سیستم فایل یا دیسک )

mount به معنی اتصال و mount point به معنی نقطه اتصال است. عمل mount به معنی اتصال یک پارتیشن یا یک دایرکتوری بر روی یک دایرکتوری دیگر است. اگر تا به حال لینوکس را صورت گرافیکی نصب کرده باشید دیده اید که اول باید هارد را پارتیشن بندی کنید. نام هاردها با توجه به نوع و تعداد هارد بصورت hdX و sdX است.
hd معرف IDE و sd مخفف هاردهای SATA میباشد. X بیانگر تعداد هاردهای متصل به سیستم است که با یک حرف نشان داده میشود.
بطور مثال اگر سه هارد SATA دارید پس سه Device به نام های sda, sdb, sdc خواهید داشت. در مرحله بعدی باید این پارتیشن ها را به یک دایرکتوری مانند / یا mnt/ اتصال دهید و نوع سیستم فایل مانند ext4 یا UFS را نیز برای این نقطه اتصال تعیین کنید.
برای توضیحات تکمیلی در ارتباط با نام گذاری دیسک ها پیشنهاد میکنم مطلب آشنایی با نام گذاری دیسک ها در لینوکس را مطالعه کنید.
سیستم فایلی به نام fstab را که شامل لیست تمامی دایرکتوری های mount است را در هنگام boot شدن میخواند و آنها را mount میکند. ولی پیش از این سیستم بصورت خودکار دایرکتوری / را mount میکند. تا زمانیکه فایل fstab خوانده نشده هیچ سیستم فایلی جز دایرکتوری / اتصال نیافته است.
به جز سیستم فایل های رایج مانند ext4 و vfat نوع دیگری از سیستم فایل به نام های procfs و sysfs وجود دارند که به پارتیشن های همنام خودشان متصل می شوند و بصورت خودکار توسط هسته ساخته و mount میشوند.
محل قرارگیری آنها در دیسک یا هارد نیست بلکه در حافظه RAM قرار دارند و پس از خاموش یا restart شدن سیستم از بین میروند و در هر بار boot شدن سیستم دوباره ساخته میشوند این سیستم فایها حاوی اطلاعات سیستمی مانند اطلاعاتی از پردازنده و اطلاعاتی از سخت افزار و ماژول های هسته میباشند جالبی این نوع سیستم فایلها این است که اندازه آنها صفر است و حجمی ندارند.

دستورات mount پارتیشن ها و فایل سیستم در لینوکس

زمانیکه شما یک هارددیسک را به سیستم متصل میکنید احتمالا از ابزارهایی مثل دستور fdisk یا دستور parted برای ایجاد کردن پارتیشن ها استفاده می کنید. زمانیکه شما یک پارتیشن را ایجاد می کنید با استفاده از دستور mkfs فایل سیستم مربوط به پارتیشن ایجاد شده را ext2, ext3 یا ext4 قرار میدهید.
زمانیکه شما یک پارتیشن را ایجاد میکنید تا زمانیکه پارتیشن مورد نظر را به یک دایرکتوری یا نقطه اتصال در سیستم متصل یا mount نکنید قادر به استفاده کردن از آن پارتیشن نخواهید بود اینکار با استفاده از دستوری به نام mount در سیستم عامل لینوکس انجام میشود. برای mount کردن سیستم فایل بصورت دستی از دستور mount استفاده میکنیم. تمامی کاربران می توانند این دستور را بدون هیچگونه سويیچی اجرا کنند و فهرستی از سیستم فایلهای و پارتیشن ها و دایرکتوری ها mount شده را مشاهده نمایند. اما اجرای این دستور با سويیچ هایش نیاز به دسترسی root دارد.

mount

دستور mount دارای سويیچ t- است که میتوانید تعیین کنید فقط پارتیشن ها و دایرکتوری هایی از یک نوع خاص مانند ext3 یا ext4 و یا vfat و حتی سیستم فایل procfs را لیست کند. در دستور زیر به جای type نوع سیستم فایل دلخواه را وارد کنید.

mount -t <type>

شکل کلی استفاده از دستور mount بصورت زیر است:

mount [OPTIONS]<device/directory mount_point>

device/directory پارتیشن یا دایرکتوری است که بر روی mount_point اتصال mount داده میشود. یکی از سويیچ ها t- است که تعیین میکند device/directory با چه نوع سیستم فایلی بر روی mount_point اتصال پیدا کنند. فرمت استفاده از این سوئيچ بصورت زیر خواهد بود.

mount -t <TYPE><device/directory mount_point>

که باید به جای TYPE یکی از انواع زیر را جایگزین کنید:

  • ext2 یا ext3, ext4 : سیستم فایل های رایج توزیع های لینوکس
  • iso9660: فرمت رایج برای cd ها
  • jfs:تولید شده توسط IBM و رایج در سیستم عامل مکینتاش
  • nfs:سیستم فایل شبکه و برای اشتراک دایرکتوری ها در شبکه استفاده میشود
  • nfs4: نسخه ۴ از سیستم فایل nfs
  • udf:فرمت رایج در dvdها
  • vfat:رایج در مکینتاش برای اتصال سیستم فایلهای ویندوزی و همچنین مورد استفاده در floppyها و usb ها
  • ntfs:مانندvfat رایج در مکینتاش ها برای اتصال سیستم فایل های ویندوزی

دایرکتوری mnt/ و media/ از متداول ترین مکان ها در لینوکس هستند که میتوانید یک نقطه اتصال را ایجاد کنید. برای این کار ابتدا باید نقطه اتصال را ایجاد کنید. از دستور mkdir برای ساختن یک دایرکتوری به عنوان نقطه اتصال استفاده کنید.

mkdir /media/flashdisk

و سپس باید پارتیشن یا دایرکتوری را به آن متصل کنید. در مثال زیر یک پارتیشن به نام sdc1 بر روی یک نقطه اتصال در زیر دایرکتوری media/ به نام flashdisk و از نوع vfat اتصال داده شده است

mount -t vfat /dev/sdc1 /media/flashdisk

اگر نقطه اتصال را از قبل ایجاد نکنید و بخواهید یک پارتیشن یا دایرکتوری را به چیزی که وجود ندارد اتصال دهید خطای زیر را مشاهده میکنید:

mountpoint /media/flashdisk: No such file or directory

۱۲ مثال کاربردی دستورات mount در لینوکس

مثال اول: mount کردن یک cd-rom

فایل دستگاه یا device file ها برای cd در دایرکتوری dev/ قرار دارد. برای مثال یک دستگاه cd-rom به شکل زیر mount میشود:

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

در مثال قوق آرگومان های o- ro به این معناست که cd-rom بایستی بصورت فقط خواندنی یا read only معرفی یا mount شود. همیشه مطمئن شوید که دایرکتوری مقصد که در مثال mnt/ مشاهده میکنید قبل از اجرای دستور وجود داشته باشد.

مثال دوم: مشاهده همه mount های لینوکس

بعد از اینکه شما دستور mount کردن یک پارتیشن یا فایل سیستم را اجرا کردید میتوانید برای اطمینان از عملکرد درست دستور, دستور mount را بدون هیچ آرگومانی اجرا کنید تا همه mount های ایجاد شده روی سیستم عامل به شما نمایش داده شود. در مثال زیر بعد از mount کردن درایو USB در مسیر media/myusb در حالت mount قرار گرفته است, در اینجا ما Usb Device را بصورت dev/sdb1/ میشناسیم, به آخرین خط نتیجه دستور دقت کنید موردی که اشاره کردیم را خواهید دید:

-> $mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=1970308k,nr_inodes=492577,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_cls,net_prio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/sda2 on / type ext4 (rw,relatime,seclabel,data=ordered)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=1923)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=2M)
debugfs on /sys/kernel/debug type debugfs (rw,relatime,seclabel)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,seclabel)
/dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sda5 on /home type ext4 (rw,relatime,seclabel,data=ordered)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=396456k,mode=700,uid=1000,gid=1000)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
tracefs on /sys/kernel/debug/tracing type tracefs (rw,relatime,seclabel)
/dev/sdb1 on /mnt/hdd type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)

به غیر از دستور فوق میتوانید از دستور df بدون آرگومان هم تمامی mount point های سیستم عامل را مشاهده کنید:

-> $df
Filesystem     1K-blocks      Used Available Use% Mounted on
devtmpfs         1970308         0   1970308   0% /dev
tmpfs            1982292     16672   1965620   1% /dev/shm
tmpfs            1982292      1472   1980820   1% /run
tmpfs            1982292         0   1982292   0% /sys/fs/cgroup
/dev/sda2       41022688   8045000  30864152  21% /
tmpfs            1982292        36   1982256   1% /tmp
/dev/sda1         999320    206720    723788  23% /boot
/dev/sda5      194932388  19592092 165368536  11% /home
tmpfs             396456        20    396436   1% /run/user/1000
/dev/sdb1      976759804 707037720 269722084  73% /mnt/hdd
terminal/m/mounting_file_systems_mount_command.txt · آخرین ویرایش: 2019/01/04 01:11 توسط phoenix