LUN是對存儲設備而言的,volume是對主機而言的。
lun是指硬件層分出的邏輯盤,如raid卡可以將做好的400G的raid5再分成若干個邏輯盤,以便於使用,每一個邏輯盤對應一個lun號,OS層仍把這些邏輯盤看做是物理盤。(lun最早出自scsi,后來引申到所有硬件層划分的邏輯盤)
選擇存儲設備上的多個硬盤形成一個RAID組,再在RAID組的基礎上創建一個或多個LUN(一般創建一個LUN)。許多廠商的存儲設備只支持一個RAID組上創一個LUN。此時LUN相對於存儲設備是一個邏輯設備。
當網絡中的主機連接到存儲設備時,就可以識別到存儲設備上邏輯設備LUN,此時LUN相對於主機來講就是一個“物理硬盤”,與C盤D盤所在IDC或SCSI硬盤的性屬是相同的。在該“物理硬盤”上創建一個或多個分區,再創建文件系統,才可以得到一個VOLUM。此時VOLUME相對於主機是一個邏輯設備。
從容量大小方面比較VOLUME,分區、LUN、RAID的關系如下:
VOLUME = 分區 ≤ 主機設備管理器中的磁盤 = LUN ≤ RAID ≤ 存儲設備中硬盤的總容量。
上述只是針對一般情況,VOLUME也只是針對主機來講。個別廠商對LUN和VOLUME定義與普通廠商的定義不同,甚至會起一些奇怪的名稱,這些名稱即使是存儲行業的資深人士也不一定全明白。不過只要你能分清楚其實質就行。
VOLUME = 分區 ≤ 主機設備管理器中的磁盤 = LUN ≤ RAID ≤ 存儲設備中硬盤的總容量。
time :2008/11/12 auther:skate
最近存儲要升級,對存儲的認識也更進一步了,下面是關於存儲的一些相關的概念
存儲的一些基本概念(HBA,LUN)
有些新手總是在各式各樣的概念里繞來繞去,弄的不亦樂乎。所以我就把我的一些理解寫了下來,供您參考.我說的不局限於任何一種具體產品和廠家,也可能有些說法和某些廠家的說法不一樣,但是我覺得應該算的上是本原的東西,有以不變應萬變之功效,呵呵,見笑
1、關於HBA HBA的全稱為Host Bus Adapter,即主機總線適配器。
a、總線適配器是個什么東西呢? 我們首先要了解一下主機的結構,一台計算機內部多半由兩條總線串在起來(當然實際情況會有不同,這里只討論常見的,簡單的情況),一條總線叫系統總線,一條叫I/O總線。系統總線上接了CPU,MEmory,cache什么的,I/O總線上接的就是外圍設備,現如今最常見的就是PCI總線了。這兩條總線之間用橋接的芯片或者說電路連接起來。舉個形象的例子,就好比一個城市里,有兩條主干道,一條屬於行政區,一條屬於商業區,中間有個環島,將兩條主干道連接到了一起,系統總線就好比行政區里的主干道,而I/O總線就好比商業區的主干道。系統總線和I/O總線的帶寬的單位都是以Gbyte來記,但是顯而易見的是,行政區的主干道和商業區的主干道相比的話,前者肯定更“核心”,更寬,更順暢,設計的要求也高。 我們知道,在向公仆部門要求服務的時候,是要有一些接口的部門和程序的,而橋接芯片的作用就是連接和協調兩條總線的工作的。 雖然I/O總線的速度和系統總線的帶寬相比要低很多,但是好歹也是以G來計量的,而我們知道外圍設備的速度,往往只有幾百兆,甚至幾十k而已,怎么協調工作呢?好比賣煎餅果子攤子不能直接戳到城市主干道上,怎么辦?好辦,在主干道邊上開個2000平米的小吃城,把攤子都收進去好了。那么主機總線適配器的作用也就是這個,我們就是要把外設組織起來,連接到I/O總線上去!HBA就是指Host和I/O BUS直接的一個適配器,也好比一個水管工常說的“雙通”。
b、常見的HBA有哪些呢? 比如顯卡,網卡,scsi卡,1394卡等等。我要拿出來說的就是FCHBA和ATA&IDE。我們通常說的什么Emulex的LP9002,什么Qlogic的QLA2340都是FCHBA卡,就是將Fibre Channel的設備和IO總線連接起來的適配器。ATA也是一種適配器技術,我們PC主板上的ATA接口,就是一個磁盤適配器的對外接口,要強調的就是,ATA說的是適配器技術,IDE是說得存儲外設技術,比如我們可以說IDE硬盤,IDE光驅,說ATA接口,但是說IDE接口,ATA硬盤就不時那么合適了,雖然很多情況下,大家都習慣把他們混在一起說。 描述HBA的時候,有幾個主要的規范要說一下 > 一個承上,就是說,HBA和IOBUS怎么連,我們經常說的PCI接口卡,就是指這個HBA卡是要插在PCI BUS上的PCI slot上的,但是現在的計算機上,不僅僅只有PCI總線而已,大家碰到的時候留意。 >一個啟下,就是說HBA要和外設怎么連,這樣的規范就很多了。 >再說HBA本身,比如帶寬,比如運行機制(protocol等),獨立處理能力等等 Tips:有時候我們看到的一塊卡,看到的實際是一個物理的卡,有的時候實際上是多個Adapter,好比一家機構,掛多個牌子,有的時候,一塊卡有兩條通道,好比一家公司,有兩套人馬。
2、關於lun
a、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就是我們為了使用和描述更多設備及對象而引進的一個方法而已,一點也沒什么特別的地方.
b、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.....,但是我們要注意到,這只是產品做了特別設計,也是少數情況。
c、存儲和主機的電氣獨立時代的lun的概念 還有很多新手總是把陣列里面的磁盤和主機的內部磁盤的一些概念搞混淆了。 在磁盤陣列和磁帶庫大行其道的時代,存儲越來越智能化,越來越像一個獨立的機器,實際上存儲和主機的電氣獨立本來就是一個必然趨勢,俗話說得好,兒大要分家嘛。在存儲越來越重要的時代,存儲要自立門戶是必然的事。 如果我們把存儲當作一個獨立的主機來看,理解起來就很簡單了。我們說到lun的概念的時候,我們就要將分為兩個層面。一個層面就是在陣列這個機器的os識別到的范圍,一個層面就是服務器的os識別到的范圍。這兩個層面是相對獨立的,因為如果我們把存儲當作一個主機來看,那么它自然有自己的device,target,lun之說,而服務器也有自己的device,target,lun之說;另外一方面,這兩個層面又是相互關聯的,一個陣列的控制系統,大多都有虛擬化的功能,陣列想讓主機看到什么樣的東西,主機才能看到相應的東西。當然,服務器識別到的最小的存儲資源,就是lun級別的。那么主機的HBA卡看到的存儲上的存儲資源就靠主要兩個東西來定位,一個就是存儲系統的控制器(target),一個就是lun id,這個lun是由存儲的控制系統給定的,是存儲系統的某部分存儲資源。
d、lun masking,lun mapping 我們有了獨立的磁盤陣列用了之后,服務器只要看到存儲的控制系統,就有可能使用磁盤陣列的磁盤資源,但是磁盤陣列不可能只為某一個服務器來使用,所以他必須管制主機使用某部分磁盤資源。這個管制分為兩個部分:一部分就是lun mapping,類似於綠色通道,就是保證服務器能看到某部分存儲資源,一部分就是lun masking,類似於警戒線,就是保證服務器只可訪問給它分配的存儲資源,而沒分配給服務器的資源,就不要染指了。 實現lun masking和lun mapping有三種方法:一個是基於存儲控制系統來設置,一個是基於存儲交換系統來設置,一個是基於服務器os來設置。 基於存儲控制系統得設置,是比較常見的設置,比如很多磁盤陣列的控制系統,本身就能設置lun被某服務器看到。比如FastT的partition功能。 基於存儲交換系統的設置,也是一種常用的方法,比如常說的zoning。 基於服務器os的設置,比較少采用,一般采用安裝某些操作系統上安裝某些軟件來實現,因為這個方法全靠服務器自覺,所以比較少用,呵呵。
e、lun的multi-path 現在,存儲網絡越來越發達了,一個lun有多條通路可以訪問也不是新鮮事了。 服務器使用多個HBA連接到存儲網絡,存儲網絡又可能是由多個交換設備組成,而存儲系統又可能有多個控制器和鏈路,lun到服務器的存儲網絡鏈路又可能存在着多條不同的邏輯鏈路。那么,必然的,同一個physical lun在服務器上必然被識別為多個設備。因為os區別設備無非用的是總線,target id,lun id來,只要號碼不同,就認為是不同的設備。 由於上面的情況,多路徑管理軟件應運而生了,比如emc的powerpath,這個軟件的作用就是讓操作系統知道那些操作系統識別到lun實際上是一個真正的physical lun,具體的做法,就是生成一個特別的設備文件,操作系統操作這個特殊的設備文件。而我們知道,設備文件+driver+firmware的一個作用,就是告訴操作系統該怎么使用這個設備。那么就是說,多路徑管理軟件從driver和設備文件着手,告訴了操作系統怎么來處理這些身份復雜的lun。
3、關於備份(Backup)和高可用性(High availability) 備份,從字面的意思來理解,其實就是現時存在和應用的一個實體的后備實體; 高可用性,即是指我們硬件的環境、設施、數據、應用系統等,在復雜環境下可用的能力和可能性達到一個較高的值; 在現實世界里,我們都講究有一個穩定,可靠,所以我們經常在計算機環境設計里,涉及到高可用性和備份等等元素。 我首先把這兩個詞拿出來說,就是不想讓新手們在什么雙機熱備,數據備份亞,集群等等概念里暈的不也樂乎。
對於備份我主要說說以下幾個方面:
a、設備的備份
設備的備份,也就是我們在現時使用的設備之外,采取相同或者類似的設備做后備。 比如我們在服務器上采用冗余電源,也叫后備電源,我們使用單獨的硬盤來做RAID的備用盤,也叫熱備盤。 如果我們采取單獨的一台服務器來做后備,這就成了主機的備份,主機的備份有很多種方式,比較著名的就是所謂的cluster,所謂的雙機熱備和雙機容錯,我很不喜歡鼓搗這些概念,我一概稱他們為主機熱備,因為他們有一個共同的特點,就是都是為了實現主機的備份,即某一個主機失效了,有另外一個主機頂替它來運行。實現主機熱備的軟件有很多,比如IBM的HACMP,HP的MCSG,SUN的sun cluster,Compaq的Ture Cluster,Veritas的VCS,EMC的autostart,ROSE HA等等
b、數據的備份
數據的備份,就是我們在現時使用的數據之外,實現或設置另外一份不同物理體現的、內容相同的的有效數據拷貝 比如我們將生產數據拷貝到磁帶上,就是一種數據備份方式。 比如我們將生產數據復制到磁盤的另一個分區,另一個文件系統,或者拷貝到別的主機的磁盤上,等等,都是一種數據備份的方式。 實現數據備份的軟件有很多,比如一些磁帶操作的小工具,tar,cpio等,大的工具軟件有什么EMC Networker, Symantec Netbackup,CommVault,tapeware等等,數據復制的工具就更多了,操作系統的復制命令呀,emc replicator呀,srdf等等
c、應用系統的備份
應該說應用系統的備份,包含了以上兩種備份,因為一個完善的應用系統,其設備和數據都是要求有備份的,那么初次之外,做為一個應用系統,除了設備和數據,他還包含了業務程序,人員,業務邏輯,外部環境等等一系列讓應用跑起來的東西。 在這個層面,就有一個比較熱火的東西,那就是常說的遠程容災。遠程容災,就是在生產系統環境之外,在相隔較遠的物理空間,構建相同或類似的一個應用系統,以達到在必要的時候頂替原生產系統工作的目標。 要實現遠程容災的目的,除了我們說的外部環境,比如機房,電力,后勤保障,人員配備,業務程序之外,我們比較着重的一個環節,就是數據的問題,也就是我們在兩個系統之間要保證數據的相對一致,實現這個目標的方法有很多,比如磁盤陣列之間的卷復制,比如兩個主機之間文件系統上的復制,等等。當然,在一個系統里,把數據用磁帶導出來,快遞到另外一個系統地點,在用磁帶把數據導進取,也不能說不是一個辦法,但是這樣操作,經常會和業務的邏輯相違背(呵呵,這么麻煩又耽誤時間,估計一般很難接受)。
對於高可用性,我要說的是:
可用性,即是指在各種復雜環境下,我們的數據,應用等計算資源都可以保持使用的能力和可能性。比如服務器配備冗余電源,就提高了服務器的可用性,好理解,一個電源工作不正常或者能力不夠的是候,服務器不受影響嘛。再比如,我們的磁盤陣列采用雙控制器,當某個控制器和鏈路工作不正常的時候,數據的訪問能平滑的過渡到另外一個控制器上和鏈路上,這也是提高了數據和存儲設備的可用性。
那么什么是高可用性呢,我們就是一切為了提高系統可用性的實現方法和結果。
要拿出來說的就是cluster,或者雙機什么的。我們為了實現生產的應用系統的高可用性,其中一個環節就是實現服務器的高可用性,就是某服務器失效或者能力不足時,應用能平滑的過渡到另外的主機上,也就是說對於應用系統來說,服務器保證了相對的可用
那備份和高可用性有什么區別呢?
那我要說,這根本沒有可比性!因為這是兩個不同的概念,他們的着眼點是不同的。備份只是保證了有后備,而高可用性則是為了保證應用的盡快恢復。
打個比方,我們說備份就好比買保險,買保險不能保證你平安無事,但是肯定能減輕損失。我們說搞可用性,就是安全氣囊,ABS,能讓你快速的重新開始或者說將危險消弭於萌芽時刻。 所以說我們做備份和提高可用性,兩手都不可放松,也不互相矛盾。就好比買了好車,你就不買保險,或者你買了保險,就可以飆車,都是愚蠢的。
一、LVM簡介
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它由Heinz Mauelshagen在Linux 2.4內核上實現。LVM將一個或多個硬盤的分區在邏輯上集合,相當於一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對於普通的磁盤分區有很大的靈活性。
與傳統的磁盤與分區相比,LVM為計算機提供了更高層次的磁盤存儲。它使系統管理員可以更方便的為應用與用戶分配存儲空間。在LVM管理下的存儲卷可以按需要隨時改變大小與移除(可能需對文件系統工具進行升級)。LVM也允許按用戶組對存儲卷進行管理,允許管理員用更直觀的名稱(如"sales'、 'development')代替物理磁盤名(如'sda'、'sdb')來標識存儲卷。
如圖所示LVM模型:
由四個磁盤分區可以組成一個很大的空間,然后在這些空間上划分一些邏輯分區,當一個邏輯分區的空間不夠用的時候,可以從剩余空間上划分一些空間給空間不夠用的分區使用。
二、 LVM基本術語
前面談到,LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁盤分區布局,提供一個抽象的盤卷,在盤卷上建立文件系統。首先我們討論以下幾個LVM術語:
物理存儲介質(The physical media):這里指系統的存儲設備:硬盤,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。
物理卷(physical volume):物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組(Volume Group):LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
邏輯卷(logical volume):LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
PE(physical extent):每一個物理卷被划分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。
LE(logical extent):邏輯卷也被划分為被稱為LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
簡單來說就是:
PV:是物理的磁盤分區
VG:LVM中的物理的磁盤分區,也就是PV,必須加入VG,可以將VG理解為一個倉庫或者是幾個大的硬盤。
LV:也就是從VG中划分的邏輯分區
如下圖所示PV、VG、LV三者關系:
三、 安裝LVM 首先確定系統中是否安裝了lvm工具: [root@www root]# rpm –qa|grep lvm lvm-1.0.3-4 如果命令結果輸入類似於上例,那么說明系統已經安裝了LVM管理工具;如果命令沒有輸出則說明沒有安裝LVM管理工具,則需要從網絡下載或者從光盤裝LVM rpm工具包。
四、 創建和管理LVM
要創建一個LVM系統,一般需要經過以下步驟: 1、 創建分區
使用分區工具(如:fdisk等)創建LVM分區,方法和創建其他一般分區的方式是一樣的,區別僅僅是LVM的分區類型為8e。如下列圖所示:
查看磁盤分區表
使用fdisk創建分區,根據設備文件的絕對路徑(/dev/hda)進入分區管理
一定要指定分區的格式為8e,這是LVM的分區格式
創建完成VG之后,才能從VG中划分一個LV。
創建了一個名字為lvData,容量大小是100M的分區,其中:-L:指定LV的大小 -n:指定LV的名。Vo1Group00:表示從這個VG中划分LV;
下一步需要對LV進行格式化(使用mksf進行格式化操作),然后LV才能存儲資料
將格式化后的LV分區掛載到指定的目錄下,就可以像普通目錄一樣存儲數據了
掛載之后,可以看到此LV的容量。
如果要在系統啟動的時候啟動LV,最好是將lvData寫入fstable 文件中,如下所示:
使用Vim編輯器,打開/etc/fstab,在最后一行添加如圖中所示,其中/dev/VolGroup00/lvData指定需要掛載的分區LV,/root/test指定要掛載的目錄(掛載點),ext3分區文件系統格式,其它使用默認即可
擴容當前分區
一、首先創建一塊新的分區:
fdisk /dev/hda
n
l #選擇邏輯分區,如果沒有,則首先創建擴展分區,然后再添加邏輯分區(硬盤:最多四個分區P-P-P-P或P-P-P-E)
6 #分區號(從5開始),/dev/hda6
t 8e #分區類型8e表示LVM分區
w #寫入分區表
partprobe #重讀分區表
mkfs –t ext3 /dev/hda6 #格式化
partx /dev/hda #查看當前硬盤的分區表及使用情況
二、創建PV,擴容VG,LV
pvcreate /dev/hda6
vgdisplay #查看當前已經存在的VG信息,以存在VG:VolGroup00為例
vgextend VolGroup00 /dev/hda6 #擴展VolGroup00
lvdisplay #查看已經存在的LV信息,以存在LV:LogVol01為例
lvextend –L 1G /dev/VolGroup00/LogVol01 #擴展LV
resize2fs /dev/VolGroup00/LogVol01 #執行該重設大小,對於當前正在使用的LogVol01有效
df –h #查看掛載情況,已經擴容