منبع اصلی نوشتار زیر در این لینک قرار دارد

سیستم فایل های در-حافظه در یونیکس ها

سیستم عامل های شبه یونیکس از سیستم فایل های رایجی مانند etx2, ext3, etx4, xfs, ufs, zfs, btrfs و غیره استفاده می کنند که همگی برای فرمت بندی هارد دیسک ها استفاده می شوند. گونه دیگری از سیستم فایل ها وجو دارند که سیستم فایل هایی را درون حافظه اصلی یا همان RAM ایجاد می کنند که می توان به سیستم فایل های proc, shmfs و tmpfs اشاره کرد. در مورد سیستم فایل proc در مطلب “سیستم فایل proc چیست ” توضیح داده شده است. یک دایرکتوری به نام proc/ وجود دارد که از نوع سیستم فایل proc است.

سیستم فایل های در-حافظه یا in-memory به صورت موقتی بوده و محتوای آنها پس از reboot شدن سیستم عامل یونیکسی (مانند لینوکس، بی اس دی ها، سولاریس و غیره) از بین خواهد رفت. tmpfs که برگرفته از temporary filesystem است گونه دیگری از سیستم فایل های در-حافظه است. سه دایرکتوری رایج tmp/, var/lock/ و var/run/ هستند که با این نوع سیستم فایل در توزیع های لینوکسی mount و قابل دسترسی هستند.

توجه کنید که محتوای این دایرکتوری ها به دلیل استفاده از سیستم فایل tmpfs پس از خاموش یا راه اندازی مجدد سیستم از میان خواهند رفت و بر روی دیسک ذخیره نخواهند شد.  خروجی شکل زیر دو داریرکتوری dev/shm/ و var/run/ را از خروجی دستور df -h نشان می ده که به ترتیب سیستم فایل آنها از نوع shmfs و tmpfs است.

linux_in_memory_fs1

همانطور که می بینید اندازه دایرکتوری dev/shm/ چهار گیگابایت است و دایرکتوری var/run/ به اندازه 937 مگابایت است. توجه کنید که با دستور زیر دایرکتوری var/run/ را بر روی سیستم فایل tmpfs متصل کرده ام.

mount -t tmpfs tmpfs /var/run

و همچنین مطابق شکل زیر آنرا برای اتصال دائمی در فایل etc/fstab/ اضافه کرده ام.

linux_in_memory_fs2

سیستم فایل shmfs که مخفف shared memory filesystem است به منظور داده اشتراکی میان برنامه ها (فرایند ها) استفاده می شود. به عنوان مثال در پایگاه داده اوراکل بخشی از فضای SGA یا System Global Area بافری به نام Buffer Cache وجود دارد که داده های Fetch شده از پایگاه داده برای دسترسی فرایند های سرور اوراکل در آن قرار گرفته و سپس توسط فرایند پس زمینه DBWR و پس از تغییرات به درون پایگاه داده نوشته می شوند. نکته اینجاست که داده های واکشی شده از پایگاه داده درون این بافر مورد استفاده چندین فرایند سرور اوراکل قرار گرفته و از روی داده های خوانده و یا به ترتیب  معینی بر روی آنها می نویسند تا اینکه توسط DBRW به پایگاه داده منتقل و به صورت دائمی ذخیره و ماندگار شوند.

از دستور زیر برای mount کردن آن به اندازه چهار گیگابایت استفاده کردم.

mount -t shm shmfs -o size=4G /dev/shm

اگر بخواهیم اندازه دایرکتوری از نوع سیستم فایل tmpfs را تغییر دهیم از دستور زیر استفاده می کنیم.



برچسب ها : , , , , , , , ,