ایجاد ramdisk یا درایومجازی در لینوکس

آشنائی با ramdisk :

در این مقاله ابتدا سعی میکنم شما را با مفاهیم اولیه ramdisk یا درایو مجازی آشنا کنم . ابتدا باید بدانیم که ramdisk قسمتی از حافظه ram‌ سیستم است که شما آنرا بصورتی آدرس دهی میکنید که مجازا" بصورت یک پارتیشن هارد دیسک عمل کند . به عبارت دیگر شما قسمتی از حافظه رم سیستم خودرا که دارای سرعتی چندین برابر بیشتر از هارد دیسک شماست در اختیار میگیرید و به سیستم میگوئید که اینگونه وانمود کند که این بخش یک پارتیشن اضافی در کنار هارد دیسک شماست و از آن درست مثل هارد دیسک ولی با توان و سرعت بسیار بالاتر استفاده کند .

توجه داشته باشید که ramdisk  همانطوریکه از نام آن پیداست در قسمتی از حافظه ram ایجاد شده و به محض راه اندازی مجدد یا خاموش کردن کامپیوتر اطلاعات آن بکلی پاک میشود و نباید از آن برای ذخیره کردن اطلاعات دائمی مثل اسناد متنی یا فایلهای پیکربندی سیستم ویا برنامه های کاربردی استفاده کرد.

سئوالی که اینجا مطرح میشود این است که با این اوصاف پس مورد استفاده ramdisk چیست و چرا باید از آن به نحو شایسته استفاده کرد .

پاسخ این است که در برخی برنامه های کاربردی مثل مرورگرها یا سرورهای وب  و  حتی خود سیستمهای عامل همیشه قسمتی از اطلاعات موقتی برنامه ها به اصطلاح  cache یا موقتا ذخیره میشوند و سرعت ذخیره و بازیابی این اطلاعات در سرعت و کارائی برنامه کاربردی بسیار موثر است . و اینجاست که با مسیر دهی محل ذخیره سازی این فایلهای موقت در محل ایجاد شده تحت عنوان ramdisk و بهره گیری از سرعت بسیار بالا و توان عملیاتی ram  میتوان به کارائی مطلوب سیستمی دست یافت .

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

ایجاد ramdisk  در لینوکس :

معمولا هسته کرنل همه توزیعهای لینوکس موجود از ramdisk بصورت پیش گزیده built-in‌ پشتیبانی میکنند و ایجاد ramdisk  در این شرایط بسیار ساده و به شرح زیر میباشد :

ابتدا یک دایرکتوری یا  mount point  به نام ramdisk0  برای استقرا ramdisk   در مسیر /tmp ایجاد میکنیم :

# mkdir /tmp/ramdisk0

سپس یک فایل سیستم  فرمت ext2 با نام ram0‌ در مسیر  /dev  ایجاد میکنیم :

# mke2fs /dev/ram0

در ادامه باید فایل سیستم ایجاد شده را در مسیر mount point ایجاد شده الصاق یا به اصطلاح mount  کنیم :

# mount /dev/ram0 /tmp/ramdisk0

این دستورات فایل سیستم مناسب را  بر روی قسمتی از فضای ram   برای شما ایجاد و آنرا فرمت کرده و در درایوی با نام ramdisk0‌ برای استفاده شما محیا میکند .

حال میتوانید از دایرکتوری /tmp/ramdisk0  درست مثل یک پارتیشن هارد دیسک استفاده کنید .

اندازه ramdisk‌ بطور پیش فرض 4 مگابایت تعریف میشود ولی در صورتی که بخواهید اندازه آنرا به دلخواه تعیین کنید بایستی دستور زیر را به فایل تنظیمات بوت لودر LILO  با نام  /etc/boot/lilo.conf  اضافه کنید :

ramdisk_size=10000  

 

احتمالا قسمتی از فایل lilo.conf‌ شما پس از افزودن دستور فوق به شکل زیر خواهد بود :

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

image=/boot/vmlinuz

               label=linux

               root=/dev/hda2

               read-only

               ramdisk_size=10000

 

پس از افزودن این دستور به فایل lilo.conf  وذخیره سازی و سپس اجرای دستور lilo  در خط فرمان جهت اعمال تغییرات اندازه ramdisk شما به ده مگابایت ارتقاء می یابد .

بدیهی است در صورتی که شما هسته kernel  خود را خودتان کامپایل نموده و ramdisk‌ را بعنوان loadable module  یا همان ماژول قابل اتصال به هسته پیکربندی کرده اید باید برای افزایش فضای ramdisk‌ دستور زیر را در فایل modules.conf  واقع در مسیر /etc/  اضافه کنید :

options rd rd_size=10000

 و یا دستور زیر را در خط فرمان کاربر ریشه اجرا کنید :

insmod rd rd_size=10000
 

نکته :

در هر زمان با اجرای دستور زیر میتوان به مشخصات تفصیلی  ramdisk  دست یافت :

df -k /dev/ram0

نتایج بدست آمده برای یک ramdisk ‌ با اندازه 4 مگابایت :

>df -k /dev/ram0
Filesystem  1k-blocks  Used Available Used Mounted on
/dev/ram0        3963    13      3746   0% /tmp/ramdisk0