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. Yani Multipath SAN (Storage Area Network) ortamlarında sunucular HBA (Host Bus Adaptor) kartı, SAN switch, Storage controller gibi bileşenlerden biri arızalansa bile SAN disklere erişimin devam etmesini sağlayan teknolojidir.
Multipath genellikle Storage vendorlar tarafından sağlanmaktadır ancak güncel işletim sistemleri Native yani kendi multipath driverları ile gelmekte.

NOT : Tüm 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.

multipath

Görselden de anlaşılacağı gibi Sunucular üzerinde bulunan HBA kartları SAN aracılığı ile storage lara bağlanmaktadır.
HBA lardan birisinde veya SAN ların birisinde problem olması durumunda ikinci hba veya san üzerinden veri akışı devam etmekte ve problem yaşanmamaktadır.

SAN : Sunucular ve depolama üniteleri arasında hızlı, güvenilir bağlantı sağlayan özelleştirilmiş bir ağ türüdür. SAN uygulamasında bir depolama ünitesi herhangi tek bir sunucunun özel malı olmak yerine, depolama birimleri ağdaki sunucu ve diğer depolama ünitelerinin ortak malıdır. Kısacası SAN; sunucuları depolama birimlerine, depolama birimlerini birbirlerine ve sunucuları birbirine bağlamaktadır. San iletim teknolojileri dediğimizde üç farklı temel teknolojiden bahsedebiliriz; Fibre Channel, iSCSi, FCIP.
Multipath konusunun daha iyi anlaşılması için SAN ile ilgili birkaç kavramın daha bilinmesi gerek.

SAN Switch : Üzerinde HBA kartı olan cihazlarımızı GBIC modül ve fiber optic kablolar kullanarak 2, 4, 8, 16 GB hızında, network katmanı haricinde güvenli bir şekilde birbirleri ile haberleştirmek için kullanılan bir teknolojidir. SAN Swithleri günümüzde daha çok sunucuları, storage ve tape cihazlarını haberleştirmek için kullanıyoruz.

HBA : HBA (Host Bus Adaptor) disk erişimi için kullanılan fiber hızda bağlanmasını sağlayan SCSI-3 protokolünü dönüştüren bir PCI karttır. NIC (Network Interface Card)/Ethernet gibi çalışan ama fiber kablolar aracılığıyla internete değil de storagelara bağlanan kartlardır. HBA, ethernet kartının sahip olduğu MAC adresi gibi üzerinde WWN (World Wide Name)’e sahiptir. Host Bus Adapter SCSI ve FC (Fibre Channel) olarak iki şekilde bulunur, günümüzde Fibre Channel kullanan HBA kartlarını daha çok kullanmaktayız ve görmekteyiz.
SAN Zone : SAN ağlarında bildiğiniz gibi birden çok depolama ünitesi bululmaktadır. Bu durumlarda güvenlik gerekçeleri sebebiyle bir ünitenin tümü üzerinde erişim izninin olması gerekmektedir. Bu durumu engellemek için Fibre Channel Zoning uygulanabilir. Yani birbiri ile haberleşmesini istediğimiz cihazları bu bölümde yapacağımız ayarlar sayesinde haberleştirmiş olacağız.
Zoning bazı zamanlarda LUN masking ile karıştırılır çünkü her iki işlemin de hedefleri aynıdır. Fark şudur ki; zoning fabric switchlerde gerçekleştirilirken, LUN masking son nokta aygıtlarında görev yapar. Zoning potansiyel olarak daha güvenlidir. Zone üyeleri yalnızca zonedaki diğer elemanları görür. Aygıtlar birden fazla zone un elemanı olabilirler.

• Zoning operasyonları için akılda tutulması gereken bazı basit kurallar;

• Zone elemanları sadece zone un diğer elemanlarını görürler.

• Zone’lar dinamik olarak WWN ye dayalı konfigüre edilebilirler.

• Aygıtlar birden fazla zone un elemanı olabilirler.

Tekrardan multipath a girecek olursak.

Linux multipath 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.

