平時有很多朋友在咨詢LUN和存儲卷的概念,今天剛好有點時間,在網上查了查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?
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有什么區別,然后爭論不休。由上邊我們可以知道什么是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和卷在物理上可能是同一個東西,只是從不同的角度,不同的層次去看它,去理解它。當然,對計算機來說,這些不同確實數據處理過程的需要,也有必要弄清楚的。
深入理解邏輯卷的概念
1、深入理解邏輯卷的概念:
什么是物理卷,什么是邏輯卷組,什么是邏輯卷?初始接觸很多人都搞不清楚,我們先來看一張圖:
從上面的圖中,我們就能很形象的理解物理卷,邏輯卷組,邏輯卷的概念:
• 物理卷(Physical Volume, PV):LVM是操作系統識別到的物理磁盤(或者RAID提交的邏輯磁盤LUN)改了個叫法,叫物理卷, 物理卷可以是一個磁盤,也可以是磁盤中的一個分區。它為LVM提供了存儲介質。
• 邏輯卷組(Logical Volume Group, LVG):多個PV可以被邏輯的放到一個VG中,邏輯卷組是一個虛擬的打存儲空間,邏輯上是連續的,它可以由多塊PV組成,此時VG會將所有PV首尾相連,組成一個邏輯上連續編址的大存儲池,這就是VG。在一個VG上可以創建多個邏輯卷(LV)。
• 物理區塊(Physical Partion):它是在邏輯上再將一個VG分割成連續的小塊(注意,是邏輯上的分割,而不是物理上) ,也就是說LVM會記錄每個PP的大小(具體有幾個扇區組成啊),還會記錄PP的序號偏移。這樣就相當於在VG這個大池中順序切割,比如我們假設一個PP的大小是4MB,那么由之前的知識知道一個扇區是512B,所以4MB/512B =8192 個扇區。 如果PV是實際的一塊物理磁盤,那么這些扇區就是連續的。如果PV本身是經過RAID控制器虛擬化形成的虛擬盤(LUN),那么這些扇區可能位於若干條帶中:也就是說這8192個扇區物理上不一定連續。
• 邏輯區塊(logical Partition):PP可以再次組成LP,邏輯區塊是比較難理解的,一個LP可以對應一個PP,也可以對應多個PP。前者對應前后沒有什么區別,而后者,又分為兩種情況:一種為多個PP,組成一個大的LP,像是RAID0一樣;另一種是一個LP對應幾份PP,這幾份PP沒一份內容都一樣,類似於RAID1,對個PP內容互為鏡像,然后用一個LP來代表它們,往這個LP寫數據,也就同時寫入了這個LP對應的幾份PP中。
• 邏輯卷(Logical Volume, LV): 若干LP再經過連續組合成LV,也就是LVM所提供的最終可用來存儲數據的單位。生產邏輯卷,在主機看來還是和普通磁盤一樣,對其進行分區,格式化等。每個邏輯分區上都可以創建具體的文件系統。
LVM看起來很復雜,其實操作起來很簡單,我們理一下思路,首先創建PV(真實或者RAID提供的LUN)——> 將PV加入VG ——> 在VG中創建LV ——> 然后格式化這個LV,當成普通硬盤來使用。