چگونه در سیستم عامل لینوکس درایو مجازی بسازیم؟

توسط سمیرا گلکار
درایو مجازی

قبل از شروع مطلب توجه داشته باشید که درایو مجازی (رم درایو) و نمونه‌های tmpfs یکی نیستند. در این مقاله به بررسی تفاوت‌های این دو خواهیم پرداخت و به شما آموزش می‌دهیم که چگونه با استفاده از خط فرمان در سیستم عامل لینوکس یک درایو مجازی بسازید. با کمک این فرمان‌ها می‌توانید ظرف چند دقیقه یک درایو مجازی پرسرعت بسازید.

درایو مجازی (RAM Drive) چیست؟

تراشه‌های رم کامپیوتر شما می‌توانند نقش یک درایو مجازی را برای شما داشته باشند. این درایو روی ‌هارد دیسک ذخیره نمی‌شود بلکه روی رم ذخیره می‌شود. علاوه بر اینکه سرعت چنین درایو مجازی نسبت به دیسک معمولی بسیار بیشتر است (بخصوص نسبت به دیسک‌های چرخان قدیمی تر چون حرکت فیزیکی اجزای داخل دیسک چرخان می‌تواند منجر به افزایش تأخیر شود) تراشه‌های رم به سرعت دیسک تخریب نمی‌شوند؛ باز هم بخصوص برای دیسک‌های فیزیکی قدیمی تر.

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

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

یکی دیگر از کاربردهای درایو مجازی بارگذاری اولیه داده‌های پرکاربرد بر روی تراشه‌های رم است. مثلاً اگر سروری دارید که دائماً به یک دیتابیس فقط خواندنی دسترسی پیدا می‌کند (شرایط برای دیتابیس خواندنی/نوشتی سخت تر است چون در این حالت نیاز به حفظ داده‌ها وجود دارد) که اطلاعات آن روی دیسک مقیم هستند؛ می‌توانید این دیتابیس فقط خواندنی را به شکل خودکار روی رم کپی کنید (مثلاً با یکسری اسکریپت خودکار که هنگام شروع به کار سرور اجرا می‌شوند یا به یک جاب cron) و اجازه دهید که سرور دیتابیس از این داده‌ها استفاده کند.

به عبارت دیگر می‌توان کاربردها را به دو گروه کلی خلاصه کرد: اول کش کردن (مثلاً برای دیتابیس فقط خواندنی) و دوم ذخیره داده‌های بی ارزش (مثال تست). می‌توانید کار را یک مرحله جلوتر ببرید (که این می‌تواند کاربرد سوم باشد) و در بازه‌های زمانی مختلف این داده‌ها را روی دیسک ذخیره کنید. مثلاً در مثال تست که داده‌ها در رم ذخیره می‌شد، می‌توانیم پس از تکمیل هر دور از تست، خلاصه یا داده‌های تست یا دوباره روی دیسک (حافظه دائمی) بنویسیم.

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

ممکن است افزایش سایز درایو مجازی – مثلاً به اندازه ۸۰ تا ۸۵ درصد از حافظه سیستم – باعث ایجاد مشکل شود. البته اگر سرور شما ۲۵۶ گیگابایت رم دارد، با تخصیص ۹۰ درصد آن به درایو مجازی باز هم ۲۵ گیگابایت حافظه برای اجرای سیستم عامل و نرم‌افزارها خواهید داشت. اما اگر فقط ۴ گیگابایت حافظه در اختیار داشته باشید، تخصیص ۹۰ درصد از رم به درایو مجازی باعث می‌شود که فقط ۰.۴ گیگابایت (یا ۴۰۰ مگابایت) حافظه در اختیار داشته باشید در نتیجه به احتمال زیاد با مشکل روبرو خواهید شد. بنابراین همه چیز بستگی به میزان حافظه سیستم دارد و اینکه چقدر از آن برای سایر نرم‌افزارها مورد نیاز است.

علاوه بر این درایو مجازی شبیه به نمونه‌های tmpfs عمل نمی‌کند.

مقایسه درایو مجازی و tmpfs

امکان ذخیره کردن tmpfs هم در حافظه رم کامپیوتر وجود دارد اما انجام این کار الزامی نیست. روش نگاشت پرکاربرد /dev/shm که به شکل خودکار با بیشتر نسخه‌های لینوکس نصب می‌شود مفید است اما عملکرد آن شبیه به درایو مجازی نیست.

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

ایجاد درایو مجازی