[root@server ~]# rpm -qa | grep device-mapper-multipath
[root@server ~]# 
[root@server ~]# <strong>yum install -y device-mapper-multipath</strong>
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
 Running transaction check
- Package device-mapper-multipath.x86_64 0:0.4.9-64.0.1.el6 will be installed
 Processing Dependency: device-mapper-multipath-libs = 0.4.9-64.0.1.el6 for package: device-mapper-multipath-0.4.9-64.0.1.el6.x86_64
 Processing Dependency: libmpathpersist.so.0()(64bit) for package: device-mapper-multipath-0.4.9-64.0.1.el6.x86_64
 Processing Dependency: libmultipath.so()(64bit) for package: device-mapper-multipath-0.4.9-64.0.1.el6.x86_64
 Running transaction check
- Package device-mapper-multipath-libs.x86_64 0:0.4.9-64.0.1.el6 will be installed
 Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================================
 Package                                                       Arch                                    Version                                              Repository                                   Size
==============================================================================================================================================================================================================
Installing:
 device-mapper-multipath                                       x86_64                                  0.4.9-64.0.1.el6                                     ol6_latest                                  111 k
Installing for dependencies:
 device-mapper-multipath-libs                                  x86_64                                  0.4.9-64.0.1.el6                                     ol6_latest                                  174 k

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

Total download size: 284 k
Installed size: 645 k
Downloading Packages:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                         4.4 MB/s | 284 kB     00:00     
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Retrieving key from file:///Oracle/RPM-GPG-KEY-oracle
Importing GPG key 0xEC551F03:
 Userid: "Oracle OSS group (Open Source Software group) <build@oss.oracle.com>"
 From  : /Oracle/RPM-GPG-KEY-oracle
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : device-mapper-multipath-libs-0.4.9-64.0.1.el6.x86_64                                                                                                                                       1/2 
  Installing : device-mapper-multipath-0.4.9-64.0.1.el6.x86_64                                                                                                                                            2/2 
  Verifying  : device-mapper-multipath-0.4.9-64.0.1.el6.x86_64                                                                                                                                            1/2 
  Verifying  : device-mapper-multipath-libs-0.4.9-64.0.1.el6.x86_64                                                                                                                                       2/2 

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

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

Complete!

Paket kurulumu yapıldıktan sonra /etc/multipath.conf dosyası oluşmamaktadır. Ancak bundan önce multipathd servisinin ayarlarının yapılması gerekmektedir.

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

Paket ile birlikte gelen tum storagelar için varsayılan olarak gelen template config dosyasını kopyalarız;

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

NOT : Bazı linux dağtımlarında blocklist tum aygıtlar için acik geldiğinden; /etc/multipath.conf dosyasında ibaresi geçiyor ise bunun comment olarak güncellenmesi gerekmektedir.

blacklist 
        { devnode "*" }
blacklist {
       devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
       devnode "^hd[a-z]"
       devnode "^dcssblk[0-9]*"
       device {
               vendor "DGC"
               product "LUNZ"
       }
       device {
               vendor "EMC"
               product "LUNZ"
       }
       device {
               vendor "IBM"
               product "Universal Xport"
       }
       device {
               vendor "IBM"
               product "S/390.*"
       }
       device {
               vendor "DELL"
               product "Universal Xport"
       }
       device {
               vendor "SGI"
               product "Universal Xport"
       }
       device {
               vendor "STK"
               product "Universal Xport"
       }
       device {
               vendor "SUN"
               product "Universal Xport"
       }
       device {
               vendor "(LSI|ENGENIO)"
               product "Universal Xport"
       }
}

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

[root@server ~]# mpathconf 
multipath is enabled
find_multipaths is disabled
user_friendly_names is disabled
dm_multipath module is loaded
multipathd is chkconfiged on

[root@server ~]# mpathconf --enable --user_friendly_names y

[root@server ~]# mpathconf 
multipath is enabled
find_multipaths is disabled
user_friendly_names is enabled
dm_multipath module is loaded
multipathd is chkconfiged on
[root@server ~]#

