কম্পিউটার টিউটোরিয়াল

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

MDADM হল একটি টুল যা লিনাক্সে সফটওয়্যার RAID তৈরি এবং পরিচালনা করতে দেয়। এই লেখায় আমরা দেখাব কিভাবে mdadm (multiple disks admin) ব্যবহার করে RAID অ্যারে স্টোরেজ তৈরি করবেন, ডিস্ক যোগ ও পরিচালনা করবেন, হট-স্পেয়ার যোগ করবেন এবং আরও অনেক কিছু।

mdadm: সফটওয়্যার RAID ম্যানেজমেন্ট টুল ইনস্টলেশন কীভাবে করবেন?

mdadm ইনস্টল করতে, ইনস্টলেশন কমান্ড চালান:

  • CentOS/Red Hat-এর জন্য (yum/dnf ব্যবহার করা হয়): yum install mdadm
  • Ubuntu/Debian-এর জন্য: apt-get install mdadm

mdadm এবং ডিপেনডেন্ট লাইব্রেরিগুলো ইনস্টল হবে:

Running transaction Installing : libreport-filesystem-2.1.11-43.el7.centos.x86_64 1/2 Installing : mdadm-4.1-1.el7.x86_64 2/2 Verifying : mdadm-4.1-1.el7.x86_64 1/2 Verifying : libreport-filesystem-2.1.11-43.el7.centos.x86_64 2/2 Installed: mdadm.x86_64 0:4.1-1.el7 Dependency Installed: libreport-filesystem.x86_64 0:2.1.11-43.el7.centos Complete! 

লিনাক্সে ২টি ডিস্ক ব্যবহার করে RAID 1 (মিরর) তৈরি

আমার লিনাক্স সার্ভারে দুটি অতিরিক্ত ডিস্ক ইনস্টল করা আছে, এবং আমি সেগুলোর ওপর একটি সফটওয়্যার মিরর তৈরি করতে চাই (RAID1)। ড্রাইভগুলো খালি। সব থেকে पहले, আপনাকে RAID-এ যোগ করা ডিস্কগুলোর সব সুপারব্লক জিরো করতে হবে:

# mdadm --zero-superblock --force /dev/vd{b,c}

আমার দুটি ক্লিন ডিস্ক আছে: vdb এবং vdc।

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

mdadm: Unrecognised md component device - /dev/vdb mdadm: Unrecognised md component device - /dev/vdc

এই লিস্টিংয়ের মানে হল ডিস্ক দুটোই কখনো কোনো অ্যারেতে যোগ করা হয়নি।

RAID1 সফটওয়্যার অ্যারে দুটি ডিস্ক থেকে /dev/md0 ডিভাইসে তৈরি করতে এই কমান্ড ব্যবহার করুন:

# mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/vd{b,c}