ایجاد درایو مجازی کار نسبتاً ساده‌ای است. می‌توانید با استفاده از کد زیر یک اسکریپت کوچک به اسم ramdrive.sh بسازید:

%D9%81%D8%B1%D9%85%D8%A7%D9%86 %D8%A7%D9%88%D9%84

یکی دیگر از این اسکریپت‌ها umount_ram.sh است که با کد زیر نوشته می‌شود:

%D9%81%D8%B1%D9%85%D8%A7%D9%86 %D8%AF%D9%88%D9%85

در اسکریپت اول ما با استفاده از نماد (#!) اعلام کردیم که می‌خواهیم برای تفسیر فرمان از Bash استفاده کنیم.

بعد از آن بررسی می‌کنیم که آیا قبلاً در مسیر /mnt/ram (مسیری که قرار است درایو مجازی را در آن نصب کنیم) نصبی داشتیم یا نه که این کار را با استفاده از پارامتر فقط grep (grep -o) برای مسیر /mnt/ram در فهرست مورد نظر که با mount نمایش داده می‌شود، انجام می‌دهیم. اگر چنین نصبی پیدا نشد، سه فرمان بعدی sudo را اجرا می‌کنیم که هر یک به دلیلی به sudo نیاز دارند.

اولین فرمان به sudo نیاز دارد از این جهت که قرار است یک پوشه را احتمالاً در روت بسازد و در مسیر /mnt که جزء مسیرهای حفاظت شده‌ای است که مستلزم دسترسی‌های سطح بالاست. فرمان بعدی که نصب و ایجاد دیسک مجازی است باز هم به sudo نیاز دارد چون نصب کردن درایو مجازی جزء فرمان‌هایی با دسترسی‌های بالاست. با استفاده از پارامتر size=1g اندازه درایو مجازی را ۱ گیگابایت تعریف کردیم. همچنین اعلام کردیم که می‌خواهیم یک درایو از نوع ramfs داشته باشیم (-t ramfs) که از دستگاه ramfs (که این موضوع را با استفاده از ramfs دوم نشان دادیم) ایجاد می‌شود و در نهایت نقطه نصب را مسیر /mnt/ram تعریف کردیم.

ما در سومین فرمان دارای sudo با دو بار استفاده از فرمان whoami مالک دایرکتوری /mnt/ram را (که حالا درایو نصب ramfs ماست) کاربر جاری و گروه فعلی او تعریف کردیم. می‌توانید این تنظیمات را به یک گروه خاص تغییر دهید تا در صورت نیاز کاربران بیشتری بتوانند از ramdrive استفاده کنند.

در نهایت فرمان if .. fi را نهایی کرده و آخرین فراخوانی برای نصب (mount) را با یک grep برای ram انجام دادیم تا مطمئن شویم که این اسکریپت می‌تواند گزارش‌های لازم در رابطه با رم نصب شده یا آنچه که حین اجرای اسکریپت ایجاد شده را تولید کند. این تأیید فوری بسیار مفید و کاربردی است و نشان می‌دهد که اسکریپت ما با موفقیت اجرا شده است.

اسکریپت بعدی umount_ram.sh درایو مجازی نصب شده در مسیر /mnt/ram را حذف می‌کند یعنی درایو ramfs که تازه ساخته بودیم. نکته: اجرای این فرمان بلافاصله باعث حذف همه داده‌های ذخیره شده در حافظه فرار می‌شود و نصب دوباره RAMFS باعث برگشت این اطلاعات نخواهد شد و فقط یک درایو مجازی جدید و خالی نصب می‌کند پس لطفاً مراقب باشید!

جمع بندی

در این مقاله نحوه نصب درایو رم و ramfs (که هر دو اساساً یک چیز هستند) و نمونه‌های tmpfs را بررسی کردیم. ما با استفاده از یک اسکریپت کوچک برای نصب یا درایو مجازی، یک درایو tmpfs 1 گیگابایتی در مسیر /mnt/ram نصب کردیم.

اگر به سیستم عامل لینوکس علاقمند هستید، می‌توانید به سایر مطالب روکیدا درباره این سیستم عامل سر بزنید از جمله:

بهترین توزیع‌های لینوکس ۲۰۲۰ برای حرفه ای‌ها و تازه وارد‌ها، بهترین توزیع‌های سبک لینوکس ۲۰۲۰ و بهترین لپ تاپ‌های لینوکسی ۲۰۲۰.

مطالب مرتبط

نظر شما چیست؟