Network File System (NFS) হল একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেম প্রোটোকল যা ফাইল এবং ফোল্ডার শেয়ার করতে ব্যবহৃত হয়। NFS রিমোট প্রসিডিউর প্রোটোকলের (ONC RPC) ওপর ভিত্তি করে তৈরি। NFS নেটওয়ার্কের ওপর থেকে রিমোট ফাইল সিস্টেম মাউন্ট করতে দেয়। মনে রাখবেন যে ডিফল্টভাবে NFS ব্যবহার করার সময় ডেটা এনক্রিপ্টেড থাকে না, এবং ক্লায়েন্টরা অথেন্টিকেট করা থাকে না (অ্যাক্সেস IP দিয়ে সীমাবদ্ধ করা যায়)।
NFS সার্ভার এবং ক্লায়েন্ট দুটোই কনফিগার করা খুব সহজ। এই লেখায় আমরা দেখাব কিভাবে একটি NFS সার্ভার ইনস্টল ও কনফিগার করবেন, এবং তারপর একটি ক্লায়েন্টে NFS শেয়ার কানেক্ট করবেন। এই লেখা RPM-ভিত্তিক লিনাক্স ডিস্ট্রিবিউশন (CentOS, RHEL, Fedora, ইত্যাদি) আশ্রয় করে।
লিনাক্স CentOS-এ NFS সার্ভার ইনস্টল ও কনফিগারেশন কীভাবে করবেন?
ডিফল্টভাবে, CentOS-এ Standard প্যাকেজের সাথে nfs ইতিমধ্যে ইনস্টল করা থাকে। আপনি যদি NFS কম্পোনেন্ট সরিয়ে দিয়ে থাকেন বা সার্ভারের জন্য Minimal Install মোড ব্যবহার করেছেন, তবে yum (অথবা dnf) প্যাকেজ ম্যানেজার ব্যবহার করে NFS প্যাকেজ ইনস্টল করতে পারেন:
CentOS 8-এ:
# dnf install nfs-utils -y
আমার প্যাকেজটি ইতিমধ্যে ইনস্টল করা ছিল:

বর্তমান NFS সার্ভার ভার্সন NFSv3 এবং NFSv4 প্রোটোকল ভার্সন সাপোর্ট করে। NFSv2 ডিফল্টভাবে ডিজেবল থাকে। সমর্থিত NFS ভার্সনগুলো দেখতে এই কমান্ড ব্যবহার করুন:
cat /proc/fs/nfsd/versions
আপনার প্রয়োজনীয় সব প্যাকেজ ইনস্টল করার পর, nfs-server এবং rpcbind সার্ভিসগুলো শুরু করুন এবং স্টার্টআপে যোগ করুন:
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server
আপনি যদি শুধু NFSv4.1/4.2 ব্যবহার করতে চান, তবে rpcbind চালানোর প্রয়োজন নেই।
আপনার লিনাক্স হোস্টে firewalld ব্যবহার করলে, নিচের পোর্টগুলো খুলুন:
# firewall-cmd --permanent --add-port=111/tcp
# firewall-cmd --permanent --add-port=20048/tcp
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=mountd
# firewall-cmd --permanent --zone=public --add-service=rpc-bind
# firewall-cmd --reload

