天天看點

存儲多路徑

一、多路徑簡介

普通電腦都是将硬碟挂接到主機闆上。直連式存儲DAS直接将存儲設施通過SCSI連接配接到伺服器。這兩種方式都是将存儲于伺服器建立一一對應的關系。在現代資料中心的SAN或者IPSAN環境中,主機和存儲通過光纖或者以太網進行連接配接,大多數情況下都會做鍊路備援。這樣,存儲與伺服器間的連接配接就不再是唯一的路徑。如果所有路徑同時啟用,這就會帶來伺服器通路存儲時的路徑選擇問題。實作備援IO路徑的方式通常有兩種:由存儲的控制器固件提供的AVT/ADT (Auto Volume Transfer/Auto Disk Transfer) 功能以及由伺服器系統提供的多路徑(multipath)驅動。

二、原理

在Linux系統中,多路徑技術與Device Mapper技術密不可分。Device Mapper是Linux 2.6核心中通用的裝置映射機制。Device Mapper技術也被用于Linux中邏輯卷管理的映射機制。Device Mapper的核心結構如下圖

存儲多路徑

(圖檔來源:Linux 核心中的 DeviceMapper 機制[1])

   Device Mapper通過path selectors進行路徑選擇,并映射為系統所使用的裝置,并在/dev/下仍保有全部的實體路徑,如/dev/dm-0等。

   每一個multipath裝置都有一個WWID(World Wide Identifier),這個id是唯一且不可更改的。預設情況下,multipath裝置的名稱被設定為它的WWID。也可以在配置檔案中使用_friendly_names選項,為裝置取一個别名,别名為mpath*,位于/dev/mapper下。

三、應用

當多路徑被配置為主動/主動方式時,可以實作動态負載均衡;當采用主動/被動模式時,可以實作備援鍊路,進而在I/O路徑中發生故障時切換到備用路徑。

多路徑主要功能就是故障切換或者提高性能。同時,配合存儲設施一起,可以實作磁盤虛拟化等。其原理是将同一LUN通過多條鍊路進行共享,進而實作多條通路路徑。

存儲多路徑

(圖檔來源:紅帽企業版Linux 6 文檔[2])

如上圖所示,兩個RAID控制器到RAID之間使用了多條路徑。每個RAID都通過兩個控制器接入兩個不同的SAN。對伺服器而言,在通路任一存儲時,都有兩條路徑可以選擇。這樣就可以使用多路徑技術對兩條路徑進行排程。

當存儲的一個控制器損壞乃至一個SAN損壞時,由于使用多路徑技術,伺服器扔能通過另一條路徑通路全部裝置。能夠顯著降低當機時間,增加了服務的可持續性。

[1] http://www.ibm.com/developerworks/cn/linux/l-devmapper/

[2] https://access.redhat.com/site/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/html-single/DM_Multipath/index.html