নেটওয়ার্ক ফাইল সিস্টেম (NFS) ফাইল এবং ফোল্ডার শেয়ার করার জন্য একটি বিতরণ করা ফাইল সিস্টেম প্রোটোকল। NFS রিমোট প্রসিডিউর প্রোটোকল (ONC RPC) এর উপর ভিত্তি করে। NFS নেটওয়ার্কে দূরবর্তী ফাইল সিস্টেম মাউন্ট করার অনুমতি দেয়। মনে রাখবেন যে NFS ব্যবহার করার সময় ডিফল্ট ডেটা এনক্রিপ্ট করা হয় না এবং ক্লায়েন্টদের প্রমাণীকৃত হয় না (আইপি দ্বারা অ্যাক্সেস সীমিত হতে পারে)।
NFS সার্ভার এবং ক্লায়েন্ট-সাইড উভয় ক্ষেত্রেই কনফিগার করা সহজ। এই নিবন্ধে, আমরা কীভাবে একটি NFS সার্ভার ইনস্টল এবং কনফিগার করতে হবে তা দেখাব এবং তারপরে আমরা একটি ক্লায়েন্টে একটি NFS শেয়ার সংযুক্ত করব। এই নিবন্ধটি RPM-ভিত্তিক লিনাক্স বিতরণের উপর ভিত্তি করে (CentOS, RHEL, Fedora, ইত্যাদি)।
লিনাক্স সেন্টোসে একটি এনএফএস সার্ভার কীভাবে ইনস্টল এবং কনফিগার করবেন
ডিফল্টরূপে, এনএফএস ইতিমধ্যেই স্ট্যান্ডার্ড প্যাকেজের সাথে CentOS-এ ইনস্টল করা আছে। আপনি যদি NFS উপাদানগুলি সরিয়ে ফেলে থাকেন বা আপনার সার্ভারের জন্য ন্যূনতম ইনস্টল মোড ব্যবহার করেন, আপনি 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
আপনি যদি আপনার লিনাক্স হোস্টে ফায়ারওয়ালড ব্যবহার করেন তবে নিম্নলিখিত পোর্টগুলি খুলুন:
# 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 শেয়ার প্রকাশ করুন এবং NFS সার্ভার সেটিংস (/etc/exports) ধারণকারী কনফিগারেশন ফাইলে অ্যাক্সেস অনুমতি বরাদ্দ করুন।
# nano /etc/exports
নির্দিষ্ট আইপি সাবনেটের সমস্ত হোস্টে NFS অ্যাক্সেস দেওয়ার জন্য কনফিগারে নিম্নলিখিত লাইনটি যুক্ত করুন:
/backup/nfs 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)
অথবা আপনি শুধুমাত্র একটি আইপি ঠিকানায় অ্যাক্সেস সীমিত করতে পারেন:
/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 - শুধুমাত্র-পঠন অ্যাক্সেস প্রদান করে
- সিঙ্ক – সিঙ্ক্রোনাস অ্যাক্সেস মোড, অসিঙ্ক মানে ডিস্কে লেখার নিশ্চিতকরণের জন্য আপনাকে অপেক্ষা করতে হবে না (এটি NFS কর্মক্ষমতা উন্নত করে, কিন্তু নির্ভরযোগ্যতা হ্রাস করে)
- no_root_squash – রুট ব্যবহারকারীকে একটি ক্লায়েন্ট থেকে NFS ডিরেক্টরিতে অ্যাক্সেস পেতে দেয় (সাধারণত সুপারিশ করা হয় না)
- no_all_squash – ব্যবহারকারীর প্রমাণীকরণ সক্ষম করে, all_squash - একটি বেনামী ব্যবহারকারীর অধীনে NFS শেয়ার অ্যাক্সেস করার অনুমতি দেয়
- no_subtree_check - একটি চেক নিষ্ক্রিয় করে যে একজন ব্যবহারকারী ডিরেক্টরিতে একটি ফাইল অ্যাক্সেস করেছেন (সাবট্রি_চেক ডিফল্টরূপে ব্যবহৃত হয়)
- অনুইড, অ্যানজিড - নির্দিষ্ট স্থানীয় ব্যবহারকারী/গ্রুপে 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 ইমেজ ফাইল ইত্যাদি রাখতে পারেন।