เป็นบทความเก่าเอามาปัดฝุ่นใหม่ครับ เนื่องจากคิดว่าบางท่านอาจจะไม่ทราบว่าเอาไว้ืทำอะไร device-mapper multipathing มีไว้เพื่อใช้งานเพื่อทำ multipathing ควบคู่กับอุปกรณ์ที่เป็นพวก storage ครับ เช่น SAN หรือ NAS ครับ โดยเจ้าตัว device-mapper multipathing มีความสามารถที่จะทำงานในลักษณะ Load-Balance หรือ Fail-Over เพื่อใช้ในการ access storage ครับ ขอยกตัวอย่างเพื่อไม่เป็นไม่ให้งงกันไปใหม่แล้วกันนะครับ

ตัวอย่าง เรามีอุปกรณ์ SAN อยู่และการเชื่อมต่อกับอุปกรณ์จะใช้สาย Fiber 2 เส้นด้วยกัน(เพื่อป้องการเหตุที่สายอีกเส้นใช้งานไม่ได้)เมื่อเชื่อมต่อกับ Linux เรียบร้อยแล้ว Linux จะเห็น HDD จากตัว Linux เพิ่มเป็น 2 เท่าจากเดิม เนื่องจากว่ามีสาย Fiber 2 เส้นเชื่อมต่อไปยัง SAN นั้นเอง ดังนั้นถ้าเราแบ่งเนื่อที่ให้กับ Linux 1 LUN ด้วยกัน (LUN A) Linux จะเห็น HDD เป็น 2 ลูก คือ 2 ลูกของ LUN A เมื่อทำการเชคดู HDD แล้วจะพบว่ามี device sda, sdb ด้วยกัน แต่ sda และ sdb เป็น LUN เดียวกันทำให้เมื่อเวลา access จะสามารถ access ตัวใดก็ได้ ดังนั้นถ้าเรา Mount sda ขึ้นมาแต่ใช้ไปนานๆเกิดสายของ sda เสียขึ้นมาก็ไม่สามารถใช้งานได้จะต้อง Mount sdb ขึ้นมาแทน ด้วยเหตุนี้จึงมีโปรแกรมพวก multipath เกิดขึ้น เพื่อสร้าง virtual device สำหรับ sda, sdb เพื่อเป็นตัวแทนของ sda, sdb โดยที่นิยมใช้งานกันก็จะมี Option Fail-Over และ Load-Balance โดยในบทความนี้จะกล่าวถึงการ configure device-mapper multipathing แบบ Fail-Over ครับ โดยมีขั้นตอนดังนี้


แก้ไขไฟล์ /etc/multipath.conf โดยเอาใส่ comment เข้าไปดังตัวอย่างข้างล่าง

# devnode_blacklist {
# devnode "*"
# }

ต่อจากนั้น ucomment

defaults {
multipath_tool "/sbin/multipath -v0"
udev_dir /dev
polling_interval 10
default_selector "round-robin 0"
default_path_grouping_policy failover
default_getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
default_prio_callout "/bin/true"
default_features "0"
rr_min_io 100
failback immediate
}
blacklist {
wwid 26353900f02796769
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}

จาก config ด้านบนการทำงานของ multipathed จะเป็นแบบ failover ต่อจากนั้นพิมพ์คำสั่งตามขั้นตอนต่อไปนี้ตามลำดับ

modprobe dm-multipath
modprobe dm-round-robin
service multipathd start
multipath -v2

พิมพ์คำสั่งด้านล่างเพื่อให้เวลา reboot ใหม่ก็ยังสามารถใช้งานได้

[root@ezylinux ~]# chkconfig multipathd on

จาก config ข้างต้นระบบจะสร้าง device /dev/dm-X เมื่อ X คือ multipathed group และถ้าต้องการ fdisk เราจะไม่สามารถ fdisk ที่ /dev/dm-X ได้ ดังนั้นจึงต้องไปทำ fdisk กับ device จริง เช่น /dev/sda เป็นต้น