multipath konfigürasyonuna gelmeden önce Storage tarafından present edilen LUN’un sunucu tarafından görüldüğünden emin olunuz.
Yeni eklenen diskler otomatik olarak işletim sisteminde (fdisk –l komutuyla işletim sistemi kontrol edilebilir) gözükmüyorsa diskleri göstermek için, sunucu restart edilebilir veya daha önce yazdığım yazıdan da erişebileceğiniz gibi sunucuyu restart etmeden de diskleri görebiliriz.
Multipath yapılandırma dosyasına eklemek için disklerimizin “WWID” numaralarını bulmalıyız. Şuan sunucumuz kaç kanaldan diske gidiyorsa o kadar disk varmış gibi görüyor multipath yapılandırma ayarlarımızdan sonra bu diskleri tek diskmiş gibi göreceğiz.

“WWID”  değeri diskin eşsiz adresidir. multipath yazılımı bu değerin göründüğü tüm yolları tek cihaza düşürecektir.

NOT : Disk oluşturulurken en belirgin tanımlayıcı olarak öne çıkan wwid, diskin bağlandığı işletim sisteminde de değişmeyen bir numara olarak imdada koşmaktadır.

Bunu anlamak için aşağıdaki komutu çalıştırdığımızda aynı disk ünitesinden atanmış olan disklerden birden fazla varmış gibi göreceğiz.

 
[root@server ~]# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 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: 0x0003ccfe

   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         325     2097152   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             325        6528    49818624   83  Linux

Disk /dev/sdb: 15.3 GB, 15334375424 bytes
64 heads, 32 sectors/track, 14624 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdc: 15.3 GB, 15334375424 bytes
64 heads, 32 sectors/track, 14624 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdd: 5100 MB, 5100273664 bytes
157 heads, 62 sectors/track, 1023 cylinders
Units = cylinders of 9734 * 512 = 4983808 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sde: 5100 MB, 5100273664 bytes
157 heads, 62 sectors/track, 1023 cylinders
Units = cylinders of 9734 * 512 = 4983808 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/mpatha: 15.3 GB, 15334375424 bytes
255 heads, 63 sectors/track, 1864 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/mpathb: 5100 MB, 5100273664 bytes
255 heads, 63 sectors/track, 620 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

Veya

 
[root@server by-path]# cat /proc/partitions 
major minor  #blocks  name

   8        0   52428800 sda
   8        1     512000 sda1
   8        2    2097152 sda2
   8        3   49818624 sda3
   8       16   14974976 sdb
   8       32   14974976 sdc
   8       48    4980736 sdd
   8       64    4980736 sde
 252        0   14974976 dm-0
 252        1    4980736 dm-1

NOT : Yukarıdaki çıktıdan göreceğiniz gibi bizim herhangi bir ayar yapmamamıza rağmen varsayılan olarak gelen multipath ayarlarından dolayı multipath ler gelmiştir.
Disklerimizin “WWID” numaralarını bulabilmek için

