F.3. mdadm ਦਾ ਇਸਤੇਮਾਲ ਕਰਕੇ RAID ਆਧਾਰਿਤ ਅਤੇ ਬਹੁ-ਮਾਰਗ ਸਟੋਰੇਜ਼ ਸੰਰਚਨਾ

raidtools ਪੈਕੇਜ ਸਮੂਹ ਵਰਗੇ ਹੋਰ ਸੰਦ ਵਾਂਗ, mdadm ਕਮਾਂਡ ਬਹੁ-ਜੰਤਰ ਸਮੂਹ ਪ੍ਰਬੰਧਨ ਨਾਲ ਸੰਬੰਧਿਤ ਲੋੜੀਦੇ ਸਭ ਕਾਰਜ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਦੀ ਹੈ। ਇਸ ਭਾਗ ਵਿੱਚ ਵੇਖਾਇਆ ਗਿਆ ਹੈ ਕਿ ਕਿਵੇਂ mdadm ਕੰਮ ਕਰਦੀ ਹੈ:

F.3.1. mdadm ਨਾਲ ਇੱਕ ਰੇਡ (RAID) ਜੰਤਰ ਬਣਾਉਣਾ

ਇੱਕ ਰੇਡ (RAID) ਜੰਤਰ ਬਣਾਉਣ ਲਈ, /etc/mdadm.conf ਫਾਇਲ ਨੂੰ ਲੋੜੀਦੇ DEVICE ਅਤੇ ARRAY ਮੁੱਲਾਂ ਨਾਲ ਤਬਦੀਲ ਕਰੋ:

DEVICE /dev/sd[abcd]1
ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1

ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, DEVICE ਸਤਰ ਪ੍ਰਚਲਿਤ ਫਾਇਲ ਨਾਂ, ਜੋ ਕਿ ਹੇਠ ਲਿਖੇ SCSI ਜੰਤਰਾਂ ਨੂੰ ਪ੍ਰਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਇਸਤੇਮਾਲ ਕੀਤੀ ਜਾਦੀ ਹੈ (ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ glob(7) man ਸਫਾ ਵੇਖੋ):

ARRAY ਸਤਰ ਇੱਕ ਰੇਡ (RAID) ਜੰਤਰ (/dev/md0) ਪ੍ਰਭਾਸ਼ਿਤ ਕਰਦੀ ਹੈ, ਜੋ ਕਿ DEVICE ਸਤਰ ਰਾਹੀਂ ਪ੍ਰਭਾਸ਼ਿਤ SCSI ਜੰਤਰਾਂ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਦੀ ਹੈ।

ਕਿਸੇ ਰੇਡ (RAID) ਜੰਤਰਾਂ ਨੂੰ ਇਸਤੇਮਾਲ ਕਰਨ ਜਾਂ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ, /proc/mdstat ਫਾਇਲ ਕੋਈ ਸਰਗਰਮ ਰੇਡ (RAID) ਜੰਤਰ ਨਹੀਂ ਵੇਖਾਏਗੀ:

Personalities :
read_ahead not set
Event: 0
unused devices: <none>

ਅੱਗੇ, ਉੱਪਰਲੀ ਸੰਰਚਨਾ ਦਾ ਇਸਤੇਮਾਲ ਕਰੋ ਅਤੇ mdadm ਨੂੰ ਇੱਕ RAID 0 ਲੜੀ ਬਣਾਉਣ ਲਈ ਇਸਤੇਮਾਲ ਕਰੋ:

mdadm -C /dev/md0 --level=raid0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 \
/dev/sdd1
Continue creating array? yes
mdadm: array /dev/md0 started.

ਇੱਕ ਵਾਰ ਬਣਾਉਣ ਤੇ, ਰੇਡ (RAID) ਜੰਤਰ ਨੂੰ ਕਿਸੇ ਸਮੇਂ ਵੀ ਸਥਿਤੀ ਜਾਣਕਾਰੀ ਉਪਲੱਬਧ ਕਰਵਾਉਣ ਲਈ ਇਸਤੇਮਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਹੇਠ ਦਿੱਤੀ ਉਦਾਹਰਨ ਕਮਾਂਡmdadm --detail /dev/md0 ਦੀ ਆਉਟਪੁੱਟ ਵੇਖਾ ਰਹੀ ਹੈ:

/dev/md0:
Version : 00.90.00
Creation Time : Mon Mar  1 13:49:10 2004
Raid Level : raid0
Array Size : 15621632 (14.90 GiB 15.100 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Mar  1 13:49:10 2004
State : dirty, no-errors
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Chunk Size : 64K

Number   Major   Minor   RaidDevice State
0       8        1        0      active sync   /dev/sda1
1       8       17        1      active sync   /dev/sdb1
2       8       33        2      active sync   /dev/sdc1
3       8       49        3      active sync   /dev/sdd1
UUID : 25c0f2a1:e882dfc0:c0fe135e:6940d932
Events : 0.1

F.3.2. mdadm ਨਾਲ ਬਹੁ-ਮਾਰਗ ਜੰਤਰ ਬਣਾਉਣਾ

ਰੇਡ(RAID) ਲੜੀ ਬਣਾਉਣ ਤੋਂ ਇਲਾਵਾ, mdadm ਨੂੰ ਵੱਖ ਵੱਖ SCSI LUN (ਡਿਸਕ ਡਰਾਇਵ) ਲਈ ਇੱਕ ਤੋਂ ਵਧੇਰੇ I/O ਮਾਰਗ ਨੂੰ ਜੰਤਰ ਸਹਿਯੋਗ ਦੀ ਸਹੂਲਤ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇਸਤੇਮਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਬਹੁ-ਮਾਰਗੀ ਸਟੋਰੇਜ਼ ਦਾ ਮਕਸਦ ਜੰਤਰ ਅਸਫਲਤਾ ਜਾਂ ਵੱਖ-ਵੱਖ ਥਾਵਾਂ ਹੋਣ ਦੀ ਸਥਿਤੀ ਹੋਣ ਦੀ ਹਾਲਾਤ ਵਿੱਚ ਡਾਟਾ ਉਪਲੱਬਧ ਹੋਣ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ ਹੈ। ਕਿਉਕਿ ਇਹ ਸੰਰਚਨਾ ਸਾਂਝੀ SCSI LUN (ਡਿਸਕ ਡਰਾਇਵ) ਵਰਤਣ ਲਈ ਬਹੁ-ਮਾਰਗ (ਹਰ ਇੱਕ ਵੱਖਰੇ ਕੰਟਰੋਲਰ ਵਾਂਗ ਕੰਮ ਕਰਦਾ ਹੈ), ਲੀਨਕਸ (Linux) ਕਰਨਲ ਹਰ ਸਾਂਝੀ ਡਰਾਇਵ ਨੂੰ ਇੱਕ ਵਾਰ ਹਰ ਮਾਰਗ "ਰਾਹੀਂ" ਇਸਤੇਮਾਲ ਕਰਦਾ ਹੈ। ਹੋਰ ਸ਼ਬਦਾਂ ਵਿੱਚ, SCSI LUN (ਡਿਸਕ ਡਰਾਇਵ), ਜਿਸ ਨੂੰ /dev/sda ਦੇ ਤੌਰ ਤੇ ਜਾਣਿਆ ਜਾਦਾ ਹੈ, ਨੂੰ /dev/sdb, /dev/sdc ਅਤੇ ਹੋਰ ਢੰਗਾਂ ਰਾਹੀਂ ਖਾਸ ਸੰਰਚਨਾ ਦੇ ਆਧਾਰ ਤੇ ਇਸਤੇਮਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਇੱਕ ਇੱਕਲਾ ਜੰਤਰ ਉਪਲੱਬਧ ਕਰਵਾਉਣ ਲਈ, ਜੋ ਕਿ ਇੱਕ I/O ਮਾਰਗ ਦੇ ਅਸਫਲ ਜਾਂ ਸੰਤ੍ਰਿਪਤ ਹੋਣ ਉਪਰੰਤ ਵੀ ਇਸਤੇਮਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, mdadm ਵਿੱਚ ਇੱਕ ਵਾਧੂ ਮੁੱਲ ਇਸ ਦੀ ––level ਚੋਣ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਜਾਦਾ ਹੈ। ਇਹ ਮੁੱਲ — multipath — Linux ਕਰਨਲ ਵਿੱਚ md ਪਰਤ ਨੂੰ ਮੁੜ-ਮਾਰਗ I/O ਬੇਨਤੀਆਂ ਨੂੰ ਇੱਕ ਮਾਰਗ ਤੋਂ ਹੋਰ ਮਾਰਗ ਤੇ ਭੇਜ ਦਿੰਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਇੱਕ I/O ਮਾਰਗ ਅਸਫਲ ਹੋ ਜਾਦਾ ਹੈ।

ਇੱਕ ਬਹੁ-ਮਾਰਗ ਜੰਤਰ ਬਣਾਉਣ ਲਈ, /etc/mdadm.conf ਫਾਇਲ ਵਿੱਚ ਆਪਣੀ ਜੰਤਰ ਸੰਰਚਨਾ ਵੇਖਾਉਣ ਲਈ DEVICE ਅਤੇ ARRAYਦੇ ਮੁੱਲ ਪ੍ਰਭਾਸ਼ਿਤ ਕਰੋ।

ਸੂਚਨਾਸੂਚਨਾ
 

ਪਿਛਲੀ ਰੇਡ (RAID) ਉਦਾਹਰਨ (ਜਿੱਥੇ ਕਿ ਹਰ ਨਿਰਧਾਰਿਤ ਜੰਤਰ /etc/mdadm.conf ਵੱਖਰੀ ਭੌਤਿਕ ਡਿਸਕ ਜੰਤਰ ਵੇਖਾਉਣਾ ਚਾਹੀਦਾ ਹੈ) ਦੇ ਉਲਟ, ਇਸ ਫਾਇਲ ਵਿੱਚ ਹਰ ਜੰਤਰ ਇੱਕੋ ਸਾਂਝੀ ਡਿਸਕ ਡਰਾਇਵ ਵੇਖਾਉਦਾ ਹੈ।

ਕਮਾਂਡ ਨੂੰ ਇੱਕ ਰੇਡ (RAID) ਜੰਤਰ ਵਾਂਗ ਇੱਕ ਬਹੁ-ਮਾਰਗ ਜੰਤਰ ਬਣਾਉਣ ਲਈ ਇਸਤੇਮਾਲ ਕੀਤੀ ਜਾਦੀ ਹੈ, ਫ਼ਰਕ ਸਿਰਫ ਇੱਕ ਰੇਡ (RAID) ਪੱਧਰ ਮੁੱਲ ਨੂੰ multipath ਮੁੱਲ ਨਾਲ ਤਬਦੀਲ ਕਰਨ ਦਾ ਹੈ:

mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1  
/dev/sdc1 /dev/sdd1
Continue creating array? yes
mdadm: array /dev/md0 started.

mdadm ਕਮਾਂਡ ਦੀ ਲੰਬਾਈ ਕਰਕੇ, ਇਸ ਨੂੰ ਦੋ ਸਤਰਾਂ ਵਿੱਚ ਵੰਡਿਆ ਗਿਆ ਹੈ।

ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਇੱਕ SCSI LUN ਦੀ ਜੰਤਰ ਚਾਰ ਵੱਖਰੇ SCSI ਜੰਤਰ ਰੱਖਦਾ ਹੈ, ਹਰ ਇੱਕ ਸਟੋਰੇਜ਼ ਨੂੰ ਇੱਕ ਵੱਖਰੇ ਮਾਰਗ ਰਾਹੀਂ ਇਸਤੇਮਾਲ ਕੀਤਾ ਜਾਦਾ ਹੈ। ਇੱਕ ਵਾਰ ਇੱਕ ਜੰਤਰ /dev/md0 ਬਣ ਗਿਆ, ਤਾਂ ਸਭ I/O ਕਾਰਵਾਈਆਂ, ਜੋ ਕਿ /dev/md0 ਲਈ ਇਸ਼ਾਰਾ ਕਰਦੀਆਂ ਹਨ, ਨੂੰ /dev/sda1, /dev/sdb1, /dev/sdc1, ਜਾਂ /dev/sdd1 ਲਈ ਨਿਰਦੇਸ਼ਿਤ ਕਰ ਦਿੱਤਾ ਜਾਦਾ ਹੈ (ਇਸ ਦੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਇਸ ਸਮੇਂ ਕਿਹੜਾ ਮਾਰਗ ਸਰਗਰਮ ਹੈ ਅਤੇ ਕਾਰਵਾਈ ਅਧੀਨ ਹੈ)।

/dev/md0 ਦੀ ਸੰਰਚਨਾ ਨੇੜੇ ਤੋਂ ਵੇਖਣ ਲਈ, ਕਮਾਂਡ mdadm --detail /dev/md0 ਰਾਹੀਂ ਇਸ ਨੂੰ ਬਹੁ-ਮਾਰਗ ਜੰਤਰ ਦੇ ਤੌਰ ਤੇ ਜਾਂਚਿਆ ਜਾ ਸਕਦਾ ਹੈ:

/dev/md0:
Version : 00.90.00
Creation Time : Tue Mar  2 10:56:37 2004
Raid Level : multipath
Array Size : 3905408 (3.72 GiB 3.100 GB)
Raid Devices : 1
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Tue Mar  2 10:56:37 2004
State : dirty, no-errors
Active Devices : 1
Working Devices : 4
Failed Devices : 0
Spare Devices : 3

Number   Major   Minor   RaidDevice State
0       8       49        0      active sync   /dev/sdd1
1       8       17        1      spare   /dev/sdb1
2       8       33        2      spare   /dev/sdc1
3       8        1        3      spare   /dev/sda1
UUID : 4b564608:fa01c716:550bd8ff:735d92dc
Events : 0.1

ਕਮਾਂਡ mdadm ਦਾ ਇੱਕ ਗੁਣ ਹੈ ਕਿ ਇਹ ਹੈ ਕਿ ਇਹ ਇੱਕ ਜੰਤਰ (ਇਹ ਇੱਕ ਰੇਡ (RAID) ਲੜੀ ਜਾਂ ਬਹੁ-ਮਾਰਗ ਸੰਰਚਨਾ ਵਿੱਚ ਇੱਕ ਮਾਰਗ ਹੋ ਸਕਦਾ ਹੈ) ਨੂੰ ਇੱਕ ਕਾਰਵਾਈ ਸੰਰਚਨਾ ਵਿੱਚੋਂ ਹਟਾਉਣ ਲਈ ਮਜਬੂਰ ਕਰ ਸਕਦੀ ਹੈ। ਹੇਠ ਦਿੱਤੀ ਉਦਾਹਰਨ ਵਿੱਚ, /dev/sda1 ਨੂੰ ਨਿਕਾਰਾ ਕਰਾਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤਦ ਇਸ ਨੂੰ ਹਟਾਇਆ ਜਾਵੇਗਾ, ਅਤੇ ਆਖਰ ਇਸ ਨੂੰ ਸੰਰਚਨਾ ਵਿੱਚ ਵਾਪਿਸ ਸ਼ਾਮਿਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਬਹੁ-ਮਾਰਗ ਸੰਰਚਨਾ ਵਿੱਚ, ਇਹ ਕਾਰਵਾਈਆਂ ਕਿਸੇ ਸਮੇਂ ਵੀ ਹੋਣ ਵਾਲੀ I/O ਕਾਰਵਾਈ ਨੂੰ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰਦੀਆਂ ਹਨ:

# mdadm /dev/md0 -f /dev/sda1
mdadm: set /dev/sda1 faulty in /dev/md0
# mdadm /dev/md0 -r /dev/sda1
mdadm: hot removed /dev/sda1
# mdadm /dev/md0 -a /dev/sda1
mdadm: hot added /dev/sda1
#