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: 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 তৈরি হবে:

আপনি যদি আপনার ডিস্কের তথ্য লিস্ট করান, তবে আপনার 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

একটি ব্যাকআপ ডিরেক্টরি তৈরি করুন এবং 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

RAID অ্যারের স্টেট বা ইন্টিগ্রিটি চেক কীভাবে করবেন?
অ্যারেতে ডেটা ইন্টিগ্রিটি চেক করতে নিচের কমান্ড ব্যবহার করুন:
#echo 'check' > /sys/block/md0/md/sync_action
তারপর এই ফাইলের আউটপুট দেখুন:
#cat /sys/block/md0/md/mismatch_cnt
আপনি যদি 0 পান, আপনার অ্যারে ঠিক আছে:

চেক বন্ধ করতে, নিচের কমান্ড চালান:
#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

কমান্ড লিস্টিং-এর প্রধান আইটেমগুলো বিবেচনা করা যাক:
- 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 /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 স্ট্যাটস চেক করলে, ডিস্কটি স্পেয়ার হিসেবে দেখাবে:

হট-স്വাপ কাজ করছে কিনা নিশ্চিত করতে, যেকোনো ড্রাইভকে ফেইলড হিসেবে মার্ক করুন এবং RAID স্ট্যাটস চেক করুন:
# mdadm /dev/md0 --fail /dev/vdb
চেক করার পর, আপনি দেখবেন অ্যারে রিবিল্ড শুরু হয়েছে।

/dev/vdb ডিস্কটি ফেইলড হিসেবে মার্ক করা হয়েছে, এবং হট-স্পেয়ার ডিস্কটি এক্টিভ RAID ডিস্কের একটি হয়ে গেছে। সুতরাং রিবিল্ড প্রসেস শুরু হয়েছে।
অ্যারেতে একটি অতিরিক্ত ওয়ার্কিং ডিস্ক যোগ করতে, আপনাকে এই দুটি ধাপ মেনে চলতে হবে।
অ্যারেতে একটি খালি ড্রাইভ যোগ করুন:
# mdadm /dev/md0 --add /dev/vdb
এখন এই ডিস্কটি হট-স্পেয়ার হিসেবে দেখাবে। এটিকে এক্টিভ করতে, md RAID ডিভাইসটি এক্সপ্যান্ড করুন:
# mdadm -G /dev/md0 —raid-devices=3
তারপর অ্যারেটি রিবিল্ড হবে:

রিবিল্ড শেষ হলে, সব ডিস্ক এক্টিভ হয়ে যাবে:
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-এ কাজ করার সময় উঠতে পারে এমন সাধারণ প্রশ্নগুলো কভার করেছি।