[root@server ~]# multipath -v3
Oct 02 10:36:47 | ram0: device node name blacklisted
Oct 02 10:36:47 | ram1: device node name blacklisted
Oct 02 10:36:47 | ram2: device node name blacklisted
Oct 02 10:36:47 | ram3: device node name blacklisted
Oct 02 10:36:47 | ram4: device node name blacklisted
Oct 02 10:36:47 | ram5: device node name blacklisted
Oct 02 10:36:47 | ram6: device node name blacklisted
Oct 02 10:36:47 | ram7: device node name blacklisted
Oct 02 10:36:47 | ram8: device node name blacklisted
Oct 02 10:36:47 | ram9: device node name blacklisted
Oct 02 10:36:47 | ram10: device node name blacklisted
Oct 02 10:36:47 | ram11: device node name blacklisted
Oct 02 10:36:47 | ram12: device node name blacklisted
Oct 02 10:36:47 | ram13: device node name blacklisted
Oct 02 10:36:47 | ram14: device node name blacklisted
Oct 02 10:36:47 | ram15: device node name blacklisted
Oct 02 10:36:47 | loop0: device node name blacklisted
Oct 02 10:36:47 | loop1: device node name blacklisted
Oct 02 10:36:47 | loop2: device node name blacklisted
Oct 02 10:36:47 | loop3: device node name blacklisted
Oct 02 10:36:47 | loop4: device node name blacklisted
Oct 02 10:36:47 | loop5: device node name blacklisted
Oct 02 10:36:47 | loop6: device node name blacklisted
Oct 02 10:36:47 | loop7: device node name blacklisted
Oct 02 10:36:47 | fd0: device node name blacklisted
Oct 02 10:36:47 | sr0: device node name blacklisted
Oct 02 10:36:47 | sda: not found in pathvec
Oct 02 10:36:47 | sda: mask = 0x3f
Oct 02 10:36:47 | sda: dev_t = 8:0
Oct 02 10:36:47 | sda: size = 104857600
Oct 02 10:36:47 | sda: subsystem = scsi
Oct 02 10:36:47 | sda: vendor = VMware,
Oct 02 10:36:47 | sda: product = VMware Virtual S
Oct 02 10:36:47 | sda: rev = 1.0
Oct 02 10:36:47 | sda: h:b:t:l = 2:0:0:0
Oct 02 10:36:47 | sda: serial = 
Oct 02 10:36:47 | sda: get_state
Oct 02 10:36:47 | sda: path checker = directio (config file default)
Oct 02 10:36:47 | sda: checker timeout = 180000 ms (sysfs setting)
Oct 02 10:36:47 | sda: state = running
Oct 02 10:36:47 | directio: starting new request
Oct 02 10:36:47 | directio: io finished 4096/0
Oct 02 10:36:47 | sda: state = 3
Oct 02 10:36:47 | sda: getuid = /lib/udev/scsi_id --whitelisted --device=/dev/%n (config file default)
Oct 02 10:36:47 | /lib/udev/scsi_id exitted with 1
Oct 02 10:36:47 | error calling out /lib/udev/scsi_id --whitelisted --device=/dev/sda
Oct 02 10:36:47 | sda: state = running
Oct 02 10:36:47 | /lib/udev/scsi_id exitted with 1
Oct 02 10:36:47 | error calling out /lib/udev/scsi_id --whitelisted --device=/dev/sda
Oct 02 10:36:47 | sda: detect_prio = 1 (config file default)
Oct 02 10:36:47 | sda: prio = const (config file default)
Oct 02 10:36:47 | sda: const prio = 1
Oct 02 10:36:47 | sdb: not found in pathvec
Oct 02 10:36:47 | sdb: mask = 0x3f
Oct 02 10:36:47 | sdb: dev_t = 8:16
Oct 02 10:36:47 | sdb: size = 29949952
Oct 02 10:36:47 | sdb: subsystem = scsi
Oct 02 10:36:47 | sdb: vendor = OPNFILER
Oct 02 10:36:47 | sdb: product = VIRTUAL-DISK
Oct 02 10:36:47 | sdb: rev = 0
Oct 02 10:36:47 | sdb: h:b:t:l = 4:0:0:0
Oct 02 10:36:47 | sdb: tgt_node_name = iqn.2006-01.com.openfiler:tsn.e8cd9f6d85ca
Oct 02 10:36:47 | sdb: serial = C6aV7y-ao3a-y3Mw
Oct 02 10:36:47 | sdb: get_state
Oct 02 10:36:47 | sdb: path checker = directio (config file default)
Oct 02 10:36:47 | sdb: checker timeout = 30000 ms (sysfs setting)
Oct 02 10:36:47 | sdb: state = running
Oct 02 10:36:47 | directio: starting new request
Oct 02 10:36:47 | directio: io finished 4096/0
Oct 02 10:36:47 | sdb: state = 3
Oct 02 10:36:47 | sdb: getuid = /lib/udev/scsi_id --whitelisted --device=/dev/%n (config file default)
Oct 02 10:36:47 | sdb: uid = 14f504e46494c45524336615637792d616f33612d79334d77 (callout)
Oct 02 10:36:47 | sdb: state = running
Oct 02 10:36:47 | sdb: detect_prio = 1 (config file default)
Oct 02 10:36:47 | sdb: prio = const (config file default)
Oct 02 10:36:47 | sdb: const prio = 1
Oct 02 10:36:47 | sdc: not found in pathvec
Oct 02 10:36:47 | sdc: mask = 0x3f
Oct 02 10:36:47 | sdc: dev_t = 8:32
Oct 02 10:36:47 | sdc: size = 29949952
Oct 02 10:36:47 | sdc: subsystem = scsi
Oct 02 10:36:47 | sdc: vendor = OPNFILER
Oct 02 10:36:47 | sdc: product = VIRTUAL-DISK
Oct 02 10:36:47 | sdc: rev = 0
Oct 02 10:36:47 | sdc: h:b:t:l = 3:0:0:0
Oct 02 10:36:47 | sdc: tgt_node_name = iqn.2006-01.com.openfiler:tsn.e8cd9f6d85ca
Oct 02 10:36:47 | sdc: serial = C6aV7y-ao3a-y3Mw
Oct 02 10:36:47 | sdc: get_state
Oct 02 10:36:47 | sdc: path checker = directio (config file default)
Oct 02 10:36:47 | sdc: checker timeout = 30000 ms (sysfs setting)
Oct 02 10:36:47 | sdc: state = running
Oct 02 10:36:47 | directio: starting new request
Oct 02 10:36:47 | directio: io finished 4096/0
Oct 02 10:36:47 | sdc: state = 3
Oct 02 10:36:47 | sdc: getuid = /lib/udev/scsi_id --whitelisted --device=/dev/%n (config file default)
Oct 02 10:36:47 | sdc: uid = 14f504e46494c45524336615637792d616f33612d79334d77 (callout)
Oct 02 10:36:47 | sdc: state = running
Oct 02 10:36:47 | sdc: detect_prio = 1 (config file default)
Oct 02 10:36:47 | sdc: prio = const (config file default)
Oct 02 10:36:47 | sdc: const prio = 1
Oct 02 10:36:47 | sdd: not found in pathvec
Oct 02 10:36:47 | sdd: mask = 0x3f
Oct 02 10:36:47 | sdd: dev_t = 8:48
Oct 02 10:36:47 | sdd: size = 9961472
Oct 02 10:36:47 | sdd: subsystem = scsi
Oct 02 10:36:47 | sdd: vendor = OPNFILER
Oct 02 10:36:47 | sdd: product = VIRTUAL-DISK
Oct 02 10:36:47 | sdd: rev = 0
Oct 02 10:36:47 | sdd: h:b:t:l = 4:0:0:1
Oct 02 10:36:47 | sdd: tgt_node_name = iqn.2006-01.com.openfiler:tsn.e8cd9f6d85ca
Oct 02 10:36:47 | sdd: serial = 5EzuJe-USHZ-DVwO
Oct 02 10:36:47 | sdd: get_state
Oct 02 10:36:47 | sdd: path checker = directio (config file default)
Oct 02 10:36:47 | sdd: checker timeout = 30000 ms (sysfs setting)
Oct 02 10:36:47 | sdd: state = running
Oct 02 10:36:47 | directio: starting new request
Oct 02 10:36:47 | directio: io finished 4096/0
Oct 02 10:36:47 | sdd: state = 3
Oct 02 10:36:47 | sdd: getuid = /lib/udev/scsi_id --whitelisted --device=/dev/%n (config file default)
Oct 02 10:36:47 | sdd: uid = 14f504e46494c455235457a754a652d5553485a2d4456774f (callout)
Oct 02 10:36:47 | sdd: state = running
Oct 02 10:36:47 | sdd: detect_prio = 1 (config file default)
Oct 02 10:36:47 | sdd: prio = const (config file default)
Oct 02 10:36:47 | sdd: const prio = 1
Oct 02 10:36:47 | sde: not found in pathvec
Oct 02 10:36:47 | sde: mask = 0x3f
Oct 02 10:36:47 | sde: dev_t = 8:64
Oct 02 10:36:47 | sde: size = 9961472
Oct 02 10:36:47 | sde: subsystem = scsi
Oct 02 10:36:47 | sde: vendor = OPNFILER
Oct 02 10:36:47 | sde: product = VIRTUAL-DISK
Oct 02 10:36:47 | sde: rev = 0
Oct 02 10:36:47 | sde: h:b:t:l = 3:0:0:1
Oct 02 10:36:47 | sde: tgt_node_name = iqn.2006-01.com.openfiler:tsn.e8cd9f6d85ca
Oct 02 10:36:47 | sde: serial = 5EzuJe-USHZ-DVwO
Oct 02 10:36:47 | sde: get_state
Oct 02 10:36:47 | sde: path checker = directio (config file default)
Oct 02 10:36:47 | sde: checker timeout = 30000 ms (sysfs setting)
Oct 02 10:36:47 | sde: state = running
Oct 02 10:36:47 | directio: starting new request
Oct 02 10:36:47 | directio: io finished 4096/0
Oct 02 10:36:47 | sde: state = 3
Oct 02 10:36:47 | sde: getuid = /lib/udev/scsi_id --whitelisted --device=/dev/%n (config file default)
Oct 02 10:36:47 | sde: uid = 14f504e46494c455235457a754a652d5553485a2d4456774f (callout)
Oct 02 10:36:47 | sde: state = running
Oct 02 10:36:47 | sde: detect_prio = 1 (config file default)
Oct 02 10:36:47 | sde: prio = const (config file default)
Oct 02 10:36:47 | sde: const prio = 1
Oct 02 10:36:47 | dm-0: device node name blacklisted
Oct 02 10:36:47 | dm-1: device node name blacklisted
===== paths list =====
uuid                                              hcil    dev dev_t pri dm_st 
                                                  2:0:0:0 sda 8:0   1   undef 
