Multipath (MPIO) Nedir? Linux’ta Multipath

Share

Bu yazımda daha çok enterprise yapılarda kullanılan storage’a yüksek erişilebilirlik sağlayan bir yapılandırma olan Multipath (MPIO) konusunu açıklamaya çalışacağım.

Multipath genellikle hostların (fiziksel sunucu) storage ile olan bağlantısını yedeklemek amacı ile kullanılır, fiziksel sunucu ile storage arasındaki fiber kablolardan birisi kopması, zarar görmesi v.b. durumunda storage olan erişimi kaybetmeden sisteminize erişilebilirliği sağlar.
Multipath genellikle Storage vendorlar tarafından sağlanmaktadır ancak güncel işletim sistemleri Native yani kendi multipath driverları ile gelmekte.

Tum dağıtımlarda Linux kernel 2.6.x ile genel olarak Native Linux Multipath kullanılmaya baslamıstır. Yani CentOS/RedHat 6, Oracle Linux 6 ile native olarak desteklemektedir.

NOT: Eski sürüm Linux dağıtımlarında MPIO için HP, Hitachi, EMC, NetApp gibi Vendorların Multipath (MPIO) yazılımı ile gelmektedir.

Bu yazımda kı case’ imiz; HP BL460c G7 sunucunun HP P6300 EVA Storage‘a bagılanması ve MPIO nun aktive edilmesini işlemeye çalışacağım. İşletim Sistemimiz CentOS 6.6 (Redhat/Oracle Linux)

c7000-bl460-EVA-FC

 

HP BL4xx serisi sunucu Blade sunucu olup HP nin C7000 Blade Systems şase içinde kullanılırlar.

aynı sekilde bizim yapımızda Interconnect olarak HP B Serisi 8/24 Brocade SAN Switch uzerinden HP EVA Storage a bagılanmakatdır.

NOT: SAN Switch kullanıldıgında Zone kullanılmaktadır.  Bu konuda zone konusuna girilmeyecektır. İlgilenenler olursa yorum yazarak belirtirse, Zone konusu ile ilgili bilgi paylaşmaya çalışabilirim.

Linux MPIO için kullanılan device-mapper-multipath paketi kurulu olması gerekmektedir, eğer hali hazirda kurulu değil ise ; YUM repository kullanılarak kolaylıkla kurulabilir.

NOT: Local YUM repository oluşturmak için daha önceki yazılarımda yararlanabilirsiniz. (http://ensunucu.com/?p=7)

[root@earth ~]# rpm -qa | grep device-mapper-multipath
[root@earth ~]# yum install -y device-mapper-multipath
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package device-mapper-multipath.x86_64 0:0.4.9-72.el6 will be installed
--> Processing Dependency: device-mapper-multipath-libs = 0.4.9-72.el6 for package: device-mapper-multipath-0.4.9-72.el6.x86_64
--> Processing Dependency: libmultipath.so()(64bit) for package: device-mapper-multipath-0.4.9-72.el6.x86_64
--> Processing Dependency: libmpathpersist.so.0()(64bit) for package: device-mapper-multipath-0.4.9-72.el6.x86_64
--> Running transaction check
---> Package device-mapper-multipath-libs.x86_64 0:0.4.9-72.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository
Size
================================================================================
Installing:
device-mapper-multipath x86_64 0.4.9-72.el6 RHEL6 116 k
Installing for dependencies:
device-mapper-multipath-libs x86_64 0.4.9-72.el6 RHEL6 180 k

Transaction Summary
================================================================================
Install 2 Package(s)

Total download size: 297 k
Installed size: 653 k
Downloading Packages:
--------------------------------------------------------------------------------
Total 4.8 MB/s | 297 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : device-mapper-multipath-libs-0.4.9-72.el6.x86_64 1/2
Installing : device-mapper-multipath-0.4.9-72.el6.x86_64 2/2
Verifying : device-mapper-multipath-libs-0.4.9-72.el6.x86_64 1/2
Verifying : device-mapper-multipath-0.4.9-72.el6.x86_64 2/2

Installed:
device-mapper-multipath.x86_64 0:0.4.9-72.el6

Dependency Installed:
device-mapper-multipath-libs.x86_64 0:0.4.9-72.el6

Complete!

Paket kurulumu yapıldıktan sonra /etc/multipath.conf dosyası olusmamaktadır. Varsayılan ayarlar ile olsuturmak için aşağıdakı komut calıstırılabilir; Ancak bundan önce multipathd servisinin ayarlarının yapılması gerekmetedir.

root@earth ~]# chkconfig multipathd on
[root@earth ~]# service multipathd start
Starting multipathd daemon: [ OK ]
[root@earth ~]#

