1. 程式人生 > >儲存技術之Lun相關知識

儲存技術之Lun相關知識

  LUN的全稱是Logical Unit Number,也就是邏輯單元號。我們知道SCSI總線上可掛接的裝置數量是有限的,一般為6個或者15個,我們可以用Target ID(也有稱為SCSI ID的)來描述這些裝置,裝置只要一加入系統,就有一個代號,我們在區別裝置的時候,只要說幾號幾號就ok了。

  而實際上我們需要用來描述的物件,是遠遠超過該數字的,於是我們引進了LUN的概念,也就是說LUN ID的作用就是擴充了Target ID。每個Target下都可以有多個LUN Device,我們通常簡稱LUN Device為LUN,這樣就可以說每個裝置的描述就有原來的Target x變成Target x LUN y了,那麼顯而易見的,我們描述裝置的能力增強了。就好比,以前你給別人郵寄東西,寫地址的時候,可以寫:
  xx市

人民大街54號 xxx(收)

  但是自從高樓大廈越來越多,你不得不這麼寫:

  xx市人民大街54號xx大廈518室 xxx (收)

  所以我們可以總結一下,LUN就是我們為了使用和描述更多裝置及物件而引進的一個方法而已,一點也沒什麼特別的地方。

LUN是什麼東西

  LUN ID不等於某個裝置,只是個號碼而已,不代表任何實體屬性,在我們的實際環境裡,我們碰到的LUN可能是磁碟空間,可能是磁帶機,或者是media changer等等。

  LUN的神祕之處(相對於一些新手來說)在於,它很多時候不是什麼可見的實體,而是一些虛擬的物件。比如一個陣列櫃,主機那邊看作是一個Target Device,那為了某些特殊需要,我們要將磁碟陣列櫃的磁碟空間劃分成若干個小的單元給主機來用,於是就產生了一些什麼邏輯驅動器的說法,也就是比Target Device級別更低的邏輯物件,我們習慣於把這些更小的磁碟資源稱之為LUN0、LUN1、LUN2…什麼的。而

作業系統的機制使然,作業系統識別的最小儲存物件級別就是LUN Device,這是一個邏輯物件,所以很多時候被稱為Logical Device。

  有人說,我的Windows裡,就認到一個磁碟呀,沒看到什麼LUN的說法,是不是LUN=Physical Disk呢?回答是否定的,只要你注意,磁碟的屬性裡就可以看到有一個LUN的值,只是因為你的Disk沒有被劃分為多個儲存資源物件,而將整個磁碟當作一個LUN來用,LUN ID預設為零,如此而已。

  我們曾經碰到過這樣的問題,比如有人問,我們有一個磁碟陣列,連到了兩個主機上,我們劃分了一個LUN給兩個主機認到,然後我們想,先在作業系統將磁碟分為兩個分割槽,讓兩個主機分別使用兩個分割槽,然後再出現某一臺主機宕機之後,使用叢集

軟體將該分割槽切換到另外一個主機上去,這樣可行嗎?答案也是否定的,叢集軟體操作的磁碟單元是LUN,而不是分割槽,所以該操作是不可行的。當然,在一些環境,一般也是一些要求比較低的環境,可以在多個主機上掛載不同的磁碟分割槽,但是這種情況下,實際上是沒有涉及到磁碟的切換的,所以在一些高要求的環境裡,這種情況根本就不允許存在。

  還要說明的地方是,在有些廠商和有些產品的概念裡,LUN ID被繫結到了具體的Device上,比如IBM的一些帶庫,整個帶庫只有一個Target ID,然後changer,tape drive被分別分配為LUN0、LUN1、LUN2…,但是我們要注意到,這只是產品做了特別設計,也是少數情況。