যেখানে ‘-l 1’ হল অ্যারে টাইপ (আমাদের কেসে RAID1,

এবং ‘-n 2’ হল অ্যারেতে যোগ করা ডিস্কের সংখ্যা।

আপনি যদি RAID0 (Stripe) তৈরি করতে চান পড়া/লেখার গতি বাড়াতে প্যারালেল কম্যান্ড একাধিক ফিজিক্যাল ডিস্কের মধ্যে বিতরণ করে, তবে এই কমান্ড ব্যবহার করুন:

# mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/vdb /dev/vdc

RAID 5 তিন বা ততোধিক ড্রাইভের জন্য:

# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/vdb /dev/ vdc /dev/vdd

কমান্ডগুলো লিখার পর, অ্যাকশনগুলো কনফার্ম করুন এবং সফটওয়্যার RAID তৈরি হবে:

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

আপনি যদি আপনার ডিস্কের তথ্য লিস্ট করান, তবে আপনার RAID md0 ড্রাইভটি দেখতে পাবেন:

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 20G 0 disk ├─vda1 253:1 0 512M 0 part /boot └─vda2 253:2 0 19.5G 0 part / vdb 253:16 0 20G 0 disk └─md0 9:0 0 20G 0 raid1 vdc 253:32 0 20G 0 disk └─md0 9:0 0 20G 0 raid1

আপনার RAID1 ড্রাইভে ext4 ফাইল সিস্টেম তৈরি করতে এই কমান্ড চালান:

# mkfs.ext4 /dev/md0

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

একটি ব্যাকআপ ডিরেক্টরি তৈরি করুন এবং RAID ডিভাইসটি সেটিতে মাউন্ট করুন:

# mkdir /backup
# mount /dev/md0 /backup/
# df -h

Filesystem Size Used Avail Use% Mounted on ............. ............. /dev/md0 20G 45M 19G 1% /backup

অ্যারেটি কোনো এরর ছাড়া মাউন্ট হয়েছে। প্রতিবার ম্যানুয়ালি মাউন্ট না করতে হয় সেজন্য fstab-এ নিচের পরিবর্তন করুন:

# nano /etc/fstab

/dev/md0 /backup ext4 defaults 1 2

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

RAID অ্যারের স্টেট বা ইন্টিগ্রিটি চেক কীভাবে করবেন?

অ্যারেতে ডেটা ইন্টিগ্রিটি চেক করতে নিচের কমান্ড ব্যবহার করুন:

#echo 'check' > /sys/block/md0/md/sync_action

তারপর এই ফাইলের আউটপুট দেখুন:

#cat /sys/block/md0/md/mismatch_cnt

আপনি যদি 0 পান, আপনার অ্যারে ঠিক আছে:

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

চেক বন্ধ করতে, নিচের কমান্ড চালান:

#echo 'idle' > /sys/block/md0/md/sync_action

সার্ভারে উপলব্ধ সব RAID-এর স্টেট চেক করতে এই কমান্ড ব্যবহার করুন:

# cat /proc/mdstat

Personalities : [raid1] md0 : active raid1 vdc[1] vdb[0] 20954112 blocks super 1.2 [2/2] [UU]

নির্দিষ্ট RAID সম্পর্কে আরও বিস্তারিত তথ্য দেখতে এই কমান্ড ব্যবহার করুন:

# mdadm -D /dev/md0

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

কমান্ড লিস্টিং-এর প্রধান আইটেমগুলো বিবেচনা করা যাক:

  • Version – মেটাডেটা ভার্সন
  • Creation Time – RAID তৈরির তারিখ এবং সময়
  • Raid Level – RAID অ্যারের লেভেল
  • Array Size – RAID ডিস্ক স্পেসের সাইজ
  • Used Dev Size – ডিভাইসগুলোর ব্যবহৃত স্পেস সাইজ
  • Raid Device – RAID-এ ডিস্কের সংখ্যা
  • Total Devices – RAID-এ যোগ করা ডিস্কের সংখ্যা
  • State – বর্তমান স্টেট (clean — ঠিক আছে)
  • Active Devices – RAID-এ এক্টিভ ডিস্কের সংখ্যা
  • Working Devises – RAID-এ ওয়ার্কিং ডিস্কের সংখ্যা
  • Failed Devices – RAID-এ ব্যর্থ ডিভাইসের সংখ্যা
  • Spare Devices – RAID-এ স্পেয়ার ডিস্কের সংখ্যা
  • Consistency Policy – ফেইলচারের পর সিঙ্ক্রোনাইজেশন টাইপ সেট করে, rsync হল RAID অ্যারে রিকভারির পর পূর্ণ সিঙ্ক্রোনাইজেশন (bitmap, journal, ppl মোড উপলব্ধ)
  • UUID – RAID অ্যারে আইডেন্টিফায়ার

fdisk ব্যবহার করে সংক্ষিপ্ত তথ্য দেখতে পারেন:

# fdisk -l /dev/md0

Disk /dev/md0: 21.5 GB, 21457010688 bytes, 41908224 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes

RAID-এ ডিস্ক ফেইলচার থেকে রিকভারি, ডিস্ক রিপ্লেসমেন্ট

RAID-এ একটি ডিস্ক ফেইল বা ক্ষতিগ্রস্ত হলে, আপনি সেটিকে অন্য একটি দিয়ে রিপ্লেস করতে পারেন। সব থেকে पहले, খুঁজে বের করুন ডিস্কটি ক্ষতিগ্রস্ত কিনা এবং রিপ্লেসমেন্টের প্রয়োজন আছে কিনা।

# cat /proc/mdstat

Personalities : [raid1] md0 : active raid1 vdb[0] 20954112 blocks super 1.2 [2/1] [U_]

পূর্বের কমান্ড থেকে আপনি দেখতে পাচ্ছেন যে শুধু একটি ডিস্ক এক্টিভ। [U_] বোঝায় সমস্যা আছে। দুটি ডিস্কই হেলথি হলে আউটপুট [UU] হয়।

RAID সম্পর্কে বিস্তারিত তথ্যও দেখায় সমস্যা আছে:

# mdadm -D /dev/md0

/dev/md0: Version : 1.2 Creation Time : Tue Dec 31 12:39:22 2020 Raid Level : raid1 Array Size : 20954112 (19.98 GiB 21.46 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Tue Dec 31 14:41:13 2020 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 1 State : clean, degraded

– শেষ লাইনটি দেখায় RAID-এ একটি ডিস্ক ক্ষতিগ্রস্ত।

আমাদের কেসে, /dev/vdc রিপ্লেস করতে হবে। অ্যারে রিস্টোর করতে, আপনাকে ক্ষতিগ্রস্ত ডিস্কটি সরিয়ে একটি নতুন যোগ করতে হবে।

ফেইলড ড্রাইভ সরান:

# mdadm /dev/md0 --remove /dev/vdc

অ্যারেতে একটি নতুন ডিস্ক যোগ করুন:

# mdadm /dev/md0 --add /dev/vdd

নতুন ডিস্ক যোগ করার সাথে সাথে ডিস্ক রিকভারি স্বয়ংক্রিয়ভাবে শুরু হবে:

# mdadm -D /dev/md0

/dev/md0: Version : 1.2 Creation Time : Tue Dec 31 12:39:22 2020 Raid Level : raid1 Array Size : 20954112 (19.98 GiB 21.46 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Tue Dec 31 14:50:20 2020 State : clean, degraded, recovering Active Devices : 1 Working Devices : 2 Failed Devices : 0 Spare Devices : 1 Consistency Policy : resync Rebuild Status : 48% complete Name : host1:0 (local to host host1) UUID : 9d59b1fb:7b0a7b6d:15a75459:8b1637a2 Events : 42 Number Major Minor RaidDevice State 0 253 16 0 active sync /dev/vdb 2 253 48 1 spare rebuilding /dev/vdd rebuild Status : 48% complete shows the current array recovery state. spare rebuilding /dev/vdd shows which disk is being added to the array. After rebuilding the array, check its state: State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0

লিনাক্সে সফটওয়্যার RAID-এ ডিস্ক যোগ বা বাদ দেওয়ার উপায়

আপনি যদি পূর্বে তৈরি করা mdadm RAID ডিভাইসটি সরাতে চান, তবে এটি আনমাউন্ট করুন:

# umount /backup

তারপর এই কমান্ড চালান:

# mdadm -S /dev/md0

mdadm: stopped /dev/md0

RAID অ্যারে ধ্বংস করার পর, এটি আর একটি পৃথক ডিস্ক ডিভাইস হিসেবে ডিটেক্ট হবে না:

# mdadm -S /dev/md0

mdadm: error opening /dev/md0: No such file or directory

আপনি সকল সংযুক্ত ড্রাইভ স্ক্যান করতে পারেন এবং ফিজিক্যাল ড্রাইভের মেটাডেটা অনুযায়ী পূর্বে সরানো (ফেইলড) RAID ডিভাইসটি পুনরায় তৈরি করতে পারেন। নিচের কমান্ড চালান:

# mdadm --assemble —scan

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

আপনি যদি অ্যারে থেকে একটি ওয়ার্কিং ড্রাইভ সরিয়ে রিপ্লেস করতে চান, তবে প্রথমে ড্রাইভটি ফেইলড হিসেবে ট্যাগ করুন:

# mdadm /dev/md0 --fail /dev/vdc

তারপর এটি এই কমান্ড দিয়ে সরিয়ে দিন:

# mdadm /dev/md0 --remove /dev/vdc

আপনি একটি নতুন ডিস্ক যোগ করতে পারেন, ঠিক ফেইলড ড্রাইভের কেসের মতো:

# mdadm /dev/md0 --add /dev/vdd

MDADM অ্যারেতে হট-স্পেয়ার ড্রাইভ যোগ কীভাবে করবেন?

আপনি একটি অতিরিক্ত হট-স্পেয়ার ড্রাইভ যোগ করতে পারেন যাতে একটিভ ডিস্কের যেকোনোটি ফেইল হলে RAID অ্যারে দ্রুত রিবিল্ড হয়। আপনি যে md ডিভাইসটি চান সেটিতে একটি ফ্রি ডিস্ক যোগ করুন:

# mdadm /dev/md0 --add /dev/vdc

RAID স্ট্যাটস চেক করলে, ডিস্কটি স্পেয়ার হিসেবে দেখাবে:

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

হট-স്വাপ কাজ করছে কিনা নিশ্চিত করতে, যেকোনো ড্রাইভকে ফেইলড হিসেবে মার্ক করুন এবং RAID স্ট্যাটস চেক করুন:

# mdadm /dev/md0 --fail /dev/vdb

চেক করার পর, আপনি দেখবেন অ্যারে রিবিল্ড শুরু হয়েছে।

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

/dev/vdb ডিস্কটি ফেইলড হিসেবে মার্ক করা হয়েছে, এবং হট-স্পেয়ার ডিস্কটি এক্টিভ RAID ডিস্কের একটি হয়ে গেছে। সুতরাং রিবিল্ড প্রসেস শুরু হয়েছে।

অ্যারেতে একটি অতিরিক্ত ওয়ার্কিং ডিস্ক যোগ করতে, আপনাকে এই দুটি ধাপ মেনে চলতে হবে।

অ্যারেতে একটি খালি ড্রাইভ যোগ করুন:

# mdadm /dev/md0 --add /dev/vdb

এখন এই ডিস্কটি হট-স্পেয়ার হিসেবে দেখাবে। এটিকে এক্টিভ করতে, md RAID ডিভাইসটি এক্সপ্যান্ড করুন:

# mdadm -G /dev/md0 —raid-devices=3

তারপর অ্যারেটি রিবিল্ড হবে:

MDADM ব্যবহার করে লিনাক্সে সফটওয়্যার RAID কনফিগারেশন

রিবিল্ড শেষ হলে, সব ডিস্ক এক্টিভ হয়ে যাবে:

Number Major Minor RaidDevice State 3 253 32 0 active sync /dev/vdc 2 253 48 1 active sync /dev/vdd 4 253 16 2 active sync /dev/vdb

MDADM RAID অ্যারে কীভাবে মুছে ফেলবেন?

আপনি যদি আপনার সফটওয়্যার RAID ড্রাইভটি دائماً মুছে ফেলতে চান, তবে নিচের স্কিম ব্যবহার করুন:

# umount /backup – অ্যারেটি ডিরেক্টরি থেকে আনমাউন্ট করুন

# mdadm -S /dev/md0 — RAID ডিভাইস বন্ধ করুন

তারপর সেটি যেসব ডিস্ক দিয়ে তৈরি করা হয়েছিল সেগুলোর সব সুপারব্লক ক্লিয়ার করুন:

# mdadm --zero-superblock /dev/vdb
# mdadm --zero-superblock /dev/vdc

Mdmonitor: RAID স্টেট মনিটরিং ও ইমেইল নোটিফিকেশন

mdmonitor ডেমন RAID-এর স্ট্যাটাস মনিটর করতে ব্যবহৃত হতে পারে। প্রথমে, আপনাকে বর্তমান অ্যারে কনফিগারেশন ধারণকারী /etc/mdadm.conf ফাইল তৈরি করতে হবে:

# mdadm –detail –scan > /etc/mdadm.conf

mdadm.conf ফাইল স্বয়ংক্রিয়ভাবে তৈরি হয় না। আপনাকে ম্যানুয়ালি এটি তৈরি এবং আপডেট করতে হবে।

/etc/mdadm.conf-এ অ্যাডমিনিস্ট্রেটর ইমেইল ঠিকানা যোগ করুন যাতে RAID-এ কোনো সমস্যা বা ফেইলড ডিস্ক হলে আপনাকে ইমেইল দিয়ে জানানো হয়:

MAILADDR raidadmin@woshub.com

তারপর systemctl ব্যবহার করে mdmonitor সার্ভিস রিস্টার্ট করুন:

# systemctl restart mdmonitor

তবে সিস্টেম আপনাকে mdadm এরর বা ফেইলড ডিস্ক হলে ই-মেইল দিয়ে জানাবে।

Inactive MDADM RAID

হার্ডওয়্যার ফেইলচার বা আকস্মিক শাটডাউনের কারণে, সফটওয়্যার RAID অ্যারে ইনएक্টিভ হয়ে যেতে পারে। সব ড্রাইভ ইনएक্টিভ হিসেবে মার্ক করা থাকে, কিন্তু কোনো এরর থাকে না।

# cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : inactive vdc[1] vdb[0] 20954112 blocks super unused devices: <none>

এই কেসে, আপনাকে অ্যারেটি এই কমান্ড ব্যবহার করে বন্ধ করতে হবে:

# mdadm --stop /dev/md0

এবং পুনরায় অ্যাসেম্বল করুন:

# mdadm --assemble --scan –force

যদি md ডিভাইস /etc/fstab-এ নিবন্ধিত থাকে, তবে এটি এই কমান্ড দিয়ে রিমাউন্ট করুন:

# mount -a

ইনস্টল করা OS-এ সফটওয়্যার RAID তৈরি করার কিছু উপায় আছে। এই কেসে, আপনাকে ম্যানুয়ালি সব পার্টিশন টেবিল একটি নতুন ডিস্কে কপি করতে হবে, এবং সিস্টেম ডিস্কের কন্টেন্ট ম্যানুয়ালি RAID-এ সরাতে হবে যেটি একটি ডিস্ক দিয়ে বানানো। তারপর প্রথম ডিস্কটি ক্লিন আপ করে আপনার RAID-এ যোগ করুন, initramfs এবং GRUB লোডার এডিট করুন। সুতরাং, সার্ভার ডিপ্লয়মেন্টের সময় সফটওয়্যার RAID-এ CentOS ইনস্টলেশন মোড সিলেক্ট করা ভালো।

mdadm লিনাক্সে সফটওয়্যার RAID পরিচালনাকে সহজ করে দেয়। এই লেখায় আমি টুলটির সাথে কাজ করার প্রধান বিষয়গুলো বর্ণনা করেছি, এবং mdadm ব্যবহার করে RAID-এ কাজ করার সময় উঠতে পারে এমন সাধারণ প্রশ্নগুলো কভার করেছি।

  1. লিনাক্সে OpenSSL ব্যবহার করে SSL সার্টিফিকেট জেনারেট করা

  2. লিনাক্সে du কমান্ড ব্যবহার করে ডিস্ক স্পেস ফ്രീ (Free Up) করা

  3. কালি লিনাক্স ব্যবহার করে অ্যান্ড্রয়েড ফোন অ্যাক্সেস করা

  4. লিনাক্সে এন্টিভাইরাস সফটওয়্যারের প্রয়োজন কি নিশ্চিত?