Mount چیست و چه کاربردی دارد؟

در لینوکس برخلاف ویندوز چیزی به نام درایو C و D وجود ندارد. هر دیسک یا پارتیشن باید به نقطه‌ای در ساختار پوشه‌ها متصل شود تا قابل استفاده باشد. به این کار mount یا «مانت کردن» می‌گویند.

در این راهنما می‌بینیم mount دقیقاً چیست، چطور کار می‌کند، دستورهای کاربردی‌اش کدام‌اند و چطور یک دیسک جدید را روی سرور مانت کنیم.
 مفهوم mount و اتصال دیسک به ساختار پوشه‌ها در لینوکس

Mount چیست؟

mount یعنی متصل کردن یک پارتیشن یا دستگاه ذخیره‌سازی به یک پوشه مشخص در ساختار فایل سیستم. آن پوشه را نقطه اتصال یا Mount Point می‌نامند.

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

چرا لینوکس به mount نیاز دارد؟

لینوکس همه چیز را زیر یک ریشه واحد به نام / سازمان‌دهی می‌کند. هارد دوم، فلش، پارتیشن اضافه و حتی فضای شبکه، همگی باید جایی در همین درخت قرار بگیرند. این ساختار یکپارچه باعث می‌شود مسیر فایل‌ها همیشه ثابت و قابل پیش‌بینی بماند، فارغ از اینکه فیزیکاً روی کدام دیسک ذخیره شده‌اند.

نام‌گذاری دیسک‌ها در لینوکس

دیسک‌ها با الگوی مشخصی نام‌گذاری می‌شوند:

  • sda، sdb، sdc برای دیسک‌های SATA و SCSI. حرف آخر ترتیب دیسک را نشان می‌دهد.
  • nvme0n1، nvme1n1 برای دیسک‌های NVMe که در سرورهای امروزی رایج‌اند.
  • hda، hdb برای دیسک‌های قدیمی IDE که امروز تقریباً دیده نمی‌شوند.

پارتیشن‌های هر دیسک با شماره مشخص می‌شوند. مثلاً sda1 یعنی پارتیشن اول دیسک اول.

سیستم‌فایل‌های رایج

سیستم فایلکاربرد
ext4پیش‌فرض اکثر توزیع‌های لینوکس
xfsمناسب حجم‌های بزرگ، پیش‌فرض برخی توزیع‌های سروری
vfatفلش و کارت حافظه، سازگار با ویندوز
ntfsپارتیشن‌های ویندوزی
nfsاشتراک‌گذاری فضا روی شبکه
procfs و sysfsمجازی، ساخته‌شده توسط هسته در حافظه

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

ساختار دستور mount

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

mount -t <نوع سیستم فایل> <دستگاه> <نقطه اتصال>

برای مثال، مانت کردن یک فلش با سیستم فایل vfat:

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

ابتدا با mkdir پوشه مقصد ساخته می‌شود و بعد پارتیشن روی آن مانت می‌گردد. اجرای این دستورها نیاز به دسترسی root دارد.

مرسوم‌ترین محل‌ها برای نقطه اتصال، پوشه‌های /mnt و /media هستند.

مشاهده مانت‌های فعال

اجرای mount بدون هیچ گزینه‌ای، فهرست همه اتصال‌های فعلی را نشان می‌دهد. برای خروجی خواناتر معمولاً از این دستورها استفاده می‌شود:

lsblk
df -h
findmnt

lsblk ساختار دیسک‌ها و پارتیشن‌ها را درختی نشان می‌دهد، df -h فضای آزاد هر مانت را با واحد قابل خواندن می‌دهد و findmnt جزئیات کامل هر اتصال را.

برای فیلتر کردن بر اساس نوع سیستم فایل هم می‌توانید از سوئیچ -t استفاده کنید:

mount -t ext4

جدا کردن با umount

برای قطع اتصال از دستور umount استفاده می‌شود. دقت کنید که املای درست آن بدون حرف n است:

umount /media/flashdisk

اگر پیام target is busy گرفتید، یعنی فرایندی در حال استفاده از آن مسیر است. با دستور زیر می‌توانید ببینید کدام فرایند:

lsof +D /media/flashdisk