儲存和主機的LUN概念區別

  還有很多新手總是把陣列裡面的磁碟和主機的內部磁碟的一些概念搞混淆了。

  在磁碟陣列和磁帶庫大行其道的時代,儲存越來越智慧化,越來越像一個獨立的機器,實際上儲存和主機的電氣獨立本來就是一個必然趨勢,俗話說得好,兒大要分家嘛。在儲存越來越重要的時代,儲存要自立門戶是必然的事。

  如果我們把儲存當作一個獨立的主機來看,理解起來就很簡單了。我們說到LUN的概念的時候,我們就要將分為兩個層面。一個層面就是在陣列這個機器的OS識別到的範圍,另一個層面就是伺服器的OS識別到的範圍。這兩個層面是相對獨立的,因為如果我們把儲存當作一個主機來看,那麼它自然有自己的Device、Target、LUN之說,而伺服器也有自己的Device、Target、LUN之說;另外一方面,這兩個層面又是相互關聯的,一個陣列的控制系統,大多都有虛擬化的功能,陣列想讓主機看到什麼樣的東西,主機才能看到相應的東西。當然,伺服器識別到的最小的儲存資源,就是LUN級別的。那麼主機的HBA 卡看到的儲存上的儲存資源就靠主要兩個東西來定位,一個就是儲存系統的控制器(Target),一個就是LUN ID,這個LUN是由儲存的控制系統給定的,是儲存系統的某部分儲存資源。

LUN masking,LUN mapping

  我們有了獨立的磁碟陣列用了之後,伺服器只要看到儲存的控制系統,就有可能使用磁碟陣列的磁碟資源,但是磁碟陣列不可能只為某一個伺服器來使用,所以它必須管制主機使用某部分磁碟資源。這個管制分為兩個部分:一部分就是LUN mapping,類似於綠色通道,就是保證伺服器能看到某部分儲存資源,一部分就是LUN masking,類似於警戒線,就是保證伺服器只可訪問給它分配的儲存資源,而沒分配給伺服器的資源,就不要染指了。

  實現LUN masking和LUN mapping有三種方法:一個是基於儲存控制系統來設定,一個是基於儲存交換系統來設定,一個是基於伺服器OS來設定。

  基於儲存控制系統的設定,是比較常見的設定,比如很多磁碟陣列的控制系統,本身就能設定LUN被某伺服器看到。比如FastT的partition功能。

  基於儲存交換系統的設定,也是一種常用的方法,比如常說的zoning。

  基於伺服器OS的設定,比較少採用,一般採用安裝某些作業系統上安裝某些軟體來實現,因為這個方法全靠伺服器自覺,所以比較少用,呵呵。

LUN的multi-path

  現在,儲存網路越來越發達了,一個LUN有多條通路可以訪問也不是新鮮事了。

  伺服器使用多個HBA連線到儲存網路,儲存網路又可能是由多個交換裝置組成,而儲存系統又可能有多個控制器和鏈路,LUN到伺服器的儲存網路鏈路又可能存在著多條不同的邏輯鏈路。那麼,必然的,同一個physical LUN在伺服器上必然被識別為多個裝置。因為OS區別裝置無非用的是匯流排、Target ID、LUN ID來,只要號碼不同,就認為是不同的裝置。

  由於上面的情況,多路徑管理軟體應運而生了,比如emc的powerpath,這個軟體的作用就是讓作業系統知道那些作業系統識別到LUN實際上是一個真正的physical LUN,具體的做法,就是生成一個特別的裝置檔案,作業系統操作這個特殊的裝置檔案。而我們知道,裝置檔案+driver+firmware的一個作用,就是告訴作業系統該怎麼使用這個裝置。那麼就是說,多路徑管理軟體從driver和裝置檔案著手,告訴了作業系統怎麼來處理這些身份複雜的LUN。

  LUN 邏輯單元編號企業級磁碟陣列可容納許許多多的處理器、主機埠、磁碟和快取器件,其主要作用是為了給相連的伺服器分配邏輯單元號(LUN)。伺服器可以直接與磁碟陣列連線在一起,也可以通過交換裝置與之相連。磁碟陣列的LUN掩碼和交換裝置的分割槽功能,都屬於某種形式的安全保障遮蔽,用來控制伺服器訪問LUN的許可權。一旦伺服器與LUN連線上,就可以通過當前的網路介面將資料傳輸到磁碟陣列上。值得一提的是,典型的企業級磁碟陣列一般都可以支援多種介面標準。