کاربران ویندوز با مفهوم درایو یا پارتیشن آشنایی دارند اما در لینوکس لغت پارتیشن یا درایو کاربرد ندارد بلکه از سیستم فایل استفاده می‌شود.

سیستم فایل در لینوکس و همین‌طور سیستم عامل‌های شبیه UNIX مثل مک‌او‌اس اپل، قابلیت ماونت کردن دارد. در صورت عدم نیاز یا برای رفع مشکلات خاص، می‌توانید سیستم فایل را Unmount کنید و همین‌طور آن را Remount یا مجدداً ماونت کنید. همه‌ی کارهای اشاره شده را می‌توانید با تایپ کردن و اجرای دستورات در Terminal‌ لینوکس انجام بدهید.

در این مقاله با دستورات مربوط به ماونت کردن فایل سیستم در لینوکس آشنا می‌شویم.

آشنایی با سیستم فایل لینوکس

سیستم فایل در توزیعات مختلف Linux و سیستم عامل‌هایی مشابه UNIX، با ویندوز متفاوت است. ویندوز شناسه‌ی وسایل ذخیره‌سازی را جدا می‌کند و برای هر یک از حجم‌ها یا به بیان دیگر پارتیشن‌ها، یک حرف مثل C و D و غیره در نظر می‌گیرد و سیستم فایل هر یک از این پارتیشن‌ها، فایل و فولدرهایی را شامل می‌شود.

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

سیستم فایل در لینوکس می‌تواند یک هارددیسک، یک درایو حالت جامد یا به اختصار SSD و همین‌طور درایو نوری یا فلاپی‌دیسک و حتی یک فایل ISO‌ باشد.

در توزیعات مختلف Linux اغلب سیستم فایل‌ها به صورت خودکار حین بوت شدن سیستم عامل ماونت می‌شوند و در نتیجه زمانی که سیستم عامل لینوکس بالا می‌آید و کاربر می‌خواهد از آن استفاده کند، وسایل ذخیره‌سازی همگی در دسترس هستند. البته می‌توانید قابلیت ماونت خودکار یا به زبان دیگر Auto-Mount را غیرفعال کنید و این موضوع برای عیب‌یابی رفع مشکلات خاص یا با توجه به ملاحظات امنیتی گاهی ضروری است.

اگر قابلیت ماونت خودکار را غیرفعال کرده باشید، می‌بایست پس از بوت شدن سیستم عامل، سیستم فایل‌ها را به صورت دستی ماونت کنید. دستورات ساده‌ای برای این مهم وجود دارد که در این مقاله و مقالات بعدی بررسی می‌کنیم. در روش دستی ماونت کردن می‌توانید نقطه‌ی ماونت را انتخاب کنید و سطح دسترسی را روی حالت فقط خواندنی یا Read-Only تنظیم کنید تا در سیستم فایل تغییری ایجاد نشود.

برای ماونت کردن از دستور mount و برای جدا کردن از دستور umount استفاده می‌شود که هر یک چندین آپشن مهم و کاربردی دارند.

بررسی سیستم فایل با دستور mount

دستور ماونت تعداد نسبتاً زیادی آپشن دارد. برای لیست کردن سیستم فایل‌های موجود در کامپیوتر، می‌توانید این دستور را بدون هیچ آپشنی اجرا کنید! به عبارت دیگر در ترمینال لینوکس mount را تایپ کنید و Enter را فشار دهید:

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

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

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

همان‌طور که متوجه شده‌اید گزارش سیستم فایل‌ها کمی پیچیده است و پیدا کردن سیستم فایل موردنظر در آن دشوار است.

برای خروجی بهتر می‌توانید دستور ماونت را با آپشن -t اجرا کنید که مخفف type یا نوع است و پس از این آپشن، نوع سیستم فایل موردنظر را ذکر کنید. در این صورت فقط نوع مشخص شده لیست می‌شود.

به عنوان مثال برای لیست کردن سیستم فایل‌هایی با فرمت tmpfs از دستور زیر و برای سیستم فایل‌های ext4 از دستور بعدی استفاده کنید:

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

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

توجه کنید که سیستم فایل tmpfs در حقیقت روی حافظه‌ی موقت ذخیره شده و حافظه‌ی پایدار نیست. tmp مخفف temporary است و fs نیز File System‌ است.

همان‌طور که در خروجی دستور دوم مشاهده می‌کنید، تنها یک سیستم فایل با فرمت ext4 موجود بوده و در واقع تنها یک درایو هارددیسک به اسم sda در سیستم وجود داشته است که در مسیر روت یا / ماونت شده است. مسیر روت در واقع ریشه‌ی نمودار درختی سیستم فایل‌ها است.

و اما منظور از عبارت‌های اختصاری rw و موارد دیگر در گزارش فوق:

  • rw: به معنی سیستم فایلی با دسترسی خواندن و نوشتن یا Read و Write است.
  • relatime: به معنی سیستم فایلی است که ساختاری بهینه برای دسترسی آنی و سریع هسته‌ی لینوکس به منظور ثبت دسترسی به فایل‌ها و تغییر در متادیتای فایل‌ها دارد.
  • errors=remount -o: اگر ارور مهم و جدی در سیستم فایل وجود داشته باشد، سیستم فایل در حالت فقط خواندنی مجدداً ماونت می‌شود که برای عیب‌یابی و رفع مشکل مفید است.

