এই আর্টিকেলে, আমরা আপনাকে দেখাব কীভাবে CentOS Linux-এ সময়, তারিখ, টাইমজোন সেট করতে হয়, NTP সার্ভারের সাথে সময় সিঙ্ক্রোনাইজ করতে হয় এবং টিপিক্যাল সমস্যা ফিক্স করতে হয়।
সার্ভারে দুটি ধরনের ঘড়ি থাকে: হার্ডওয়্যার একটি (রিয়েল-টাইম ক্লক) যা সার্ভার অফ থাকলেও চলতে থাকে এবং অপারেটিং সিস্টেম সফটওয়্যার ঘড়ি। এই দুটি ঘড়ির সময় ভিন্ন হতে পারে। অপারেটিং সিস্টেম শুরু হওয়ার পর, সফটওয়্যার ঘড়ি হার্ডওয়্যার ঘড়ির উপর ভিত্তি করে তৈরি হয় এবং OS দ্বারা অ্যাডজাস্ট করা হতে পারে। অধিকাংশ অ্যাপ্লিকেশন তাদের অপারেশনে সফটওয়্যার ঘড়ির সময় ব্যবহার করে।
Hwclock: হার্ডওয়্যার টাইম কনফিগারেশন
Hwclock লিনাক্সে হার্ডওয়্যার টাইম চেক করতে ব্যবহৃত হয়:
hwclock --localtime— কোরেকশন ছাড়া হার্ডওয়্যার টাইম চেক করুনhwclock --utc— UTC সময় দেখায় যদি হার্ডওয়্যার ক্লক UTC সময় দেখায়
# hwclock --localtime
2020-10-12 06:12:02.912866-04:00
# hwclock --utc
2020-10-12 02:12:18.915319-04:00
সিস্টেম টাইম অনুযায়ী হার্ডওয়্যার টাইম সেট করতে এই কমান্ডটি চালান:
# hwclock --systohc
আপনার ইচ্ছামতো হার্ডওয়্যার টাইম সেট করতে নিচের কমান্ডটি চালান:
# hwclock --set --date "11 Oct 2020 17:30"
CentOS-এ ম্যানুয়াল টাইম কনফিগারেশন
লিনাক্সে, সফটওয়্যার টাইম চেক এবং সেট করতে date বা timedatectl টুলস ব্যবহার করা হয়। আপনি যদি কোনো প্যারামিটার ছাড়া date কল করেন, তবে এটি আপনার সার্ভারের বর্তমান সময় দেখাবে:
# date
Sun Oct 11 22:14:54 EDT 2020
আপনি যদি ম্যানুয়ালি সময় সেট করতে চান, তবে date কমান্ডটি অতিরিক্ত প্যারামিটারসহ ব্যবহার করতে পারেন:
# date MMDDhhmm
উদাহরণস্বরূপ:
# date 10261740
তারিখ, সময়, টাইমজোন, সিঙ্ক্রোনাইজেশন সেটিংস, ডে-লাইট সেভিং টাইম সেটিংস (DST) সম্পর্কে বিস্তারিত তথ্য পেতে timedatectl ব্যবহার করা হয়। এটি সার্ভারে টাইম সেটিংস সম্পর্কে আরও বিস্তারিত তথ্য দেয়।
Timedatectl-ও সময় পরিবর্তন করতে দেয়:
# timedatectl set-time '2020-10-11 17:51:00'
CentOS-এ টাইমজোন সেট কিভাবে করবেন?
CentOS Linux-এ আপনার টাইমজোন অনুযায়ী সময় সেট করতে, আপনি এটি ম্যানুয়ালি পরিবর্তন করতে পারেন। এর জন্য আপনি দুটি টুল ব্যবহার করতে পারেন:
- timedatectl
- tzdata
timedatectl ব্যবহার করে টাইম জোন পরিবর্তন করতে এই কমান্ডটি চালান:
# timedatectl set-timezone Canada/Pacific
# date
অথবা আপনি tzdata ব্যবহার করতে পারেন। এই মেথড ব্যবহার করতে, /etc/localtime ফাইলটিকে আপনার প্রয়োজনীয় ফাইলের সাথে রিপ্লেস করুন। সকল টাইম জোনের তালিকা /usr/share/zoneinfo/ ডিরেক্টরিতে অবস্থিত। আসুন টাইমজোন Canada/Pacific-এ পরিবর্তন করি। বর্তমান locatime ফাইলটি ব্যাকআপ নিন:
# mv /etc/localtime /etc/localtime.bak
আপনার ইচ্ছামতো টাইমজোনের সাথে একটি সিমলিংক তৈরি করুন:
# ln -s /usr/share/zoneinfo/Canada/Pacific /etc/localtime
CentOS কনফিগার করুন NTP টাইম সার্ভারের সাথে টাইম সিঙ্ক্রোনাইজ করার জন্য
আপনি আপনার হোস্টে একটি এক্সটার্নাল NTP (Network Time Protocol) সার্ভারের সাথে স্বয়ংক্রিয় সময় সিঙ্ক্রোনাইজেশন কনফিগার করতে পারেন। এর জন্য, আপনাকে ntp সার্ভিস ইনস্টল করতে হবে। উদাহরণস্বরূপ, CentOS 7-এ yum ব্যবহার করে আপনি এটি ইনস্টল করতে পারেন:
# yum install ntp -y
ইনস্টলেশনের পর, ntpd সার্ভিস শুরু করুন এবং স্টার্টআপে যোগ করুন:
# systemctl start ntpd.service
# systemctl enable ntpd.service
নিশ্চিত করুন যে সার্ভিস চলছে:
# service ntpd status
Redirecting to /bin/systemctl status ntpd.service ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-10-11 15:37:33 +06; 5min ago Main PID: 3057 (ntpd) CGroup: /system.slice/ntpd.service └─3057 /usr/sbin/ntpd -u ntp:ntp -g
/etc/ntp.conf-এ সময় সিঙ্ক্রোনাইজ করার জন্য NTP সার্ভারগুলো নির্দিষ্ট করুন:
server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org
সময় ক্রমবর্ধমানভাবে সিঙ্ক্রোনাইজ হয়। যদি প্রথম NTP সার্ভার উপলব্ধ না থাকে, তবে দ্বিতীয়টি ব্যবহার করা হয়, ইত্যাদি।
আপনি নির্দিষ্ট NTP সার্ভারের সাথে ম্যানুয়ালি সময় সিঙ্ক্রোনাইজ করতে এই কমান্ডটি ব্যবহার করতে পারেন:
# ntpdate 192.168.1.23
ডিফল্টভাবে, ntpd "১১ মিনিট মোড" সক্ষম করে। এর মানে হলো সময় প্রতি ১১ মিনিটে সিঙ্ক্রোনাইজ হবে। আপনি যদি ntpd ডিমন ব্যবহার না করতে পারেন, তবে cron ব্যবহার করে সময় সিঙ্ক্রোনাইজেশন কনফিগার করতে পারেন। ক্রনে নিচের কমান্ডটি যোগ করুন:
# ntpdate pool.ntp.org
CentOS 8-এ Chronyd ব্যবহার করে টাইম সিঙ্ক্রোনাইজেশন
CentOS 8-এ আপনাকে chrony ব্যবহার করতে হবে সময় সিঙ্ক্রোনাইজেশনের জন্য, কারণ ntp এবং ntpdate অফিসিয়াল রিপোজিটরি থেকে সরানো হয়েছে।
chrony-এর প্রধান সুবিধাগুলো:
- সময় সিঙ্ক্রোনাইজেশনের উচ্চ গতি এবং নির্ভুলতা;
- মাস্টার ক্লক এক্সেস না থাকলে সঠিকভাবে কাজ করে (ntpd রেগুলার রিকোয়েস্ট চায়);
- ডিফল্টভাবে, সিঙ্ক্রোনাইজেশনের ঠিক পরের সময় পরিবর্তন করা হয় না যাতে চলমান প্রোগ্রামের জন্য কোনো সমস্যা না হয়;
- কম রিসোর্স ব্যবহার করে।
ডিফল্টভাবে, chrony CentOS Linux-এ ইতিমধ্যে ইনস্টল করা থাকে, কিন্তু কোনো কারণে আপনার কাছে এটি না থাকলে, ইনস্টল করুন:
# dnf install chrony
অন্য সার্ভিসের মত, ইনস্টলেশনের পর chrony-কে শুরু করতে হবে এবং স্টার্টআপে যোগ করতে হবে:
# systemctl start chronyd
# systemctl enable chronyd
chronyd সার্ভিস স্ট্যাটাস চেক করুন:
# systemctl status chronyd
নিশ্চিত করতে যে টাইম সিঙ্ক্রোনাইজেশন কাজ করছে, এই কমান্ডটি চালান:
# timedatectl status
NTP Service: active
Chrony কনফিগারেশন ফাইল হলো /etc/chrony.conf। সিঙ্ক্রোনাইজেশনের জন্য আপনি যে NTP সার্ভারগুলো ব্যবহার করতে চান তাদের তালিকা নির্দিষ্ট করুন। ntp-এর মত, chrony-রও একটি কমান্ড-লাইন ইন্টারফেস আছে: chronyc। বর্তমান টাইম সিঙ্ক্রোনাইজেশন অপশন সম্পর্কে তথ্য দেখতে এই কমান্ডটি চালান:
# chronyc tracking
সিঙ্ক্রোনাইজেশন সার্ভার সম্পর্কে তথ্য দেখতে:
# chronyc sources
আপনি যদি নির্দিষ্ট তারিখ এবং সময় ম্যানুয়ালি সেট করতে চান, তবে আপনি date ব্যবহার করতে পারেন, কিন্তু এর আগে chronyd ডিমন ডিজেবল করতে হবে।
CentOS-এ সাধারণ টাইম সিঙ্ক্রোনাইজেশন ইস্যু
এই সেকশনে, আমি timedatectl, ntp-এর সাথে কাজ করার সময় প্রদর্শিত টিপিক্যাল এররগুলো বর্ণনা করব।
ম্যানুয়াল টাইম সিঙ্ক্রোনাইজেশনের সময় আপনি এই এররটির সম্মুখীন হতে পারেন:
# ntpdate pool.ntp.org
ntpdate [26214]: the NTP socket is in use, exiting
এটি বোঝায় ntpd ডিমন চলছে এবং ম্যানুয়াল টাইম সিঙ্ক্রোনাইজেশন বাধা দিচ্ছে। ম্যানুয়ালি সময় সিঙ্ক্রোনাইজ করতে, ntpd ডিমন বন্ধ করুন:
# service ntpd stop
এবং সিঙ্ক্রোনাইজেশন আবার চালান।
timedatectl-এ কাজ করার সময় একই এররটি আসতে পারে:
Failed to set time: Automatic time synchronization is enabled.
আপনাকে timedatectl-এ অটোমেটিক সিঙ্ক ডিজেবল করতে হবে:
# timedatectl set-ntp 0
এবং আপনার ইচ্ছামতো সময় এবং তারিখ সেট করতে এই কমান্ডটি চালান:
# timedatectl set-time '2020-11-12 17:41:00'
টাইম জোন নিয়ে কাজ করার সময়, ممکن ہے সেগুলো আপনার সার্ভারে ইনস্টল করা নেই এবং আপনি localtime-এর জন্য সিমলিংক তৈরি করতে পারছেন না। আপনার হোস্টে টাইম জোন উপলব্ধ করতে, tzdata টুল ইনস্টল করুন:
# yum install tzdata -y
এছাড়া, ম্যানুয়াল সিঙ্ক্রোনাইজেশনের সময় আপনি নিচের মত কিছু এররের সম্মুখীন হতে পারেন:
11 Oct 21:11:19 ntpdate[897482]: sendto(xx.xx.xx.98): Operation not permitted
এই ক্ষেত্রে, আপনার firewalld/iptables রুল চেক করুন এবং নিশ্চিত করুন যে আপনার সার্ভারে UDP পোর্ট ১২৩ খোলা আছে। কিছু NTP হোস্ট যাচাই করার সময় উপলব্ধ নাও হতে পারে।