RHEL/CentOS üzərindən multipathing – 1-ci hissə

Salamlar,
Bu günki məqaləmizdə, RHEL ailəsinə aid olan linux distributivlərində multipathing sazlamaları ilə tanış olacağıq. Məqaləni yazmadan öncə, adı çəkilən bəzi terminlər haqqında, wikipediadan məlumat əldə edə bilərsiniz :
HBA – http://goo.gl/WlD0lo
SAN-Switch (və ya Fibre Channel switch) – http://goo.gl/Qc1YZU
WWN ( və ya WWID, WWPN) – http://goo.gl/vL8SKX
Məqalə, ümumilikdə,  aşağıdakı 2 hissədən ibarət olacaq:

  • MPP/RDAC drayverləri vasitəsilə multipathing
  • Native alətlər vasitəsilə multipathing

İlk öncə, multipathing barəsində – multipathing nədir? Multipathing – serverin, eyni yaddaş avadanlığını 1 neçə müxtəlif fiziki yolla görməsidir. Çox zaman, mərkəzləşdirilmiş yaddaş avadanlığında yerləşdirilmiş informasiya kifayət qədər kritik əhəmiyyətə malik olur ( məsələn, verilənlər bazasının faylları) və mövcud tək bağlantının hər hansı səbəbdən sıradan çıxması nəticəsində bazanın əlçatmaz olması qəbuledilməzdir. Belə hallardan qorunmaq üçün, ən yaxşı təcrübələrə uyğun olaraq, mərkəzi yaddaş qurğusuna gedən yolda istifadə olunan bütün fiziki avadanlıqların ( HBA, switch, controller və s) 2 nüsxədə istifadəsinə nail olmaq olar. Məsələn, aşağıdakı sxemə baxsaq, storage avadanlığında yerləşən yaddaş massivinə server tərəfdən 2 fiziki yol mövcuddur və bu yollardan hər hansı birində problem yaranarsa, trafik digər yola yönləndiriləcək :

mpath_rounded
1.1 2 fiziki yollu sxem

 

HBA1 → Controller1
HBA2 → Controller2

Sxeme 1 SANswitch əlavə etsək, mövcud yolların sayı 4-ə çatır:

mpath_san_rounded

1.2   4 fiziki yollu sxem

HBA2 → Controller2
HBA2 → Controller1
HBA1 → Controller1
HBA1 → Controller2

Fiziki yolların artırılması bizə yüksək dayanıqlılıq imkanı versə də, ortaya bir məsələ çıxır – linux ƏS-lərində, ənənəvi olaraq, hər yaddaş avadanlığının təyin edilməsində fiziki yolun unikallığı rol oynadığına görə, hər fiziki yolla təqdim olunmuş yaddaş massivi fərqli avadanlıq kimi görünür. Məsələn, multipathing drayverləri olmadan, 1.2 şəklində göstərilən sxem formasında təqdim olunan vahid 160 GB-lıq yaddaş massivi sistem tərəfindən 4 fərqli avadanlıq kimi görünür:

[[email protected] ~]# lsscsi
[0:2:0:0] disk IBM ServeRAID M5015 2.70 /dev/sda

[1:0:0:240] disk IBM 1746 FAStT 1070 /dev/sdb
[1:0:1:240] disk IBM 1746 FAStT 1070 /dev/sdc
[2:0:0:240] disk IBM 1746 FAStT 1070 /dev/sdd
[2:0:1:240] disk IBM 1746 FAStT 1070 /dev/sde
[3:0:0:0] cd/dvd MATSHITA DVD-ROM UJ890 WAA3 /dev/sr0

Təqdim olunan yolların eyni LUN-a aid olduğunu həmin yolların WWID-lərinə baxmaqla demək olar:

[[email protected] ~]# scsi_id --device /dev/sdd --whitelisted page=0x83
360080e50002ec56600000931551e37d5
[[email protected] ~]# scsi_id --device /dev/sdb --whitelisted page=0x83
360080e50002ec56600000931551e37d5
[[email protected] ~]# scsi_id --device /dev/sdc --whitelisted page=0x83
360080e50002ec56600000931551e37d5
[[email protected] ~]# scsi_id --device /dev/sde --whitelisted page=0x83
360080e50002ec56600000931551e37d5

Multipathing bu problemin qarşısından, mövcud disk layerlərinə daha 1-ni – vahid virtual disk massivini yaratmaqla gəlir – yəni eyni WWID-ə məxsus olan 4 fiziki yol ƏS-nə vahid yaddaş massivi kimi təqdim olunur ki , bu barədə də aşağıda danışacağıq.

MPP/RDAC vasitəsil multipathing.

Ilk öncə , hazırda işləyəcəyimiz topologiyaya və istifadə olunan avadanlıqlara nəzər salaq:

ƏS : CentOS 6 x86_64, node1.technet.local;
SANSwitch : HP AM867B;
Storage : IBM DS3524, 2 controller, hər controllerde 2 port;
Drayver: MPP/RDAC 09.03;
LUN : 160 GB, N=240;

Qeyd: Məqalədə istifadə olunan topologiyada SAN zoning funksiyaları sazlanmamışdır.

rounded_corners

1.3 Topologiya

1.3 şəklində göstərilən sxem,ən yaxşı təcrübələrə uyğun olaraq, təqdim olunan bütün elementlərin ( HBA, switch və kontrollerlərin) 2 nüsxədə istifadəsini özündə ehtiva edir.
Ilk öncə repozitoriylərdən tələb olunan paketləri yükləyirik:

[[email protected] ~]# yum install perl gcc kernel-headers -y 

Ardınca, bizə uyğun MPP/RDAC drayverlərini aşağıda göstərilən saytdan yükləyirik – bizim misalımızda, CentOS 6.3, kernel 2.6.32-279:

[[email protected] ~]# uname -a
Linux centos6.3 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

http://mysupport.netapp.com/NOW/public/apbu/oemcp/

Drayverlərin mənbə kodunu arxivdən çıxarırıq və yüklənmə prosesini hazırlayırıq:

[[email protected] ~]# tar -xzvf rdac-LINUX-09.03.0C05.0652-source.tar.gz
[[email protected] ~]# cd linuxrdac-09.03.0C05.0652
[[email protected] linuxrdac-09.03.0C05.0652]# make
make[1]: Entering directory `/usr/src/kernels/2.6.32-279.el6.x86_64'
CC [M] /root/linuxrdac-09.03.0C05.0652/MPP_hba.o
CC [M] /root/linuxrdac-09.03.0C05.0652/mppLnx26p_upper.o
CC [M] /root/linuxrdac-09.03.0C05.0652/mppLnx26p_sysdep.o
CC [M] /root/linuxrdac-09.03.0C05.0652/mppCmn_s2tos3.o
CC [M] /root/linuxrdac-09.03.0C05.0652/mppCmn_SysInterface.o
CC [M] /root/linuxrdac-09.03.0C05.0652/mppLnx26p_vhbamisc.o
CC [M] /root/linuxrdac-09.03.0C05.0652/mppLnx26p_vhbatask.o
CC [M] /root/linuxrdac-09.03.0C05.0652/mppLnx26p_vhba.o
.........................................................
.........................................................
gcc -I/root/linuxrdac-09.03.0C05.0652 -I/root/linuxrdac-09.03.0C05.0652/mpp_linux_headers/ -I/root/linuxrdac-09.03.0C05.0652/mpp_linux_sys_headers/ -c ./utility/mppUtil26p_sysdep.c -o mppUtilSysdep.o
gcc mppUtil.o mppUtilSysdep.o -o mppUtil
gcc -o genuniqueid genuniqueid.c

Yüklənmə əmrini buraxırıq:

[[email protected] linuxrdac-09.03.0C05.0652]# make install
make[1]: Entering directory `/root/linuxrdac-09.03.0C05.0652'
make[2]: Entering directory `/usr/src/kernels/2.6.32-279.el6.x86_64'
Building modules, stage 2.
MODPOST 2 modules
make[2]: Leaving directory `/usr/src/kernels/2.6.32-279.el6.x86_64'
make[2]: Entering directory `/usr/src/kernels/2.6.32-279.el6.x86_64'
.....................................................................
.....................................................................
Please wait while we modify the system configuation files.
MPP: Running dracut
You must now edit your boot loader configuration file, /boot/grub/menu.lst, to
add a new boot menu, which uses mpp-2.6.32-279.el6.x86_64.img as the initrd image.
Now Reboot the system for MPP to take effect.
The new boot menu entry should look something like this (note that it may
vary with different system configuration):

...

title Red Hat Linux (2.6.32-279.el6.x86_64) with MPP support
root (hd0,5)
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=LABEL=RH9
initrd /mpp-2.6.32-279.el6.x86_64.img
...
MPP driver package has been successfully installed on your system.
make[1]: Leaving directory `/root/linuxrdac-09.03.0C05.0652' 