iptables ব্যবহার करनेवालों জন্য:
# iptables -t filter -A INPUT -p tcp --dport 111 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 2049 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 20048 -j ACCEPT
# service iptables save
# service iptables restart
তারপর আপনার NFS সার্ভার শেয়ার করবে এমন একটি ডিরেক্টরি তৈরি করুন:
# mkdir -p /backup/nfs
# chmod -R 777 /backup/nfs
NFS শেয়ার পাবলিশ করুন এবং কনফিগারেশন ফাইলে (/etc/exports) অ্যাক্সেস পারমিশন বরাদ্দ করুন।
# nano /etc/exports
নির্দিষ্ট IP সাবনেটের সব হোস্টকে NFS অ্যাক্সেস দিতে কনফিগে নিচের লাইনটি যোগ করুন:
/backup/nfs 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)
অথবা একটি একক IP ঠিকানার জন্য অ্যাক্সেস সীমাবদ্ধ করতে পারেন:
/backup/nfs 192.168.2.24(rw,sync,no_root_squash,no_all_squash, anonuid=1000,anongid=1000) 192.168.3.100 (ro,async,no_subtree_check)
NFS ডিরেক্টরিতে পারমিশন দিতে যে প্যারামিটারগুলো ব্যবহার করা হয় সেগুলো দেখি:
- rw – রাইট পারমিশন দেয়, ro – রিড-অনলি অ্যাক্সেস দেয়
- sync – সিঙ্ক্রোনাস অ্যাক্সেস মোড, async মানে ডিস্কে রাইট কনফার্মেশনের জন্য অপেক্ষা করতে হয় না (এটি NFS পারফরম্যান্স বাড়ায়, কিন্তু विश्वস্ততা কমানো)
- no_root_squash – রুট ইউজারকে ক্লায়েন্ট থেকে NFS ডিরেক্টরি অ্যাক্সেস করতে দেয় (সাধারণত প্রস্তাবিত নয়)
- no_all_squash – ইউজার অথেন্টিকেশন সক্ষম করে, all_squash – অনুজ্ঞা দেয় NFS শেয়ার অ্যানোনিমাস ইউজার হিসেবে অ্যাক্সেস করতে
- no_subtree_check – একটি ইউজার ডিরেক্টরিতে ফাইল অ্যাক্সেস করেছে কিনা তা চেক করা ডিজেবল করে (subtree_check ডিফল্টভাবে ব্যবহার হয়)
- anonuid, anongid – NFS ইউজার/গ্রুপকে নির্দিষ্ট লোকাল ইউজার/গ্রুপে ম্যাপ করে (UID বা GID)
নতুন NFS শেয়ার সেটিংস প্রয়োগ করতে নিচের কমান্ড চালান:
# exportfs -a
এবং NFS সার্ভার রিস্টার্ট করুন:
# systemctl restart nfs-server
এভাবে, আমাদের NFS সার্ভার কনফিগারেশন শেষ হয়েছে এবং আমরা ক্লায়েন্ট কনফিগারেশনের দিকে যেতে পারি।
CentOS-এ NFS ক্লায়েন্ট কনফিগারেশন
একটি NFS ক্লায়েন্ট কনফিগার করতে, আপনাকে nfs-utils প্যাকেজও ইনস্টল করতে হবে।
# yum install nfs-utils -y
সার্ভিসগুলো স্টার্টআপে যোগ করুন এবং শুরু করুন:
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server
তারপর ক্লায়েন্টে একটি ডিরেক্টরি তৈরি করুন যেখানে NFS ডিরেক্টরি মাউন্ট হবে:
# mkdir /backup
তারপর রিমোট NFS শেয়ারটি এই কমান্ড দিয়ে মাউন্ট করুন:
# mount -t nfs 192.168.0.100:/backup/nfs/ /backup
আপনি NFS প্রোটোকলের ভার্সন বাধ্য করতে পারেন:
# mount -t nfs -o vers=4 192.168.0.100:/backup/nfs/ /backup
যেখানে IP হল আপনি আগে কনফিগার করা NFS সার্ভারের ঠিকানা।

তब কানেক্টেড NFS শেয়ারগুলো মাউন্টেড ড্রাইভের তালিকায় দেখাবে। আপনি ডিরেক্টরিতে ডেটা পড়তে বা লিখতে পারবেন (NFS সার্ভারে আপনার IP ঠিকানার জন্য বরাদ্দ করা পারমিশনের উপর নির্ভর করে)। রিবুটে স্বয়ংক্রিয়ভাবে NFS ডিরেক্টরি মাউন্ট করতে, fstab ফাইল খুলুন:
# nano /etc/fstab
এবং এতে নিচের লাইনটি যোগ করুন:
192.168.0.100:/backup/nfs/ /backup/ nfs rw,sync,hard,intr 0 0
fstab সেভ করার পর, আপনি এটি এই কমান্ড দিয়ে প্রয়োগ করতে পারেন:
# mount -a
এভাবে, আমরা একটি রিমোট NFS স্টোরেজ কনফিগার ও কানেক্ট করেছি, যা বিভিন্ন হোস্ট থেকে একটি শেয়ার্ড রিসোর্সে ট্রান্সপারেন্ট নেটওয়ার্ক অ্যাক্সেসের জন্য ব্যবহার করা যায়। আপনি আপনার NFS ডিরেক্টরিতে ব্যাকআপ, ISO ইমেজ ফাইল ইত্যাদি রাখতে পারেন।