14f504e46494c45524336615637792d616f33612d79334d77 4:0:0:0 sdb 8:16  1   undef 
14f504e46494c45524336615637792d616f33612d79334d77 3:0:0:0 sdc 8:32  1   undef 
14f504e46494c455235457a754a652d5553485a2d4456774f 4:0:0:1 sdd 8:48  1   undef 
14f504e46494c455235457a754a652d5553485a2d4456774f 3:0:0:1 sde 8:64  1   undef 
Oct 02 10:36:47 | params = 0 0 2 1 round-robin 0 1 1 8:48 1 round-robin 0 1 1 8:64 1 
Oct 02 10:36:47 | status = 2 0 0 0 2 1 A 0 1 0 8:48 A 0 E 0 1 0 8:64 A 0 
Oct 02 10:36:47 | params = 0 0 2 1 round-robin 0 1 1 8:16 1 round-robin 0 1 1 8:32 1 
Oct 02 10:36:47 | status = 2 0 0 0 2 1 A 0 1 0 8:16 A 0 E 0 1 0 8:32 A 0

Veya

[root@server ~]# multipath -ll
mpathb (14f504e46494c455235457a754a652d5553485a2d4456774f) dm-1 OPNFILER,VIRTUAL-DISK
size=4.8G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 4:0:0:1 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 3:0:0:1 sde 8:64 active ready running
mpatha (14f504e46494c45524336615637792d616f33612d79334d77) dm-0 OPNFILER,VIRTUAL-DISK
size=14G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 4:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 3:0:0:0 sdc 8:32 active ready running

