天天看點

存儲和相關基礎知識

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。

繼續閱讀