2014年1月15日 星期三

[網路管理] 何謂LUN

Reference:http://jmmhlee.pixnet.net/blog/post/8747548-san-boot-howto---%E4%BD%95%E8%AC%82-lun-

lun的全稱是logical unit number,也就是邏輯單元號。因為scsi線上可掛接的設備總數量是有限制的,一般為6個或者15個,我們可以用target ID(scsi id)來描述這些設備,設備只要一加入系統,就有一個-ID .
  而現在 storage 技術越來越強大 , 實際上應用上可能需要用來描述的對象,會遠遠超過傳統 scsi ID 數目的限制 , 為了解決這個問題 ,於是採用了lun的概念,也就是lun id 的作用, 擴充了target id . 在每個target下都可以有多個lun device,一般也可通常簡稱lun device為lun. 如此一來 , 每個設備的描述就由原來的target x變成target x lun y了, 描述設備的能力也就增加了, 這概念簡單比喻 , 就如同電話號碼後面 , 再加上個人分機代號一樣 .


   lun id不一定等於某個設備或任何實體屬性 , 只是個號碼而已 , 在實際應用 , lun可能是磁碟分割磁區 , 可能是磁帶機, 或者是磁帶櫃 等等. 很多時候lun 不是什麼可見的實體,而是一些虛擬的對象。比如一個磁碟陣列 ,主機那邊看作是一個target device,為了某些特殊需要,我們需要將磁碟陣列櫃的磁碟空間劃分成若干個小的單元給主機來用,於是就產生了一些什麼邏輯驅動器的說法,也就是比 target device級別更低的邏輯對象,習慣上這些更小的磁碟資源就稱之為lun0,lun1,lun2....等等的.
   
    實務上初學者很容易把陣列裡面的磁碟和主機的內部磁碟的一些概念搞混淆了.在磁碟陣列和磁帶櫃普遍的時代,storage越來越智能化,幾乎可以視為一個獨立的主機 ,因此實際上storage和主機的元件識別是劃分獨立的 . 明確來說 , 如果我們把storage當作一個獨立的主機來看,理解起來就很簡單了。我們說到lun的概念的時候,我們就要將分為兩個層面。一個層面就是在陣列這個機器的os識別到的範圍,一個層面就是server的os識別到的範圍 .
    這兩個層面是相對獨立的,因為如果我們把storage當作一個主機來看,那麼它自然有自己的 device,target,lun之說,
而server也有自己的device,target,lun之說;另外一方面,這兩個層面又是相互關聯的,一個陣列的控制系統,大多都
有虛擬化的功能,陣列想讓主機看到什麼樣的東西,主機才能看到相應的東西。當然,server識別到的最小的存儲資源,
就是lun級別的。那麼主機的HBA卡看到的storage上的存儲資源就靠主要兩個東西來定位,一個就是storage系統的控制器(target),一個就是lun id,這個lun是由storage的控制系統給定的,是storage系統的某部分存儲資源。


有了獨立的磁碟陣列用了之後,server只要看到storage的控制系統,就有可能使用磁碟陣列的磁碟資源,但是磁碟陣列不
可能只為某一個server來使用,所以他必須管制主機使用某部分磁碟資源 . 這個管制分為兩個部分:

一部分就是lun mapping,類似於綠色通道,就是保證server能看到某部分存儲資源 , 
一部分就是lun masking,類似於警戒線或過濾器 ,可保證server只可訪問給它分配的存儲資源,而沒分配給server的資源,就無法存取.

實現lun masking和lun mapping有三種方法:

一個是基於storage控制系統來設置 (storage base),
   基於 storage 控制系統得設置,是比較常見的設置,比如很多磁碟陣列的控制系統,本身就能設置lun被某server看到 . 
   比如FastT 的partition功能。
一個是基於 san switch 系統來設置 (san switch base),
   基於san switch 系統的設置,也是一種常用的方法,也就是zoning , 相同 zone 的成員 , 才可互相存取.
一個是基於serveros來設置  ( server base  )
   基於serveros的設置,比較少採用,一般採用安裝某些操作系統上安裝某些軟體來實現,因為這個方法全由server主導,
   彈性與安全性上 , 較為不足 , 一般比較少用. 


再者現在存儲網路 (san network) 越來越發達了,一個lun有多條通路也已經很平常了 ,server使用多個HBA連接到存儲網路 ,存儲網路又可能是由多個交換設備(san switch)組成 ,而storage 又可能有多個控制器和迴路,lun到server的存儲網絡迴路又可能存在著多條不同的邏輯迴路 . 原則上同一個physical lun 在server, 因為各種可能路徑 , 會被識別為多個設備 , 因為os區別設備無非用的是 target id,lun id來區別 ,只要號碼不同,就認為是不同的設備 , 這就是 lun的multi-path 現象.

實務上要明確定位一個真正的physical lun,具體的做法,就是生成一個特別的設備文件,由操作系統應用操作這個特殊的設備文件 ,,設備文件+driver+firmware 的一個作用,來告訴操作系統該怎麼使用這個設備 , 這也就是所謂的" 多路徑管理軟體" . 多路徑管理軟體會從driver和設備文件著手,告訴了操作系統怎麼來處理這些身份複雜的lun。

沒有留言:

張貼留言