راه اندازی و پیکربندی NFS
آشنایی با مفهوم (NFS (Network File System
(NFS (Network File System اساساً برای به اشتراک گذاری فایلها و پوشهها بین سیستمهای Linux/Unix به وسیلهی Sun Microsystems در سال ۱۹۸۰ توسعه یافته شده است.NFS اجازه میدهد فایل سیستمهای محلی خود را بر روی یک شبکه و میزبانهای راه دور برای تعامل ، به عنوانی که آنها به صورت محلی در یک سیستم مشابه سوار شدهاند ،سوار کنید.با کمک NFS ،ما میتوانیم اشتراک فایل بین سیستم یونیکس به لینوکس و سیستملینوکس به یونیکس را راه اندازی کنیم.
مزایای NFS
- NFS اجازهی دسترسی محلی به فایلهای از راه دور را میدهد.
- NFS از معماری سرویس گیرنده / سرویس دهنده استاندارد برای به اشتراک گذاری فایل بین همهی ماشینهای مبتنی بر *nix ،استفاده میکند.
- با NFS ،هیچ نیازی نیست که روی هر دو ماشین ،سیستمعامل مشابه اجرا شده باشد.
- با کمک NFS ما میتوانیم راه حلهای ذخیرهسازی مرکزی را پیکربندی کنیم.
- کاربران میتواننند اطلاعات خود را بدون توجه به موقعیت فیزیکی ،دریافت کنند.
- هیچ refresh دستی برای فایلهای جدید نیاز نمیشود.
- نسخهی جدیدتر از NFS همچنین ACL و مانت ریشهی کاذب را پشتیبانی میکند.
- میتوان با Firewallها و Kerberos آن را امنتر کرد.
سرویسهای NFS
یک سیستم V-launched service ،است.بسته سرور NFS شامل سه سرویس گنجانده شده در بستههای portmap وnfs-utils میباشد.
- Portmap :
فراخوانیهای portmap توسط سیستمهای دیگر برای اصلاح سرویس RPC ساخته شده است (با NFSv4 لازم نیست). - Nfs:
این ،درخواستهای به اشتراک گذاری فایل از راه دور را به درخواستهای روی فایل سیستم محلی ،ترجمه میکند. - rpc.mountd:
این سرویس مسئول نصب و پیاده کردن سیستم های فایل است.
فایل های مهم برای پیکربندی NFS
- etc/exports/ :
این فایل اصلی پیکربندی NFS است ،همهی فایلهای export شده و دایرکتوریها در سرور NFS در این فایل تعریف میشوند. - etc/fstab/ :
برای مانت کردن یک دایرکتوری NFS ،روی سیستم خود ،ما احتیاج به ساختن یک ورودی درetc/fstab/ داریم. - etc/sysconfig/nfs/ :
فایل پیکربندی NFS ، برای کنترل ،روی آنچه که پورت rpc و سرویسهای دیگر که در حال شنیدن هستند.
نحوه نصب و راه اندازی بخش سرور NFS روی بسترلینوکس توزیع دبیان
۱- ابتدا پکیج های نصب شده در سیستم را بروزرسانی میکنیم
۲- سپس پکیج NFS سرور را نصب میکنیم
$ sudo apt update && sudo apt install nfs-kernel-server rpcbind
۳- سپس Portmapper را نصب میکنیم : این پکیج پورت های سیستم را نشانه گذاری و مدیریت میکند
$ sudp apt install portmap
۴- (اختیاری) در این مرحله می توانیم دسترسی ها را از طریق فایل های hosts.deny و hosts.allow کنترل کنیم
/etc/hosts.deny
rpcbind mountd nfsd statd lockd rquotad : ALL
خط یالا مانع دسترسی سایر هاست ها به سرویس هایی که طور پیشفرض توسط NFS استفاده میشوند خواهدشد.
اکنون باید به کلاینت ها و لوکال هاست دسترسی استفاده از سرویس NFS را بدهیم .
/etc/hosts.allow
rpcbind mountd nfsd statd lockd rquotad : 127.0.0.1 : allow
rpcbind mountd nfsd statd lockd rquotad : example_IP : allow
rpcbind mountd nfsd statd lockd rquotad : ALL : deny
۵ – حال یک دایرکتوری جدید برای استفاده به عنوان دایرکتوری اصلی سرور NFS ایجاد میکنیم (می تواند یک دیسک جدا یا lvm باشد که در این شاخه مونت شده) و مالکیت مناسب را به دایرکتوری که ایجاد کردیم میدهیم. همانطور ما میخواهیم تمامی کلاینت ها به دایرکتوری دسترسی داشته باشند . ما باید مجوزهای محدود کننده دایرکتوری را حذف کنیم
$ sudo mkdir /var/nfsroot && sudo chown nobody:nogroup /var/nfsroot
۶- اکنون وارد فایل etc/exports
میشویم و خط زیر را اضافه میکنیم . در قسمت example_IP آی پی کلاینت را وارد میکنیم . در واقع در این قسمت ما دسترسی خواندن و نوشتن به تمام کاربرانی که در سیستمی که آی پی آن را وارد کرده ایم میدهیم و همچنین بررسی زیرشاخه هایی که در زیر دایرکتوری اصلی وجود دارند.
-
rw = فایل سیستم خواندن و نوشتن
-
no_root_squash = کاربر روت در سیستم کلاینت همان امتیازاتی را دارد که کاربر روت در سمت سرور دارد . بنابراین با این دستور جلوی این کار را میگیریم
- /var/nfsroot example_IP/17(rw,root_squash,subtree_check)
- سپس جدول exports سیستم را بروزرسانی میکنیم و در نهایت برای اعمال تغیرات ایجاد شده یک بار سرویس NFS را راه اندازی مجدد میکنیم
$ sudo exportfs -ra && sudo systemctl restart nfs-kernel-server
تنطیمات سمت سرور به پایان رسید
نحوه نصب و راه اندازی بخش کلاینت NFS روی بسترلینوکس توزیع دبیان
۱- ابتدا پکیج های نصب شده در سیستم را بروزرسانی میکنیم و پکیج nfs-common
را نصب میکنیم
$ sudo apt update && sudo apt install nfs-common
به منظور mount کردن از سرور در فایل سیستم کلاینت یک دایرکتوری ایجاد میکنیم
$ sudo mkdir /mnt/remotenfs
حال برای مونت کردن می تونیم از دستور mount استفاده کنیم ولی این کار باعث میشه که فقط تا بوت بعدی این nfs رو داشته باشیم برای دایمی کردن mount point باید اونو درون /etc/fstab/ وارد کنیم
خط زیر را به منظور mount کردن از سرور اصلی به دایرکتوری که ایجاد کردیم در این فایل قرار میدهیم و به جای example_IP
آی پی سرور NFS را جایگزین میکنیم :
fstab – Filse system table جدول فایل سیستم : فایل fstab یک پیکربندی در سیستم های دبیان است . معمولا لیست تمام دیسک های در دسترس و پارتیشن دیسک ها در این فایل قرار دارد و نشان میدهد که چگونه پیاده سازی شده اند.
-
rw = فایل سیستم خواندن و نوشتن
-
async = ورودی و خروجی باید به صورت غیرهمزمان انجام شود
-
hard = برنامه هایی که در حال استفاده از فایل هایی که در سرور ذخیره شده اند هنگامی که سرور قطع شود , صبر میکنند تا مجددارتباط برقرار شود.
-
iner = به کاربر اجازه میدهد تا وقفه ایجاد شده را پایان دهد
-
noexect = اجرای فایل های باینری یا اسکریپت را در سرور غیرفعال میکند.
-
rsize = اندازه بلاک خواندن داده را تعین میکند.
-
wsize = اندازه بلاک نوشتن داده را تعین میکند.
- example_IP:/var/nfsroot /mnt/remotenfs nfs rw,async,hard,intr,noexect 0 0
- حال با زدن دستور زیر می توانیم از این nfs استفاده کنیم
$ mount -a
مراحل نصب و پیکربندی NFS کلاینت نیز تمام شد . اکنون شما میتوانید به فایل سیستمی که در سرور قرار دارد دسترسی داشته باشید و از آن فایل بخوانید ویرایش کنید و یا ایجاد کنید . برای اینکه کلاینت های بیشتری به فایل سیستم اضافه کنیم باید وارد فایل etc/exports
در سمت سرور شویم و مانند مراحلی که توضیح داده شد اضافه کنیم.
امیدوارم مفید بوده باشه
با حق