Veya

[root@server by-path]# /lib/udev/scsi_id -g -u /dev/sdb
14f504e46494c45524336615637792d616f33612d79334d77

[root@server by-path]# /lib/udev/scsi_id -g -u /dev/sdc
14f504e46494c45524336615637792d616f33612d79334d77

[root@server by-path]# /lib/udev/scsi_id -g -u /dev/sdd
14f504e46494c455235457a754a652d5553485a2d4456774f

[root@server by-path]# /lib/udev/scsi_id -g -u /dev/sde
14f504e46494c455235457a754a652d5553485a2d4456774f

Veya

for i in `cat /proc/partitions | awk '{print $4}' |grep sd`; do echo "### $i: `scsi_id -g -u -s /block/$i`"; done

Şimdi “/etc/multipath.conf” dosyamızı yapılandırabiliriz. Burada dikkat edeceğimiz “Blacklist” dediğimiz satırlara sistem disklerimizi yazıyoruz yani sunucumuzda bulunan bu SAN yapılandırması ile alakası olmayan diskler. Bunlar sda vb. gibi işletim sisteminin kullandığı diskler olabilir. Bunların hangileri olduğunu tespit edip “blacklist” dediğimiz satırlara eklemeliyiz.

Ben multipath.conf dosyasını düzenlerken sade ve anlaşılır olması için sadece multipath içinde girecek disklerimi yazıyorum.