مانت دائمی با fstab

مانتی که با دستور انجام می‌دهید موقتی است و با ریستارت از بین می‌رود. برای اینکه اتصال بعد از هر بوت خودکار برقرار شود، باید در فایل /etc/fstab ثبت شود.

ابتدا شناسه یکتای پارتیشن را بگیرید:

blkid /dev/sdb1

سپس خطی مثل نمونه زیر به انتهای fstab اضافه کنید:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /data  ext4  defaults  0  2

استفاده از UUID به‌جای نام دستگاه اهمیت زیادی دارد، چون نام‌هایی مثل sdb ممکن است بعد از ریستارت جابه‌جا شوند ولی UUID ثابت می‌ماند.

قبل از ریستارت حتماً صحت فایل را تست کنید:

mount -a

اگر خطایی نداد یعنی fstab سالم است. اشتباه در این فایل می‌تواند باعث بالا نیامدن سرور شود، پس این تست را رد نکنید.

افزودن و مانت کردن دیسک جدید روی سرور مجازی
افزودن دیسک جدید به سرور مجازی

وقتی فضای اضافه به سرورتان اضافه می‌کنید، دیسک جدید به‌صورت خام تحویل داده می‌شود و تا مانت نشود قابل استفاده نیست. مراحل کار:

lsblk
mkfs.ext4 /dev/sdb
mkdir /data
mount /dev/sdb /data
df -h /data

در گام اول دیسک جدید را پیدا می‌کنید، بعد روی آن سیستم فایل می‌سازید، پوشه مقصد را ایجاد می‌کنید و مانت را انجام می‌دهید. در پایان با df -h از درستی کار مطمئن می‌شوید.

هشدار: دستور mkfs تمام محتوای دیسک را پاک می‌کند. پیش از اجرا کاملاً مطمئن شوید نام دستگاه درست است.

در پایان فراموش نکنید که این اتصال را در fstab هم ثبت کنید تا بعد از ریستارت باقی بماند.

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

خطاهای رایج

mount point does not exist
پوشه مقصد ساخته نشده است. ابتدا با mkdir بسازید.

wrong fs type, bad option, bad superblock
نوع سیستم فایل اشتباه اعلام شده یا پارتیشن هنوز فرمت نشده است. با lsblk -f نوع واقعی را ببینید.

target is busy
فرایندی در حال استفاده از مسیر است. با lsof پیدایش کنید یا از مسیر خارج شوید.

only root can do that
دستور نیاز به دسترسی root دارد. با sudo اجرا کنید.

سوالات پرتکرار

تفاوت mount و umount چیست؟
mount اتصال را برقرار می‌کند و umount آن را قطع می‌کند. توجه کنید که املای صحیح دستور دوم umount است، نه unmount.

چرا بعد از ریستارت مانت از بین می‌رود؟
چون مانت با دستور، موقتی است. برای دائمی شدن باید در فایل /etc/fstab ثبت شود.

چطور بفهمم یک پارتیشن مانت شده یا نه؟
با اجرای lsblk یا df -h می‌توانید نقطه اتصال هر پارتیشن را ببینید. اگر ستون mountpoint خالی باشد یعنی مانت نشده است.

آیا مانت کردن باعث پاک شدن اطلاعات می‌شود؟
خیر. mount فقط اتصال برقرار می‌کند. آنچه اطلاعات را پاک می‌کند دستور فرمت یعنی mkfs است.

چرا از UUID به‌جای نام دستگاه استفاده کنیم؟
چون نام‌هایی مثل sdb ممکن است بعد از ریستارت یا افزودن دیسک جدید تغییر کنند، ولی UUID هر پارتیشن ثابت می‌ماند و باعث بالا نیامدن سرور نمی‌شود.

مطالعه این مطالب را هم توصیه میکنیم

خدمات مورد نیاز شما را با کیفیتی که انتظار دارید و قیمتی که انتظار ندارید.

آیا این مطلب برای شما مفید بود؟

ثبت دیدگاه

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی با * مشخص شده‌اند.

برای جلوگیری از اسپم، حاصل جمع زیر را وارد کنید:

نه به‌علاوه پنج چند می‌شود؟