NOT: Paket kurulumu yapıldıktan sonra, sunucunun restart edilmesi gerekmektedir.

# mpathconf --help

Diğer bir yöntem, paket ile birlikte gelen tum storagelar için varsayılan olarak gelen template config dosyasını kopyalamanız;

[root@earth ]# cp /usr/share/doc/device-mapper-multipath-*/multipath.conf.defaults /etc/multipath.conf

Bazi linux dağtımlarında blocklist tum aygıtlar için acik geldiğinden; /etc/multipath.conf dosyasında

blacklist 

        { devnode "*" }

Ibaresi geciyor ise  bunun comment olarak güncellenmesi gerekmektedir.

# mpatihconf

multipath is enabled
find_multipaths is enabled
user_friendly_names is disabled
dm_multipath module is loaded
multipathd is chkconfiged on

 

CLI dan multipath parametrelerini değiştirmek için aşaıdakı gibi komut kullanılabilir.Örneğin biz; user_friendly_names parametresini enable etmek istersek;

# mpathconf --enable --user_friendly_names y

# mpatihconf

multipath is enabled
find_multipaths is enabled
user_friendly_names is enabled
dm_multipath module is loaded
multipathd is chkconfiged on

Multipath’in doğrulamasını debug olarak görmek isterseniz;

# multipath –v 3

Komutunu kullanabilirsiniz.

NOT: Bu işlemleri yapmadan önce Storage tarafından present edilen LUN’un disk tarafından görüldüğünden emin olunuz.

MPIO aktive edildikten sonra fdisk –l komutu ile kontrol ettiğinizde mpath[a-z] seklinde diskimizın gelmis oldugunu gorebilrsiniz.  Daha once fdisk –l komutunun cıktısında path yapınıza baglı olarak path sayısı kadar aynı diski /dev/sd[a-z] seklinde diskler görüyor olacaktınız. Burada önemli olan /dev/mpath[a-z] olan diskin sisteme eklenmesi.

 # fdisk -l

Disk /dev/sda: 146.8 GB, 146780121600 bytes
255 heads, 63 sectors/track, 17845 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: 0x000ddd61

Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 17845 142826496 8e Linux LVM

Disk /dev/mapper/vg_earth-lv_root: 94.9 GB, 94875156480 bytes
255 heads, 63 sectors/track, 11534 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: 0x00000000
Disk /dev/mapper/vg_earth-lv_swap: 25.2 GB, 25161629696 bytes
255 heads, 63 sectors/track, 3059 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: 0x00000000
Disk /dev/mapper/vg_earth-lv_home: 26.2 GB, 26214400000 bytes
255 heads, 63 sectors/track, 3187 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: 0x00000000
Disk /dev/sdb: 12.9 GB, 12884901888 bytes
64 heads, 32 sectors/track, 12288 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/mpathb: 12.9 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 12.9 GB, 12884901888 bytes
64 heads, 32 sectors/track, 12288 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000
Disk /dev/sdd: 12.9 GB, 12884901888 bytes
64 heads, 32 sectors/track, 12288 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000
Disk /dev/sde: 12.9 GB, 12884901888 bytes
64 heads, 32 sectors/track, 12288 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000

Yukarıdakı cıktıdan da anlasıldıgı gibi SAN tarafından present edilen LUN /dev/mapper/mpathb aygıtı; LUN‘u bulduktan sonra fdisk ile partation oluşturup sisteme tanıtmak için aşağıda belirtmis oldugum komutlar ile devam edebiliriz;

# fdisk /dev/mapper/mpathb

komutu ile istemiş olduğunuz diskimize partation ekleyıp sonrada on-fly olarak eklemek için kpartx veya modeprobe komutları kullanılmalıdır.

Varsayılan olarak yeni eklenen diskler kernel tarafından görülemeyeceğinden sunucunun restart edilmesi gerekebilir. Restart etmeden yapabilmek için;

# kpartx -l /dev/mapper/mpathb1

# kpartx -a /dev/mapper/mpathb1     

Artık diskimiz sunucu tarafındakı erşim sağlandıktan sonra istediğimiz filesystem olarak ayarlamak için;

[root@earth ~]# mkfs.ext4 /dev/mapper/mpathbp1
mke2fs 1.43-WIP (20-Jun-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=16 blocks
524288 inodes, 2096896 blocks
104844 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: 0/64 done
Writing inode tables: 0/64 done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: 0/64 done

# mkdir /data

# mount /dev/mapper/mpathbp1 /data

# df -h /data

NOT: Oluşturulan diskin kalıcı kamasını isterseniz daha önceki yazımda bahsetmiş olduğum /etc/fstab dosyasını güncellemeniz gerekmektedir.

One thought on “Multipath (MPIO) Nedir? Linux’ta Multipath

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.