بررسی سیستم فایل با دستور df در لینوکس

دستور df هم برای چک کردن سیستم فایل‌هایی که ماونت شده‌اند و نقطه‌ی ماونت، کاربرد دارد. اگر این دستور را بدون هیچ پارامتری در ترمینال اجرا کنید، اطلاعاتی مشابه اجرای دستور mount ارایه می‌شود که شاید پیچیده و عجیب به نظر برسد.

در واقع وجود تعداد زیادی سیستم فایل در لینوکس، غیرطبیعی نیست. به عنوان مثال اگر در لینوکس Ubuntu‌ از فرمان snap‌ برای نصب کردن پکیج‌های نرم‌افزاری اسنپ استفاده کرده باشید، برای هر یک از اپلیکیشن‌های نصب شده یک سیستم فایل squashfs که در حقیقت سیستم فایل کامل و واقعی نیست، ایجاد می‌شود. طبعاً اگر از دستور df و mount استفاده کنید، این نوع سیستم فایل نیز لیست می‌شود و خروجی را طولانی و پیچیده می‌کند.

برای نادیده گرفتن نوعی از سیستم فایل، می‌توانید از آپشن -x که مخفف Exclude است، استفاده کنید و پس از آن نوع سیستم فایل را تایپ کنید. به عنوان مثال برای نادیده گرفتن سیستم فایل‌های squashfs می‌توانید دستور زیر را اجرا کنید:

و لیست سیستم فایل‌ها بسیار کوتاه‌تر و مفیدتر می‌شود:

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

در گزارش فوق نام سیستم فایل‌ها، ظرفیت هر یک، میزان استفاده نشده از هر یک و همین طور مسیر ماونت شدن موجود است.

ماونت کردن مجدد همه‌ی سیستم فایل‌های موجود در fstab

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

در صورت نیاز می‌توانید مجدداً تمام سیستم فایل‌های که در fstab ثبت شده را را به صورت اجباری ماونت کنید. برای این مهم از دستور زیر استفاده کنید و با توجه به اینکه از sudo برای اجرای دستور با دسترسی روت استفاده شده، پس از زدن Enter پسورد حساب سوپریوزر را تایپ کنید.

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

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

برچسب‌های سیستم فایل در Linux

برای چک کردن برچسب هر یک از سیستم فایل‌ها می‌توانید از آپشن -l که مخفف label است استفاده کنید. برچسب‌ها اساساً کاربرد خاصی ندارد و نام‌های تصادفی محسوب می‌شوند.

به عنوان مثال برای چک کردن برچسب سیستم فایل‌های با فرمت vfat می‌توانید دستور زیر را اجرا کنید:

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

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

برای دسترسی به فلاپی درایو می‌توانید از طریق نقطه‌ی ماونت آن اقدام کنید. در این مثال دستور اول فولدر کاری را به /mnt تغییر می‌دهد. دستور دوم برای لیست کردن فولدرهای موجود در این مسیر کاربرد دارد.

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

اگر برای لیست کردن فایل‌ها از دستور df و grep استفاده کنید تا سیستم فایل‌هایی با عنوان sd لیست شود، نتیجه نمایش دو مورد خواهد بود:

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

درایو فلاپی در مسیر /dev/sdb ماونت شده است و سیستم فایل مربوط به فلاپی درایو نیز در مسیر /mnt ماونت شده است.

برای آن‌ماونت کردن یا به عبارت دیگر جدا کردن، دستور زیر را اجرا کنید که در آن دسترسی سوپریوزر با عبارت sudo فراهم می‌شود و پس از دستور unmount نیز سیستم فایل فلاپی درایو ذکر شده است:

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

آپشن Lazy و دستور umount

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

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

حتی اگر با دستور cd برای تغییر فولدر کاری اقدام کرده باشید و فولدر کاری در حال حاضر فولدری در فلاپی باشد هم دستور فوق اجرا نمی‌شود. در واقع Linux متوجه می‌شود که شاید اشتباهاً دستور unmount را اجرا کرده‌اید.

برای آن‌ماونت کردن در مجالی دیگر، می‌توانید از آپشن -l که مخفف lazy است، استفاده کنید. در این صورت فرمان unmount همین حالا اجرا نمی‌شود بلکه صبر می‌کند تا استفاده از سیستم فایل متوقف شود و سپس آن را جدا می‌کند.

بنابراین اگر دستور زیر اجرا شود و لحظاتی بعد با دستور cd فولدر کاری را به مسیر روت یا ~ تغییر بدهید، آن‌ماونت کردن انجام می‌شود.

آشنایی با سیستم فایل در لینوکس و روش ماونت کردن و دسترسی و کار با unmount

همان‌طور که مشاهده می‌کنید با اجرا کردن دستور ls /mnt نتیجه‌ی نمایش داده نمی‌شود چرا که این مسیر پس از آن‌ماونت کردن دیوایس مربوطه، خالی است.