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