天天看點

關于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了,那麼顯而易見的,我們描述裝置的能力增強了。

正如我們的電腦中有一塊實體上的硬碟,我們要給它進行分區,分為邏輯盤:如C槽、D盤、E盤..  

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

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

二、到底什麼是LUN?

  有人說,我的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有什麼差別,然後争論不休。由上邊我們可以知道什麼是LUN。LUN就是英文 Logical unit number的縮寫,即邏輯單元号,它實際上是在SCSI-3中定義的,而并非單用于存儲範疇,也可以指使用SCSI協定的一切外圍裝置,如錄音帶機、SCSI列印機等等。從SCSI-3的SAM模型中我們知道,SCSI-3(或者之後的版本)的協定層規定,對于16位寬的SCSI總線,其尋址範圍隻有16個,即隻能挂載16個外圍裝置,每個裝置稱為一個target。為了提高總線的尋址能力,于是又引入了一層,它規定在每個target上,還可以虛拟(也可以實際連接配接)出多個裝置,例如某個target上可能接了一個錄音帶機,一個列印機,他們共用一個target位址,但為了區分他們,于是就用LUN加以差別,錄音帶機假設為LUN0,列印機假設為LUN2,這樣就解決了多裝置的尋址問題。

  這是實際裝置連接配接的例子,存儲陣列(比如:HP leftHand P4000 SAN)是最好的虛拟裝置的例子。一個存儲磁盤陣列在SCSI總線看來是一個Target,占用一個SCSI的Target位址,但存儲陣列的存儲空間太大,我們需要将其分成不同的部分,以供不同的應用,達到集中存儲,集中管理的目的。是以在分割出來的每個存儲部分(或區域)我們就用Lun來差別,如LUN1代表位址塊0-1023,LUN2代表位址塊1024-65535等等。從上面可以看出,計算機在使用SCSI标準(注意我這裡用的标準一詞,代表了統含SAM模型中的4層,而并不使用接口,協定或者指令等詞語)接外挂存儲時,使用的是總線(BUS)-目标(Target)-LUN三元尋址方案,總線指的是你的計算機上有幾條SCSI總線,有幾塊SCSI卡?目标指的是在該總線上,裝置的目标位址即常說的SCSI位址是多少?LUN指的是裝置在一個Target上配置設定的邏輯位址,邏輯單元号。這種尋址方案和裝置的連接配接方式,類似于實體上星形連接配接,邏輯上總線連接配接的一種網絡拓撲。

那麼什麼又是存儲卷呢?這要從存儲的卷管理器說起。存儲卷管理器是作業系統中的一個對象,他主要負責存儲塊裝置的線上管理。當我們的一個存儲LUN接入計算機後,計算機發現這個裝置的存在,就需要在卷管理器上注冊,卷管理器為存儲卷提供注冊的虛拟接口,擷取存儲LUN的基礎資訊,如空間大小,三元位址,塊大小,起止位址,健康情況等,再為其建立一個對應的資料結構的抽象,這樣計算機通過卷管理器,就能夠動态的撲捉被注冊的存儲LUN的實時資訊,實作動态管理。一個存儲LUN被卷管理器進行注冊抽象之後,就被卷管理器認為是一個可被魚肉的直接下屬,它可以再次被分割成更小區域,當然也可以不分割,再對分割後或者沒分割後的存儲空間進行資料抽象,建立相關的資料結構,供檔案系統層調用。

是以,存儲LUN和卷在實體上可能是同一個東西,隻是從不同的角度,不同的層次去看它,去了解它。當然,對計算機來說,這些不同确實資料處理過程的需要,也有必要弄清楚的。

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1793612,如需轉載請自行聯系原作者

繼續閱讀