VPN-এর পিছনে NFS: বুটে মাউন্ট নাকি চাহিদা অনুযায়ী অটোমাউন্ট?
বুটে মাউন্ট এমন একটি টানেলের উপর আটকে যায় যা হয়তো এখনও ওঠেনি। অটোমাউন্ট প্রথম অ্যাক্সেসের জন্য অপেক্ষা করে, আর VPN-নির্ভরতা ট্রিগারে নয়, মাউন্ট ইউনিটে থাকা উচিত।
দুটি কনফিগারেশন একই সমস্যা সমাধান করে এবং বিপরীত দিকে ব্যর্থ হয়। বুটে শেয়ার মাউন্ট করলে প্রতিটি সার্ভিস এমন একটি ফাইলসিস্টেম পায় যা হয় আছে, নয়তো বুট কেন আটকে গেল তার কারণ জানা যায়। চাহিদা অনুযায়ী অটোমাউন্ট মেশিনকে দ্রুত বুট দেয় এবং অপেক্ষার ভার সেই ব্যক্তির উপর ছেড়ে দেয় যে প্রথমে পথটি স্পর্শ করে। VPN-এর পিছনে দ্বিতীয়টি সাধারণত ভালো লেনদেন, এবং কারণ হলো টানেল এমন একটি ক্রম আরোপ করে যা বুট ক্রম দেখতে পায় না।
বুট মাউন্ট বনাম অটোমাউন্ট
বুট মাউন্ট নিয়ে চিন্তা করা সহজ। ফাইলসিস্টেম টার্গেট মাউন্টের জন্য অপেক্ষা করে, যে সার্ভিসগুলো এর উপর নির্ভরতা ঘোষণা করে তারা পরে শুরু হয়, আর সার্ভার অপ্রাপ্য হলে মেশিন অপশন অনুযায়ী হয় অপেক্ষা করে, নয়তো ব্যর্থ হয়। এর পরের সবকিছু সেই একক সিদ্ধান্তের উত্তরাধিকার পায়।
অটোমাউন্ট এটিকে উল্টে দেয়। পথটি সঙ্গে সঙ্গে বিদ্যমান থাকে, প্রকৃত মাউন্ট ঘটে যখন কিছু এটি খোলে, আর যে সার্ভিসগুলো আগে শুরু হয় তারা এমন টানেলে আটকে যায় না যা এখনও ওঠেনি।
তুলনাটি দাঁড়ায় কে বিলম্বটি বহন করবে তার উপর। ব্যবহারকারী কাজ শুরু করার আগে যে ওয়ার্কস্টেশনের শেয়ারটি দরকার, তার সম্ভবত অপেক্ষা করা উচিত। ব্যাগের ভিতরে বুট হওয়া ল্যাপটপ, বা যে সার্ভারের শেয়ার ঐচ্ছিক, তার অপেক্ষা করা উচিত নয়।
কোনো অপশনই অনুপস্থিত রুট ঠিক করে না। দুটোই শুধু নির্ধারণ করে ব্যর্থতাটি কখন লক্ষ্য করা হবে।
fstab লাইন, অপশন ধরে ধরে
ধরুন বিদ্যমান OpenVPN ক্লায়েন্ট ইনস্ট্যান্সটি [email protected], সার্ভারটি files.corp.example এবং মাউন্ট পয়েন্টটি /mnt/work। তিনটিই আপনার নিজের সাইটের অনুমোদিত মান দিয়ে বদলে দিন। একটি কার্যকর লাইন এমন দেখায়:
files.corp.example:/export/work /mnt/work nfs _netdev,nofail,x-systemd.automount,[email protected],x-systemd.mount-timeout=30s 0 0
_netdev মাউন্টটিকে নেটওয়ার্কিং প্রয়োজন বলে চিহ্নিত করে, এবং এটি কোনো টানেলের নাম বলে না। nofail সাধারণ ফাইলসিস্টেম টার্গেটের জন্য শেয়ারটিকে ঐচ্ছিক রাখে। x-systemd.automount সঙ্গে সঙ্গে মাউন্ট না করে চাহিদা অনুযায়ী ট্রিগার তৈরি করে।
x-systemd.requires= হলো সেই অংশ যা মাউন্ট প্রয়াসকে VPN ইউনিটের সঙ্গে বেঁধে দেয়, এবং এটি ট্রিগারে নয়, মাউন্ট অপারেশনে থাকা উচিত। অটোমাউন্ট ইউনিটের উপরেই ব্যাপক ক্রম বসানোই হলো সেই উপায় যাতে মানুষ চক্র তৈরি করে, যাদের নিয়ে systemd পরে এমন ভাষায় অভিযোগ করে যা কেউ দুবার পড়ে না।
x-systemd.mount-timeout=30s প্রাথমিক মাউন্ট কমান্ডকে সীমাবদ্ধ করে। এটি পরে যা ঘটে তার কিছুই সীমাবদ্ধ করে না, এবং এই অপশন নিয়ে এটাই সবচেয়ে সাধারণ ভুল বোঝাবুঝি।
শুরু হয়েছে বলতে যা বোঝায় না
আপনি যে VPN ইউনিটের নাম দিয়েছেন তার জন্য সক্রিয় হওয়ার অর্থ কী তা দেখে নিন। কোনো টানেল সার্ভিস ফাইল সার্ভারের রুট তৈরি হওয়ার আগেই বা প্রাইভেট নাম রিজলভ হওয়ার আগেই নিজেকে শুরু হয়েছে বলে জানাতে পারে, আর তার পরে ক্রম ঠিক করলে কিছুই পাওয়া যায় না। প্রায় প্রতিটি ব্যর্থ প্রয়াস এই ফাঁকেই বাস করে। ইউনিটের অবস্থার বদলে রুট ও রিজলভারের দিকে না তাকালে এটি অদৃশ্যও থাকে।
যেখানে আছে, সেখানে সংযোগের মালিকের নিজস্ব প্রস্তুতির সংকেত অতিরিক্ত পূর্বশর্ত হিসেবে ব্যবহার করুন। নির্দিষ্ট ঘুম একটি অনুমান, যা আপনার ডেস্কে কাজ করে এবং ধীর নেটওয়ার্কে বা পুনঃসংযোগের পরে ব্যর্থ হয়।
উদাহরণের পথের জন্য তৈরি ইউনিটগুলো দেখুন: mnt-work.automount এবং mnt-work.mount। পর্যালোচিত fstab পরিবর্তনের পরে systemd পুনরায় লোড করুন এবং অসংলগ্ন এন্ট্রি নাড়াচাড়া করা একটি ব্যাপক মাউন্ট কমান্ড চালানোর বদলে সেই ইউনিটগুলো সরাসরি পরিচালনা করুন।
আরও একটি সতর্কতা এখানে প্রযোজ্য। যে সার্ভিস শুরুতে /mnt/work স্পর্শ করে সে এখনও মাউন্ট ট্রিগার করে এবং এখনও এর জন্য অপেক্ষা করে, তাই শেয়ারকে ঐচ্ছিক চিহ্নিত করলে প্রতিটি অ্যাপ্লিকেশন ধৈর্যশীল হয়ে যায় না।
মাউন্টের পরে এটি ভিন্ন ব্যর্থতা
NFS মাউন্ট হয়ে গেলে, ফাইলসিস্টেমের পুনঃচেষ্টা ও পুনরুদ্ধারের আচরণ ঠিক করে পরে কোনো বিভ্রাট পড়া বা লেখার সঙ্গে কী করবে। আপনি যে মাউন্ট টাইমআউট দিয়েছেন তার এতে কোনো প্রভাব নেই।
সফট মাউন্ট কিছু অপেক্ষা ছোট করে এবং ত্রুটির অর্থবোধ বদলায়, যার সঙ্গে ডেটা অখণ্ডতার পরিণতি জড়িত যা দ্রুততর বুটই যখন লক্ষ্য তখন সহজে চোখ এড়ায়। শুরুর দুই সেকেন্ড জিততে এটি বেছে নেওয়া খুব কমই ভালো লেনদেন। যদি প্রয়োজনটি সত্যিই বিভ্রাটের সময় সীমিত একটি অপারেশন হয়, তবে সেটি অ্যাপ্লিকেশন স্তরের সিদ্ধান্ত, fstab ফ্ল্যাগ নয়।
টানেল পড়ে গেলে যে প্রক্রিয়াটি লেখার মাঝখানে আছে তার কী হওয়া উচিত তা ঠিক করুন এবং লিখে রাখুন। সেই উত্তর যেকোনো অপশন স্ট্রিংয়ের চেয়ে বেশি কাজে লাগে।
একটি নয়, চারটি অবস্থা পরীক্ষা করুন
টানেল উপলব্ধ থাকা অবস্থায় স্বাভাবিক বুট সহজ ঘটনা এবং প্রায় কিছুই প্রমাণ করে না। এটি নিশ্চিত করে যে স্ট্রিংটি সঠিকভাবে লেখা, আর কিছু নয়। VPN অনুপস্থিত থাকা অবস্থায় প্রথম অ্যাক্সেস পরীক্ষা করুন, তারপর এটি উঠলে পুনরুদ্ধার, তারপর সফল মাউন্টের পরে নিয়ন্ত্রিত বিভ্রাট।
চারটি অবস্থা, চারটি পর্যবেক্ষণ, আর নোটগুলো fstab এন্ট্রির পাশে যায়। পরের ব্যক্তি এমন কনফিগারেশনের বদলে আচরণের উত্তরাধিকার পায় যা তাদের উল্টো-প্রকৌশল করতে হবে।