السلام عليكم ورحمة الله وبركاته ...



طبعاً كما هو معروف الـ NFS هو عبارة عن Network File System ومن الإسم واضح هو لمشاركة الملفات على الشبكة. كيف يتم ذلك في بيئة Ubuntu ؟ الأمر جداً بسيط وسهل، كل ما عليك عمله هو متابعة هذه التدوينة فقط ... طيب ما هي المتطلبات لذلك؟ المتطلبات هي التالي:
nfs-kernel-server - هذا هو السيرفر الخاص بالـ NFS

nfs-common - هذه الحزمة تتظمن بعض البرامج الخاصة بالـ NFS

portmap - هذه هي خدمة معينة لربط الخدمات التي تستعمل rpc من خلال port معيين حيث تقوم بإعطاء port معيين لخدمة معينة، ومن دون هذه الخدمة لن يعمل الـ NFS

الآن لنقم بالتنصيب:


apt-get install nfs-kernel-server portmap nfs-common


الآن الملف الخاص بالإعدادت حق الـ NFS هو /etc/exports حيث يحتوي على الإعدادات الخاصة بالمجلدات التي تريد عمل مشاركة Share لها على الشبكة ... طيب الحين لنفرض لدي المجلد التالي:


/home/user/Movies


وأريد أن أقوم بمشاركته للمستخدمين الموجودين على الشبكة المحلية فقط ... ماذا سنعمل؟ الجواب تابع معي:

أول حاجة سنقوم بها هي:
نحرر ملف الإعدادات الخاص بالخدمة NFS من خلال الأمر التالي:


vi /etc/exports


بعد ذلك نقوم بوضع السطر هذا:


/home/user/Movies 192.168.0.0/24(rw,sync)


لنوضح هنا ماذا يعني كل شيء في هذا السطر ... لنأخذ كل شيء على حدى:
/home/user/Movies هذا هو المجلد المراد عمل مشاركة له
192.168.0.0/24 هذا يمثل الأي بي حق الشبكة الخاصة بي، وضعي للـ /24 تعني إني حددت المشاركة ستكون لكل من يقع ما بين 192.168.0.0 و 192.168.0.255
rw تعني السماح للقراءة read والكتابة write على المجلد الذي قمنا بعمل مشاركة له
sync تعني إنها ستقوم بعمل الإتصال ونقل البيانات يتم بشكل تزامني Synchronous

مثال آخر:


/home/user/Movies rul3z(ro,sync) n3m3siz(rw,sync)


هنا قمت بعمل مشاركة لنفس المجلد ولكن ليس الى شبكة معينة ولكن الى Hostname معيين. هذه الحالة تتطلب من السيرفر NFS قادر على التعرف على الـ Hostnames الموجودة على الشبكة وإﻻ لن تعمل ﻷنه لن يتعرف ماذا يعني rul3z أو n3m3siz ...

الآن قم بحفظ الملف وغلقه وبعدها قم بتنفيذ التالي:


/etc/init.d/nfs-kernel-server start


لو أخبرك بإن السيرفر يعمل من الأصل قم بتنفيذ التالي:


/etc/init.d/nfs-kernel-server restart


الآن أصبح السيرفر حق الـ NFS يعمل وكل شي تمام ... باقي نعمل تجربة هل يعمل أم ﻻ.
الآن لنقم على جهاز آخر بعمل التالي لغرض التجربة:

mkdir /mnt/Movies

حيث سنقوم بربط المجلد الموجود على الشبكة مع المجلد الموجود على الجهاز الحالي من خلال المجلد الذي عملناه في الأعلى. الآن لتنفيذ عملية الربط قم بالتالي:


mount server-name/ip:/home/user/Movies /mnt/Movies


كل ما عليك فعله هو تغيير server-name بإسم السيرفر أي الـ Hostname أو تغيير الـ server-ip بالأي بي حق السيرفر لكي يعمل الأمر أعلاه. طيب الحين كيف أصل للملفات؟ بسيطة جداً نحن ربطنا المجلد المشترك على الشبكة بنظام الملفات التي لدينا من خلال الملجد /mnt/Moivies ولهذا أكيد الوصول لهم من خلاله:


cd /mnt/Movies


طيب يا B!n@ry لنفرض أنا ﻻ أعرف ما هي المجلدات التي تم عمل مشاركة لها على السيرفر كيف أعرف ذلك ؟ قم بالتالي:


showmount -a server-name/ip


كل ما عليك فعله هو تغيير server-name بإسم السيرفر أي الـ Hostname أو تغيير الـ server-ip بالأي بي حق السيرفر لكي يعمل الأمر أعلاه.

ألف مبروك الحين جهازك يعمل كـ NFS Server ... لمزيد من المعلومات؟ دائماً الـ man pages فيها الكثير، والإستفسارات هنا محل ترحيب مستمر ...

خالص الود والتقدير للجميع ...
أخوكم B!n@ry ...