NFS یا Network File System امکان اشتراک دایرکتوری های میان دو سیستم عامل یونیکسی (مانند لینوکس، سولاریس) را فراهم می کند. در این مطلب مختصری درباره سرویس NFS و در در این مطلب اصول کلی چگونگی راه اندازی سرویس NFS گفته شده است. همچنین در این مطلب چگونگی راه اندازی سرویس NFS در توزیع Redhat و دیگر توزیع های مبتنی بر آن مانند CentOS (نسخه 6 این توزیع ها) گفته شده است. بطور کلی در تمامی توزیع های لینوکسی روش کار این است که : سرویس های مورد نظر را در سرور و کلاینت نصب و فعال (start) می کنیم و سپس در ماشین سرور دایرکتوری های دلخواره را بعنوان دایرکتوری های اشتراکی، export می کنیم و برای این کار آنها را به فایل exports معرفی می کنیم و در نهایت از کلاینت ها توسط دستور mount به آنها دسترسی پیدا می کنیم.
تنظیم NFS شامل تنظیم ماشین سرور که دایرکتوری ها را به اشتراک می گذارد و تنظیم ماشین های کلاینت که دایرکتوری های اشتراکی شده را در خود با دستور mount استفاده می کنند. در این مطلب فرض بر این است که ماشین سرور دارای آدرس 192.168.1.100 و ماشین کلاینت دارای آدرس 192.168.1.101 است. تمامی تنظیمات فوق در ماشین سرور نیاز به دسترسی root دارند.
نصب نیازمندی های NFS در ماشین سرور
با استفاده از دستور زیر ابزار های لازم یعنی nfs-kernel-server و portmap را نصب کنید :
apt-get install nfs-kernel-server portmap
گام بعدی در پیکربندی ماشین سرور، انتخاب یا ایجاد دایرکتوری مورد نظر برای اشتراک میان دیگر ماشین ها است. پس از انتخاب دایرکتوری مورد نظر باید آنرا به همراه تنظیمات لازم در فایل etc/exports/ معرفی کنیم. در این پست یک دایرکتوری به نام nfs-shares در زیر دایرکتوری var/ ایجاد می کنیم و سپس آنرا به فایل etc/exports/ معرفی می کنیم.
mkdir /var/nfs-shares
پس از انتخاب و یا ایجاد دایرکتوری مورد نظر، می بایست تنظیمات لازم را در فایل etc/exports/ انجام داد. پس با یک ویرایشگر متنی مانند vi فایل را باز کنید :
vi /etc/exports
می خواهیم دو دایرکتوری home/ و دایرکتوری var/nfs-shares/ را برای کلاینت 192.168.1.101 به اشتراک بگذاریم. پس می بایست دو خط زیر را در فایل وارد کنیم. توجه کنید که هیچ فاصله ای میان آدرس کلاینت و گزینه های درون پرانتز وجود ندارد.
home 192.168.1.101(rw,sync,no_root_squash,no_subtree_check) #/home /
var/nfs 192.168.1.101(rw,sync,no_subtree_check) #nfs-shares /
یا اینکه می توانید با خطوط زیر دایرکتوری ها را برای تمامی ماشین های درون شبکه 192.168.1.0/24 به اشتراک بگذارید
home 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check) #/home /
var/nfs 192.168.1.0/24(rw,sync,no_subtree_check) #nfs-shares /
بررسی گزینه ها
rw : اجازه Read و Write را به کلاینت از و در دایرکتوری های اشتراکی می دهد.
sync : این گزینه باعث می شود که سرور تنها پس از نوشتن داده ها (اعمال تغییرات) کاملن تمام شد، به کلاینت پاسخ دهد. این گزینه، بعنوان پیشفرض است و اگر ننویسید، همین گزینه در نظر گرفته می شود.
no_root_squash : گزینه ای بسیار مهم در تنظیم یک دایرکتوری برای اشتراک گذاشتن، چونکه باعث کاهش امنیتی در سرور NFS خواهد. اگر از این گزینه استفاده می کنید باید بدانید که کاربر root روی ماشین کلاینت، روی دایرکتوری اشتراک شده، دسترسی root مطابق با root ماشین سرور را خواهد داشت و توصیه می شود که از این گزینه استفاده نکنید.
no_subtree_check : این گزینه باعث عدم پیمایش در دایرکتوری بالا دستی دایرکتوری اشتراکی می شود. یعنی وقتی یک دایرکتوری اشتراکی ( در اینجا nfs-shares) اشتراکی می شود، با تنظیم این گزینه نمی گذاریم که کلاینت ها به دایرکتوری های بالایی دایرکتوری اشتراکی شده (در اینجا var) دسترسی پیدا کنند و تنها به زیر دایرکتوری های، دایرکتوری اشتراکی دسترسی دارند.
پس از اعمال تغییرات در فایل etc/exports/ دستور زیرا اجرا کنید
exportfs -a
نصب نیازمندی های NFS روی ماشین کلاینت
با دستور زیر بسته های portmap و nfs-common را در کلاینت های دلخواه نصب کنید. بسته مشترک میان دو ماشین سرور و کلاینت portmap است، که ارتباط میان سرور و کلاینت را برقرار می کند و در صورت غیر فعال (stop) بودن روی هر کدام از ماشین ها باعث می شود نتوانید در سمت کلاینت، دایرکتوری را mount کنید.
apt-get install nfs-common portmap
دومین گام در تنظیم ماشین های کلاینتی، ایجاد دایرکتوری لازم برای mount کردن دایرکتوری اشتراکی ماشین سرور است.
mkdir /mnt/nfs/home
mkdir /mnt/nfs/nfs-shares
و درنهایت با استفاده از دستور های زیر دایرکتوری های سرور را بر روی کلاینت mount کنید. توجه کنید که در دستور های زیر آدرس 192.168.1.100 آدرس ماشین سرور است. دستور های زیر مطابق با NFSv4 در ماشین های کلاینت است.
mount -t nfs 192.168.1.100:/home /mnt/nfs/home
mount -t nfs 192.168.1.100:/var/nfs-shares /mnt/nfs/nfs-shares
mount کردن یک دیارکتوی توسط دستور mount بصورت موقتی بوده و پس از خاموش/راه اندازی مجدد سیستم، نقاط اتصال ایجاد شده توسط دستور mount از بین می روند، پس لازم است با خطوط شکل زیر فایل etc/fstab/ را در کلاینت ها ویرایش کنید
همچنین می توانید مطلب “امنیت و مواردی از NFS” را از اینجا بخوانید.