概念釋義
LUN的全稱是Logical Unit Number,也就是邏輯單元號。我們知道SCSI匯流排上可掛接的設備數量是有限的,一般為8個或者16個,我們可以用Target ID(也有稱為SCSI ID的)來描述這些設備,設備只要一加入系統,就有一個代號,我們在區別設備的時候,只要說幾號幾號就可以了。
SCSI(小型計算機系統接口)是一個並行接口,它可以通過一條電纜同時連線八個設備;電纜和主機(電腦)適配器組成了SCSI匯流排。匯流排允許兩個設備之間不通過主機直接交換數據。在SCSI程式中每個設備都分配了一個唯一的數字,其中8位(窄)帶是0-7之間任意一個數,16位(寬)帶是8-16位中任意一個數。這些設備申請輸入輸出操作,他們是驅動者,設備執行的這些操作是目標。每一個目標有通過設備自身的控制器連線八個附加設備的能力;這些設備是邏輯單元,其中的每個都分配有用於識別SCSI控制命令過程的唯一識別號。
而實際上我們需要用來描述的對象,是遠遠超過該數字的,於是我們引進了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 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的概念的時候,我們就要將分為兩個層面。一個層面就是在陣列這個機器的OS識別到的範圍,另一個層面就是伺服器的OS識別到的範圍。這兩個層面是相對獨立的,因為如果我們把存儲當作一個主機來看,那么它自然有自己的Device、Target、LUN之說,而伺服器也有自己的Device、Target、LUN之說;另外一方面,這兩個層面又是相互關聯的,一個陣列的控制系統,大多都有虛擬化的功能,陣列想讓主機看到什麼樣的東西,主機才能看到相應的東西。當然,伺服器識別到的最小的存儲資源,就是LUN級別的。那么主機的HBA 卡看到的存儲上的存儲資源就靠主要兩個東西來定位,一個就是存儲系統的控制器(Target),一個就是LUN ID,這個LUN是由存儲的控制系統給定的,是存儲系統的某部分存儲資源。
磁碟管制
我們有了獨立的磁碟陣列用了之後,伺服器只要看到存儲的控制系統,就有可能使用磁碟陣列的磁碟資源,但是磁碟陣列不可能只為某一個伺服器來使用,所以它必須管制主機使用某部分磁碟資源。這個管制分為兩個部分:一部分就是LUN mapping,類似於綠色通道,就是保證伺服器能看到某部分存儲資源,一部分就是LUN masking,類似於警戒線,就是保證伺服器只可訪問給它分配的存儲資源,而沒分配給伺服器的資源,就不要染指了。
實現LUN masking和LUN mapping有三種方法:一個是基於存儲控制系統來設定,一個是基於存儲交換系統來設定,一個是基於伺服器OS來設定。
基於存儲控制系統的設定,是比較常見的設定,比如很多磁碟陣列的控制系統,本身就能設定LUN被某伺服器看到。比如FastT的partition功能。
基於存儲交換系統的設定,也是一種常用的方法,比如常說的zoning。
基於伺服器OS的設定,比較少採用,一般採用安裝某些作業系統上安裝某些軟體來實現,因為這個方法全靠伺服器自覺,所以比較少用。
多訪問
現在,存儲網路越來越發達了,一個LUN有多條通路可以訪問也不是新鮮事了。
伺服器使用多個HBA連線到存儲網路,存儲網路又可能是由多個交換設備組成,而存儲系統又可能有多個控制器和鏈路,LUN到伺服器的存儲網路鏈路又可能存在著多條不同的邏輯鏈路。那么,必然的,同一個physical LUN在伺服器上必然被識別為多個設備。因為OS區別設備無非用的是匯流排、Target ID、LUN ID來,只要號碼不同,就認為是不同的設備。
由於上面的情況,多路徑管理軟體應運而生了,比如emc的powerpath,這個軟體的作用就是讓作業系統知道那些作業系統識別到LUN實際上是一個真正的physical LUN,具體的做法,就是生成一個特別的設備檔案,作業系統操作這個特殊的設備檔案。而我們知道,設備檔案+driver+firmware的一個作用, 就是告訴作業系統該怎么使用這個設備。那么就是說,多路徑管理軟體從driver和設備檔案著手,告訴了作業系統怎么來處理這些身份複雜的LUN。
LUN 邏輯單元編號企業級磁碟陣列可容納許許多多的處理器、主機連線埠、磁碟和快取器件,其主要作用是為了給相連的伺服器分配邏輯單元號(LUN)。伺服器可以直接與磁碟陣列連線在一起,也可以通過交換設備與之相連。磁碟陣列的LUN掩碼和交換設備的分區功能,都屬於某種形式的安全保障禁止,用來控制伺服器訪問LUN的許可權。一旦伺服器與LUN連線上,就可以通過當前的網路接口將數據傳輸到磁碟陣列上。值得一提的是,典型的企業級磁碟陣列一般都可以支持多種接口標準。
技巧
在我們的IBMShark上,我可以在整個RAID集之上創建一個LUN,其在主機計算機上顯示為一個磁碟,我還可以創建幾個小的LUN並且在主機計算機上有幾個磁碟。哪個做法更好?曾經有人告訴我,多個小的LUN要比一個大的LUN更好,因為多個小的LUN將允許更多的來自作業系統(OS)的並發I / O。
多個較小的LUN的優點在於你可以把它們分散在許多陣列組並且使用邏輯卷管理器(Logical Volume Manager,LVM)來創建卷組(串接或者RAID 0)。這將會給後端帶來最佳的潛在性能。不過,這不是LUN的大小的問題。這是向多個陣列組分布I/O的能力的問題。在Shark上,我建議一個陣列組在同一RAID 0卷組的LUN數量不超過4個。
多個小的LUN的缺點在於消耗了內部地址。如果LUN的大小為2 GB,那么無論你使用哪種大小的物理磁碟,Shark的最大容量都是8 TB (4096 x 2 GB)。
前景
作為一個抽象的單元的存儲LUN即邏輯卷的概念應該摒棄,基於LUN的概念已經過時了。
Marks在專業網路媒體公司TechTarget舉辦的存儲決策會議上說,是時候基於虛擬機(VM)來管理負載。虛擬機是因為套用的目的而存在的,而不僅僅像LUN那樣僅為存儲目的而存在”。在虛擬化環境中,隨著集成和集群化的負載的增加,作為存儲抽象單元的LUN已經不再滿足套用的需求。
在使用備份功能,比如快照的情況下,這種轉變尤為重要。在大的數據池中,採用基於虛擬機的方式遠遠比基於LUN進行快照的方式更加高效,因為基於虛擬機的快照恰好包含了一個有用的虛擬機。目的是提供套用級一致性的靜默快照。用較有深度的技術觀點來看vSphere快照性能很差。
展現形式
對於塊設備,LUN一般通過使用光纖通道,乙太網光纖通道(FCoE)或者iSCSI等來呈現。光纖通道和FCoE通過使用特定的主機匯流排適配器(HBA)或CNA(聚合網路適配器),能夠更容易的將主機IP流量從存儲網路流量中隔離開來。但即使一個特定的存儲網路可用,仍有一些重要的設計問題需要考慮。
首先,為保證存儲的彈性和高性能,可以通過多個光纖通道接口來提供LUN。我們把存儲彈性作為給定的,因為這一般是存儲系統管理員的標準實踐。就性能而言,多個HBA(或雙口HBA)通過面向性能的分層技術允許vSphere和Hyper-V進行物理分段。