[root@server by-path]# cat /etc/multipath.conf
multipaths {
        multipath {
                wwid 14f504e46494c45524336615637792d616f33612d79334d77
                alias oradata
                path_grouping_policy    multibus
        }
        multipath {
                wwid 14f504e46494c455235457a754a652d5553485a2d4456774f
                alias orafra
                path_grouping_policy    multibus
              }
}

Değişikliklerin uygulanabilmesi için “multipath” servisimizi yeniden başlatıyoruz.

[root@server by-path]# service multipathd restart
ok
Stopping multipathd daemon:                                [  OK  ]
Starting multipathd daemon:                                [  OK  ]

Disklerimizin multipath yapılandırmasını kontrol edelim.

[root@server by-path]# multipath -ll
orafra (14f504e46494c455235457a754a652d5553485a2d4456774f) dm-1 OPNFILER,VIRTUAL-DISK
size=4.8G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 4:0:0:1 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 3:0:0:1 sde 8:64 active ready running
oradata (14f504e46494c45524336615637792d616f33612d79334d77) dm-0 OPNFILER,VIRTUAL-DISK
size=14G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 4:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 3:0:0:0 sdc 8:32 active ready running
[root@server by-path]# 
[root@server by-path]# 
[root@server by-path]# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 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: 0x0003ccfe

   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         325     2097152   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             325        6528    49818624   83  Linux

Disk /dev/sdb: 15.3 GB, 15334375424 bytes
64 heads, 32 sectors/track, 14624 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdc: 15.3 GB, 15334375424 bytes
64 heads, 32 sectors/track, 14624 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdd: 5100 MB, 5100273664 bytes
157 heads, 62 sectors/track, 1023 cylinders
Units = cylinders of 9734 * 512 = 4983808 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sde: 5100 MB, 5100273664 bytes
157 heads, 62 sectors/track, 1023 cylinders
Units = cylinders of 9734 * 512 = 4983808 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/oradata: 15.3 GB, 15334375424 bytes
255 heads, 63 sectors/track, 1864 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/orafra: 5100 MB, 5100273664 bytes
255 heads, 63 sectors/track, 620 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

Disklerimizi istersekönce bölümlendirip sonra  formatlayıp daha sonrada herhangi bir dizine bağlayarak kullanmaya başlayabiliriz. Bununla ilgili yapılandırmayı daha önce yayınlanmış olan makalelerdeki adımları uygulayarak yapabiliriz. Oluşturulan diskin kalıcı kamasını isterseniz daha önceki yazımda bahsetmiş olduğum /etc/fstab dosyasını güncellemeniz gerekmektedir.

Referanslar
http://ensunucu.com/?p=61
http://agciyiz.net/storage-area-network/
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/dm_multipath/mpio_setup
https://www.thegeekdiary.com/understanding-the-dm-multipath-configuration-file-etc-multipath-conf/
http://www.koraykey.com/?p=713

İyi Çalışmalar…
Mustafa Bektaş Tepe

Loading