用開源軟件建立一個經(jīng)濟(jì)型SAN
近年來,存儲區(qū)域網(wǎng)絡(luò)或SAN受到許多人關(guān)注,但只有極少數(shù)人知道它究竟是什么,為什么想要建立一個SAN,一個最主要的原因是當(dāng)你坐下來仔細(xì)看一看它的造價時,事情就明白了,本文會一一為你解答什么是SAN,你為什么想要建立一個,以及如何使用開源軟件建立一個經(jīng)濟(jì)型的SAN。
根據(jù)你的IT背景不同,你可能會認(rèn)為SAN是一個偉大的重新也可能會認(rèn)為是一個很老的想法,但我們跳過歷史因素認(rèn)為SAN是一個新的創(chuàng)意,在普通PC中,任何東西都是安裝在一個盒子(機(jī)箱)中的:如CPU,內(nèi)存,硬盤。當(dāng)你向其中添加硬盤時,可能會很困難,因此有人想出了在盒子(機(jī)箱)外面再放一個盒子來安放新添加的設(shè)備,硬盤盒子可能有它自身的一些功能,如通過某種類型的RAID控制器基于條帶,鏡像(或二者同時)實(shí)現(xiàn)彈性存儲,如何將這個硬盤盒子附加到包括處理器的盒子就顯得非常重要了。
SCSI就是一種可以實(shí)現(xiàn)這個任務(wù)的技術(shù),它在短距離環(huán)境下工作得很好,但在長距離(長線纜)環(huán)境下就不行了,就是在這種情況下,光纖通道出現(xiàn)了,正好彌補(bǔ)SCSI技術(shù)的不足,說簡單點(diǎn)就是:光纖通道使用的是光纖維發(fā)送SCSI命令而不是傳統(tǒng)的電信號電纜,光纖通道也實(shí)現(xiàn)了類似以太網(wǎng)交換的交換技術(shù),它允許多臺PC同時與同一個硬盤盒子進(jìn)行會話,或一臺PC同時與多個硬盤盒子會話,此外,這些機(jī)器有多種途徑從硬盤盒子獲取數(shù)據(jù)(訪問路徑冗余),這就是SAN最基本的功能,SAN是通過光纖網(wǎng)絡(luò)連接到硬盤盒子的機(jī)器集合,它的速度非常快,最初的第一代光纖通道就達(dá)到了1Gb/sec,目前已經(jīng)出現(xiàn)了10Gb/sec的光纖通道產(chǎn)品。
乍一看,SAN并不是如傳說中那么優(yōu)秀,如果你的數(shù)據(jù)非常多,并且需要從多個不同的地方訪問(實(shí)現(xiàn)冗余),搭建一個SAN拓?fù)涫墙鉀Q你的需求的一種辦法,你必須要為此進(jìn)行存儲投資預(yù)算,而不是簡單地分布式部署多臺機(jī)器。
最近,部分廠家指出1Gb/sec產(chǎn)品會大幅降價,不過這種產(chǎn)品不是采用的的光纖通道技術(shù),而是利用了1000Base T以太網(wǎng)技術(shù),使用傳統(tǒng)的銅纜作為傳輸介質(zhì),但為了讓SCSI命令能在以太網(wǎng)上傳輸,需要尋找一種新的方法,以便SAN能在1000Base T上正常運(yùn)轉(zhuǎn),于是iSCSI誕生了,它將所有SCSI命令都封裝在ip包中進(jìn)行傳輸,也就是說,如果你手上有一臺機(jī)器并有一個支持iSCSI的硬盤盒子,那你現(xiàn)在就可以利用現(xiàn)有的以太網(wǎng)獲得一個SAN,它允許你利用以太網(wǎng)和ip提供的所有特性對路線進(jìn)行排序,并輸出可選的路徑,不用考慮光纖通道是如何完成轉(zhuǎn)換的,這樣iSCSI SAN就誕生了,目前大量廠家都開始支持iSCSI SAN,本文剩下的部分,我將向你介紹如何使用開源軟件(大部分開源)搭建一個可靠的,有彈性的iSCSI SAN。
Initiator和target
在繼續(xù)之前,我們先了解幾個iSCSI術(shù)語,在iSCSI下,分兩部分:initiator(需要數(shù)據(jù)的機(jī)器)和target(提供數(shù)據(jù)的機(jī)器),在基于光纖通道的SAN下,initiator是一臺計算機(jī),target是一個RAID陣列,但在我們的例子中,我們將要建立一個由兩臺PC組成的主--被動服務(wù)器對的iSCSI target,其中一臺機(jī)器擔(dān)任target處理來自initiator的iSCSI請求,然后將其磁盤鏡像到另一臺作為后備主機(jī)的機(jī)器是,如果活動主機(jī)失效,后備主機(jī)將接管并提供iSCSI服務(wù),當(dāng)主服務(wù)器修好后,重新同步后備機(jī)器的磁盤,并重新取回iSCSI服務(wù)權(quán),這個任務(wù)非常艱巨,寫本文時我都沒有信心它是否能正常工作,可能會正常運(yùn)轉(zhuǎn),我們試目以待吧!
為了實(shí)現(xiàn)這個計劃,我們將使用兩臺一樣的Dell 1U機(jī)架式服務(wù)器,用兩個千兆以太網(wǎng)端口交叉連接,在這兩臺服務(wù)器上我們將安裝一組開源軟件,首先,我們需要安裝一個操作系統(tǒng),我們選擇使用Linux,千萬不要覺得驚奇,在各種發(fā)行版中我們選擇了CentOS 4,它是基于Red Hat Enterprise Linux(RHEL)的社區(qū)企業(yè)級Linux發(fā)行版,如果你不想支付Red Hat的年度升級服務(wù)費(fèi)用,但又想使用優(yōu)秀的RHEL,那么CentOS就是你的首選,CentOS只是獲取RHEL的源碼,重新編譯,重新進(jìn)行打包并發(fā)布,因此你可以免費(fèi)獲取來自RHEL的優(yōu)秀軟件包,即使你不能獲取Red Hat的升級服務(wù),你也能進(jìn)行升級。
最近,CentOS已經(jīng)開始吸收額外的軟件進(jìn)入它自己的發(fā)行版,我們將使用到其中的兩個,第一個是Heartbeat,它來自Linux高可用項(xiàng)目(http://www.linux-ha.org/),使用它我們可以實(shí)現(xiàn)主--被動服務(wù)器故障轉(zhuǎn)移,正如它的名字暗示的那樣,Heartbeat允許一組PC相互監(jiān)視對方的活動(通過心跳信號),檢測到‘死亡’信號就接管該節(jié)點(diǎn)的服務(wù),第二個軟件包是DRBD,它允許在兩臺機(jī)器之間共享一個塊設(shè)備(通常是一個磁盤分區(qū)),使用該設(shè)備的機(jī)器就是主服務(wù)器,它對設(shè)備產(chǎn)生的任何更新都會傳輸給后備服務(wù)器,如果主服務(wù)器失效,后備服務(wù)器就成為主服務(wù)器,當(dāng)失效的服務(wù)器修好后,重新同步當(dāng)前的主服務(wù)器,然后接管資源提供服務(wù),后備服務(wù)器重新成為后備。
在CentOS上安裝這兩個軟件非常簡單,輸入命令‘yum groupinstall drbd-heartbeat’,然后將drbd安裝為內(nèi)核模塊,用‘uname -r’獲取操作系統(tǒng)的版本,在我們的系統(tǒng)上輸出內(nèi)容是‘2.6.9-22.0.1.ELsmp’,因此要將drbd安裝為內(nèi)核模塊,只需要輸入‘yum install kernel-module-drbd-2.6.9-22.0.1.ELsmp’。
剩下的就是安裝iSCSI target軟件本身了,在互聯(lián)網(wǎng)上一搜會搜到一大把,但很多都是不能用的,我們選擇了最近才創(chuàng)建的項(xiàng)目,叫做iSCSI Enterprise Target(http://iscsitarget.sourceforge.net/),但從其網(wǎng)站上的消息指出它不能在我們的CentOS 4上運(yùn)行,因?yàn)橹辽傩枰?.6.13或更高的內(nèi)核支持(我們的內(nèi)核是2.6.9),然而,這是由Red Hat提供的內(nèi)核,多少都經(jīng)過特殊修改,Red Hat所有的軟件包都傾向于從基層開始(這里是2.6.9),然后不停地打補(bǔ)丁,因此在2.6.9和以后的內(nèi)核之間有差別,但已經(jīng)被集成到Red Hat的內(nèi)核中去了,在基于Wiki的文檔上已經(jīng)有如何在Red Hat上安裝的記錄了,按照這些命令在這兩臺機(jī)器上安裝好target軟件。
本文引用地址:http://2s4d.com/article/201706/354623.htm
配置iSCSI
讓我們從一個簡單的情景開始,我們在一臺只有一塊硬盤的機(jī)器,通過iSCSI將其發(fā)布出去,所有配置都放在一個文件中,/etc/ietd.conf,編輯這個文件,包括下面三行內(nèi)容:
IncomingUser joe secretsecret
這一行設(shè)置只允許一個用戶訪問(我們使用了12個字母的密碼secretsecret,它在Windows下也能工作),下一行是:
Target iqn.2005-11.uk.co.widearea:storage2.diskc
這一行安裝常規(guī)iSCSI規(guī)范命名了一個target,它由年-月,后面跟一個反向的域名和主機(jī)標(biāo)識符組成,最后一行必須縮進(jìn):
Lun 0 Path=/dev/sdb,Type=fileio
這一行指出我們將要使用SCSI磁盤/dev/sdb作為iSCSI設(shè)備,然后我們在另一臺機(jī)器上做類似的事情。
現(xiàn)在我們需要一個initiator,為了證明能跨平臺運(yùn)行,我們選擇了Microsoft iSCSI initiator,boxout顯示了它如何與iSCSI Enterprise Target一起工作,在我們的例子中,我們從每個機(jī)器上加載了在Windows機(jī)器上的iSCSI磁盤,我們將它們設(shè)為動態(tài)磁盤并加入鏡像,在格式化和同步后,這樣我們就在Windows機(jī)器上具有一個彈性的鏡像,它是通過在Linux盒子上建立IP SAN實(shí)現(xiàn)的,如果其中一臺機(jī)器消失了,鏡像會中斷,但Windows會繼續(xù)向其他機(jī)器更新,當(dāng)其他機(jī)器返回時,鏡像可能已經(jīng)修復(fù),Windows將會進(jìn)行磁盤同步,然而,最大的問題是Microsoft還不支持使用iSCSI作為動態(tài)磁盤,因此我們必須另覓它法。
首先我們要做的是要讓DRBD運(yùn)行起來,如果你參閱了預(yù)安裝的/etc/drbd.conf文件,這會非常簡單,需要做的是從這個文件中找到第一個有兩個“on”標(biāo)志的資源小節(jié),它定義了如何將磁盤塊設(shè)備整合到一起,需要提供機(jī)器名,ip地址和磁盤分區(qū),然后將這個文件拷貝到兩臺機(jī)器上,運(yùn)行/etc/init.d/drbd start,所有都會工作起來,文件/proc/drbd顯示了探測到的東西和兩臺機(jī)器上的輔助、輔助狀態(tài)的磁盤,當(dāng)它正常工作起來后,其中一臺機(jī)器就成為主服務(wù)器,另一臺就成為后備機(jī)器,然而,最初會顯示狀態(tài)不一致,不允許你將某一臺機(jī)器設(shè)為主服務(wù)器,第一次設(shè)備DRBD設(shè)備時,你需要告訴哪一臺是主服務(wù)器,然后你才能在其上運(yùn)行‘drbdadm’命令完成主服務(wù)器的設(shè)置,然后再看/proc/drbd時就會發(fā)現(xiàn)正在做同步操作。
現(xiàn)在DRBD設(shè)備已經(jīng)運(yùn)行起來了,需要修改/etc/ietd.conf,要將新設(shè)備/dev/drbd0包括進(jìn)來,也就是前面談到的/dev/sdb,然后啟動iSCSI target,并在另一臺機(jī)器上掛載。
如果一切工作正常,開始下一步工作,下一階段就是安裝Heartbeat軟件,我們需要修改三個文件,/etc/ha.d目錄下的Readme文件會告訴你在哪里去找例子,首先需要安裝ha.cf文件,每臺機(jī)器上都應(yīng)該不一樣,在這個文件中,我們需要添加‘node’行指出這兩個節(jié)點(diǎn)的名字,并且還要一行‘ucast’指出其他機(jī)器的地址,然后我們需要安裝authkeys文件,在這兩臺機(jī)器上這個文件應(yīng)該一樣,最后我們需要在這兩臺機(jī)器上安裝haresources文件,它的內(nèi)容如下:
machine1 10.0.0.46 drbddisk::r0 iscsi-target
這里的machine1是在ha.cf中定義的主服務(wù)器名,ip地址是對外提供服務(wù)的地址,它與普通的ip地址有點(diǎn)不一樣,最后兩項(xiàng)告訴Heartbeat軟件使用drbd磁盤r0,并啟動iscsi-target服務(wù)。
啟動好Heartbeat和iscsi-target服務(wù)后,從Windows機(jī)器掛載新的卷,并格式化,拷貝一些文件看是否能正常工作,接下來干一件齷齪的事情,拷貝一個非常大的文件,然后將主服務(wù)器上的Heartbeat關(guān)閉,這時拷貝過程肯定會暫停,但當(dāng)Windows重新發(fā)現(xiàn)ip地址后,又會恢復(fù)繼續(xù)拷貝。
然后我們干點(diǎn)更具破壞性的操作,拔下主服務(wù)器的電源線,看它是否還會繼續(xù)工作,正如預(yù)料之中的,Heartbeat會從主服務(wù)器將資源轉(zhuǎn)移到后備服務(wù)器,Windows initiator看上去好像暫停了一下,但馬上接著又繼續(xù)拷貝直至結(jié)束,我不太相信在這種破壞環(huán)境下它還能工作得很好,于是我用MD5校驗(yàn)工具校驗(yàn)了放在iSCSI驅(qū)動器上的文件,結(jié)果報告與源文件的校驗(yàn)值一致,意味著它的確工作得很好,所有的數(shù)據(jù)塊都被正確地傳輸過去了。
最后關(guān)于iSCSI target軟件要注意的是它在Linux上的可用性:它允許你導(dǎo)出塊設(shè)備,前面我們已經(jīng)看到,包括raw磁盤,磁盤上的分區(qū),仿真塊設(shè)備等。在這個例子中,我們使用DRBD仿真塊設(shè)備,當(dāng)我們曾經(jīng)從系統(tǒng)中導(dǎo)出過軟RAID設(shè)備,在寫本文的時候,開源解決方案還不支持導(dǎo)出字符設(shè)備,意味著你還不能導(dǎo)出磁帶驅(qū)動器,即使iSCSI協(xié)議支持,目前只有一些商業(yè)解決方案支持導(dǎo)出字符設(shè)備。
我們使用開源軟件建立起一套經(jīng)濟(jì)的SAN,也只接觸到最基礎(chǔ)的知識,SAN是什么,iSCSI是什么,但這是一個偉大的開始。
Windows上的iSCSI
在文章的前面部分,我們使用Linux作為服務(wù)器,Windows作為客戶端,但我們認(rèn)為多寫幾行文字來描述如何Windows上實(shí)現(xiàn)iSCSI也是值得的,可以從微軟公司的存儲網(wǎng)站http://www.microsoft.com/windowsserversystem/storage下載到Microsoft iSCSI initiator軟件,安裝它非常簡單,安裝后會有一個控制面板,從它可以訪問到iSCSI服務(wù)器,假設(shè)你已經(jīng)按照我前面說的方法安裝了一臺Linux服務(wù)器,打開控制面板,然后點(diǎn)擊Discovery標(biāo)簽,然后點(diǎn)擊Add按鈕,將會顯示如下圖所示的一個對話框。
1、輸入服務(wù)器或集群的ip地址,端口保持不變,然后點(diǎn)擊Advanced按鈕,顯示
2、如果你沒有看到輸出設(shè)備,點(diǎn)Refresh,選擇你想要的設(shè)備,然后點(diǎn)擊Log On,顯示
3、在General標(biāo)簽頁,你需要開啟CHAP登陸,并輸入與ietd.conf中一樣的登錄名和密碼,然后點(diǎn)兩次Ok按鈕回到控制面板,如果你的密碼少于16個字符,會提示你,但這樣還是能工作的,選擇Target標(biāo)簽,顯示
4、如果你打算每次重啟系統(tǒng)都使用iSCSI卷,請選中'Automatically restore'選項(xiàng),至此,你就擁有一個附加的磁盤了,在磁盤管理器中也能看到它,并可以當(dāng)正常磁盤使用了,值得注意的是目前在Windows上iSCSI還不支持動態(tài)磁盤,它可以用于諸如exchange,sql server等應(yīng)用程序。
評論