Yüklənmə prosesinin nəticəsi olaraq, drayverlərin integrasiya olunduğu kernel versiyası generasiya olunur və /boot direktoriyasına atılır. Bundan sonra biz, /etc/grub.conf faylını redaktə edərək, yeni boot rekordu yaradırıq:

[[email protected] linuxrdac-09.03.0C05.0652]# nano /boot/grub/menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_centos6-vol_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-279.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_centos6-vol_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_centos6/vol_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_centos6/vol_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.el6.x86_64.img
### ASHAGIDA GOSTERILEN BOOT SECHENEYI MULTIPATH DRAYVERLERI INTEGRASIYA OLUNMUSH KERNELI BASHLADACAQ
title CentOS (2.6.32-279.el6.x86_64) with MPP support
root (hd0,0)
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_centos6-vol_root
initrd /mpp-2.6.32-279.el6.x86_64.img 

ƏS-ni restart edirik və yüklənmə zamanı yeni yaratdığımız boot rekordu seçirik. Ardınca, MPP modullarının uğurla yükləndiyini yoxlamaq üçün aşağıdakı əmri veririk – əgər əmrin nəticələrində mppVhbamppUpper modulları görünürsə, yüklənmənin uğurla bitdiyini demək olar:

[[email protected] ~]# lsmod | grep mpp
mppVhba 141419 1
mppUpper 157575 1 mppVhba 

Sistemə təqdim olunmuş yaddaş massivinin vahid disk qurğusu kimi identifikasiyasına əmin olaq :

[[email protected] ~]# fdisk -l

Disk /dev/sda: 146.0 GB, 145999527936 bytes
255 heads, 63 sectors/track, 17750 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c94fa
..................................................
..................................................

Disk /dev/sdb: 161.1 GB, 161061273600 bytes
255 heads, 63 sectors/track, 19581 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x439ec069
Device Boot Start End Blocks Id System
/dev/sdb1 1 19581 157284351 83 Linux 

Artıq, təqdim olunmuş LUN massiviyle ( /dev/sdb)  adi disk massivi kimi işləyə bilərik – partitionlar yarada silə və s.
Həmçinin, hal-hazırda mövcud fiziki yollar və həmun yolların statusu barədə mppUtil əmri vasitəsilə məlumat ala bilərik:

[[email protected] ~]# mppUtil -S
H7C0T0 Active Active Test_array
H5C0T1L240 Up H5C0T0L240 Up
H6C0T1L240 Up H6C0T0L240 Up 

Bununla MPP/RDAC vasitəsilə multipathing sazlanmasını bitmiş hesab etmək olar.

Səs: +50. Bəyənilsin Zəifdir

Müəllif: Fərid Səmədov

Şərhlər ( 1 )

  1. Təşəkkürlər  əhəmiyyətli mövzudu

    davamlı olsun….

Şərh yazın