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.
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) &amp;amp;lt;build@oss.oracle.com&amp;amp;gt;" 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
Mayıs 9th, 2021 on 16:08
Mustafa hocam selamlar çok güzel bir yazı olmuş eline sağlık.
Temmuz 27th, 2021 on 13:01
Faydalı olmasına çok sevindim.