當(dāng)你歷盡艱辛說服主管籌得iSCSI SAN計(jì)劃的資金,當(dāng)你躊躇滿志地想為數(shù)據(jù)中心的每個(gè)服務(wù)器集群配備SCSI磁盤陣列,或是某臺(tái)服務(wù)器負(fù)載超出了內(nèi)部存儲(chǔ)的速度,你不得不考慮升級,這時(shí)的你大概就想著要組建夢寐以求的iSCSI陣列,并迫不及待對管理層許諾要建立起內(nèi)部統(tǒng)一高速的以太網(wǎng)來。
聽我一言,且慢實(shí)施你的規(guī)劃。因?yàn)橐苍S你會(huì)認(rèn)為iSCSI通過現(xiàn)有的網(wǎng)絡(luò)加以改造就能無需花費(fèi)太多精力去實(shí)現(xiàn)。然而,有些問題卻使我們冷靜下來。現(xiàn)有的網(wǎng)絡(luò)應(yīng)用都是在假定網(wǎng)絡(luò)連接有失敗這個(gè)前提下設(shè)計(jì)的,而操作系統(tǒng)則從不認(rèn)為它的磁盤驅(qū)動(dòng)器會(huì)有無法訪問的時(shí)候。兩者的沖突使得只要網(wǎng)絡(luò)上有一臺(tái)中毒的筆記本占用著帶寬,哪怕僅僅只有幾分鐘,都會(huì)使得服務(wù)器訪問它們的磁盤變得困難重重。不難看出,建立iSCSI SAN的首要條件就是將iSCSI的通信搭建在專有的VLAN(虛擬局域網(wǎng))上,最好是選擇獨(dú)立的千兆網(wǎng)絡(luò)。
交換機(jī)的選擇
企業(yè)級的交換機(jī)對于iSCSI顯得必不可少。我曾將一個(gè)低端的24口的千兆交換機(jī)用以iSCSI:1-16端口連接服務(wù)器,18-24端口連接磁盤設(shè)備,并把它置于10M集線器連接起的以太網(wǎng)中,結(jié)果千兆交換機(jī)很快地過載,導(dǎo)致了數(shù)據(jù)包的大量丟失及性能的急劇下降。原因在于用戶級的交換機(jī)不支持多端口間的線速交換功能,所以在傳輸過程中會(huì)發(fā)生無提示的丟包情況。
所以還是得選擇企業(yè)級非阻塞型的交換機(jī),比如Extreme Networks和Foundry Networks公司出品的交換機(jī)。即便選擇了正確的交換機(jī),我們還需意識(shí)到如果服務(wù)器與交換機(jī)僅有單一的千兆路線連接,那么磁盤陣列的訪問也將面臨失敗的風(fēng)險(xiǎn)。也許電纜上一次小的故障,交換機(jī)端口略微的松動(dòng),都可能導(dǎo)致線路的中斷。后果可能會(huì)使數(shù)據(jù)丟失,應(yīng)用中斷,更嚴(yán)重的是使你的數(shù)據(jù)庫陷入崩潰。
自Kalpana的10M以太網(wǎng)交換機(jī)以來,服務(wù)器管理員就開始應(yīng)用NIC teaming技術(shù)來降低單網(wǎng)卡端口連接帶來的風(fēng)險(xiǎn),同時(shí)這種技術(shù)又增加了服務(wù)器和網(wǎng)絡(luò)間的帶寬。后來大部分的服務(wù)器網(wǎng)卡的驅(qū)動(dòng)又增添了功能:當(dāng)多個(gè)網(wǎng)卡連接到同一交換機(jī)時(shí),傳輸負(fù)載可以在這多個(gè)網(wǎng)卡間自動(dòng)保持平衡。這些使得服務(wù)器和交換機(jī)端口間的連接中斷的風(fēng)險(xiǎn)大大降低,但并不能消除由于交換機(jī)故障帶來的中斷風(fēng)險(xiǎn)。
當(dāng)一個(gè)SAN交換機(jī)出現(xiàn)單點(diǎn)故障時(shí),對于數(shù)據(jù)中心的影響就好像中子彈的爆炸。你的設(shè)備都外表完好無損的擺著,然而內(nèi)部所有的連絡(luò)完全陷入了中斷,數(shù)據(jù)資料徹底無法訪問,死寂般地好似失去靈魂的人。我們不想看到這一幕的發(fā)生,寧愿相信交換機(jī)廠商那50,000小時(shí)平均無故障運(yùn)作時(shí)間的承諾,然而我們又都知道故障總是在最糟糕的時(shí)候發(fā)生。
目前來說最佳的解決方案是MPIO(多路徑輸入輸出),它可以使得iSCSI接口和磁盤陣列間建立起多重連接,并能指定數(shù)據(jù)傳輸?shù)囊蕴B接和路徑。因?yàn)镸PIO運(yùn)行在第三層上,所以不像運(yùn)行在第二層上的NIC teaming技術(shù)需要所有的連接必須處于同一個(gè)廣播域中,它給服務(wù)器的每一個(gè)以太網(wǎng)卡都分配了獨(dú)一的IP地址,所以連接可以在不同的子網(wǎng)間建立。
MPIO能為iSCSI initiator所支持,大部分情況下無須額外的費(fèi)用。但有些磁盤存儲(chǔ)生產(chǎn)商,如EMC和Network Appliance,對于在它們的磁盤陣列中使用MPIO的用戶需要購買額外的MPIO驅(qū)動(dòng)。
綜上所述,你最好要為重要的應(yīng)用程序而增加交換機(jī)的數(shù)量,而且每個(gè)服務(wù)器與磁盤陣列的連接至少有兩個(gè)。除此之外,連接帶寬也必須足夠大,以便當(dāng)發(fā)生磁盤陣列與交換機(jī)的連接失敗時(shí),能承擔(dān)起服務(wù)器與磁盤陣列間所有數(shù)據(jù)的傳輸。
Jumbo Frames的應(yīng)用
目前,iSCSI和存儲(chǔ)廠商都努力在iSCSI SAN上應(yīng)用”Jumbo Frame”技術(shù)。早在以太網(wǎng)還是處于半雙工的網(wǎng)絡(luò)時(shí),最大的幀規(guī)定為1,500比特,這是為了確保任一節(jié)點(diǎn)不獨(dú)占整個(gè)網(wǎng)絡(luò)的帶寬。但問題是現(xiàn)在的主機(jī)服務(wù)器操作系統(tǒng)從硬盤讀寫的單位為一簇4KB,甚至于更大。如果幀傳送的大小不能超過1,500b時(shí),那么iSCSI數(shù)據(jù)就必然需要成倍的提高發(fā)送頻率才能滿足需要。然而這又導(dǎo)致了TCP/IP協(xié)議棧占用CPU過高情況的發(fā)生,因?yàn)閿?shù)據(jù)的分割、校檢、組合等過程處理的幀大大增加。小數(shù)據(jù)包也導(dǎo)致了帶寬易被占用的情況,因?yàn)楦嗟臅r(shí)間花在了幀之間的間隔上,并且?guī)瑘?bào)頭的處理和校檢也需要時(shí)間。
為了解決這個(gè)問題,現(xiàn)在的企業(yè)級千兆以太網(wǎng)設(shè)備都不同程度地支持了Jumbo Frame。我們發(fā)現(xiàn)應(yīng)用了Jumbo Frame的iSCSI性能表現(xiàn)上提高了5%左右,同時(shí)服務(wù)器CPU的利用率降低了2-3%。雖然這其中CPU利用率這一項(xiàng)也可能有TOE和HBA的“減負(fù)”作用在內(nèi),但總的說來,Jumbo Frame的應(yīng)用提高了整體的性能。
應(yīng)用Jumbo Frame,首先要確保所有iSCSI網(wǎng)絡(luò)上的設(shè)備,包括交換機(jī)、網(wǎng)絡(luò)接口卡和目標(biāo)設(shè)備等的最大幀尺寸設(shè)為相同。Jumbo Frame沒有統(tǒng)一的最大尺寸,通常設(shè)備支持的范圍在9,000 byte到16KB。但是,如果將服務(wù)器或存儲(chǔ)陣列的最大幀尺寸設(shè)的大于交換機(jī)的話,通常你的iSCSI系統(tǒng)表現(xiàn)上會(huì)更好一些。當(dāng)然,一旦你的傳輸數(shù)據(jù)超過了交換機(jī)的最大幀尺寸,還是會(huì)發(fā)生磁盤I/O錯(cuò)誤。
網(wǎng)卡的選擇
雖然大部分的操作系統(tǒng)支持iSCSI軟件網(wǎng)卡接口,所以原則上容許任何以太網(wǎng)卡用來連接服務(wù)器和iSCSI磁盤陣列,但我們并不推薦你使用舊式的千兆以太網(wǎng)卡。舊式網(wǎng)卡主要針對的是工作站,而工作站內(nèi)部通信主要是靠帶寬僅達(dá)千兆的32位PCI總線,網(wǎng)卡需要和其他是設(shè)備共享總線通道。而服務(wù)器以太網(wǎng)卡使用的是速度快的多的PCI-X或PCI-E總線通道,并有板載硬件TCP/IP校檢和裝卸,這能降低CPU處理iSCSI數(shù)據(jù)的利用率,如Broadcom的NetXtreme板載控制芯片就被大多數(shù)服務(wù)器所采用。
另外,即使是選用了新型的網(wǎng)卡,一定要注意給它安裝上生產(chǎn)商特定的驅(qū)動(dòng),因?yàn)閃indows自帶的驅(qū)動(dòng)通常不支持網(wǎng)卡的高級功能,如Jumbo Frame和TCP校檢和裝卸。
如果選用了Alacritech或Chelsio公司的TOE卡,那么它的功能則更為強(qiáng)大。首先,它的卡載處理器能從硬件上處理TCP的分割和再組裝,還有校檢計(jì)算等。其次,TOE卡還能加速任一形式的TCP交通,并能與軟件模擬的以太網(wǎng)卡并行工作。而像QLogic和Adaptec出品的iSCSI HBA,不僅能支持TCP管理中的裝卸,甚至能支持更高級的iSCSI協(xié)議。這對主機(jī)操作系統(tǒng)而言,更像是一個(gè)磁盤控制器,而不僅僅是一個(gè)以太網(wǎng)卡了。#p#分頁標(biāo)題#e#
盡管TOE和iSCSI HBA在服務(wù)器運(yùn)行一些常規(guī)應(yīng)用程序,如SQL之類時(shí),能幫助降低CPU 10-15%的運(yùn)算周期時(shí)間。這點(diǎn)是不錯(cuò),但對于廠商宣稱的更快的磁盤I/O速度,我們在實(shí)踐中卻沒有感覺出來。實(shí)際上,對于大多數(shù)中等規(guī)模以上的服務(wù)器,CPU并不是瓶頸所在,所以我們僅推薦少數(shù)需要的服務(wù)器使用TOE和HBA。
如果從iSCSI SAN的啟動(dòng)方面來看,那么iSCSI HBA的應(yīng)用優(yōu)勢還是很明顯的,它能使SAN的啟動(dòng)更為簡易。此時(shí)的HBA扮演的是磁盤控制器的作用(還要有INT 13 BIOS支持),因此你可以把系統(tǒng)啟動(dòng)盤置于iSCSI的磁盤陣列上。況且,從SAN的啟動(dòng)方式使得創(chuàng)建多臺(tái)同類服務(wù)器變得簡單:只要簡單拷貝啟動(dòng)卷就能在另一個(gè)磁盤創(chuàng)建Web站點(diǎn)或終端服務(wù)器。
EmBoot的netboot/i則是結(jié)合PXE(Pre-Execution Environment)和TFTP服務(wù)器使得服務(wù)器可以通過普通的以太網(wǎng)卡從iSCSI SAN啟動(dòng)。實(shí)現(xiàn)方式卻是在本地磁盤中創(chuàng)建系統(tǒng)卷,然后通過傳輸拷貝到SAN作為啟動(dòng)項(xiàng)。聽起來有點(diǎn)名不副實(shí),不過我們卻希望服務(wù)器廠商能在下一代產(chǎn)品中支持此項(xiàng)技術(shù)。
iSCSI的安全訪問控制
每個(gè)連接iSCSI SAN的服務(wù)器都是通過訪問自己的邏輯驅(qū)動(dòng)器來管理文件系統(tǒng),所以對于多服務(wù)器共享的SAN必須要建立起訪問管理機(jī)制,以免邏輯驅(qū)動(dòng)器上的一臺(tái)服務(wù)器創(chuàng)建的數(shù)據(jù)被其他的服務(wù)器修改乃至覆蓋。除了集群服務(wù)器(所有的磁盤都為服務(wù)器所共有)和一些特殊的SAN文件系統(tǒng),其他的服務(wù)器都得有自己專屬的邏輯驅(qū)動(dòng)器。
iSCSI對于服務(wù)器的訪問控制一般通過IP地址來判斷,這在封閉的情況下運(yùn)作還不錯(cuò)。不過,這也容易讓一些未授權(quán)的服務(wù)器連接到數(shù)據(jù)庫中。作為另一種訪問控制方式,運(yùn)用起始連接卡的IQN (iSCSI qualified name)在大型環(huán)境更為簡便一些。因?yàn)檫\(yùn)行中的服務(wù)器環(huán)境,更改IQN比IP地址要容易。
如果管理員如果不想讓服務(wù)器固定的占有磁盤某個(gè)驅(qū)動(dòng)器,那么他們可以在目標(biāo)磁盤上運(yùn)用CHAP (Challenge Handshake Authentication Protocol)密碼保護(hù)敏感的卷文件。在iSCSI的規(guī)劃中定義了iSCSI設(shè)備運(yùn)用IPsec控制資源訪問以及服務(wù)器-目標(biāo)磁盤網(wǎng)絡(luò)通信的安全加密。但這些書面定義由于產(chǎn)生CPU高利用率和延遲性無法具體落實(shí)到現(xiàn)實(shí)中去。目前支持IPsec的iSCSI目標(biāo)磁盤僅僅是些軟件產(chǎn)品,比如Stringbean Software的WinTarget在Windows環(huán)境下可以支持系統(tǒng)自帶的Windows IPsec。所以看起來,SAN加密技術(shù)的成熟需要等待時(shí)日。
總的說來,建立iSCSI SAN所需的設(shè)備并不像你想的那么簡單,但也并不是復(fù)雜如“阿波羅”。只要你有一個(gè)很好的規(guī)劃,注意路由器和網(wǎng)絡(luò)接口卡的選擇,同時(shí)考慮建立后的磁盤數(shù)據(jù)安全訪問控制,那么建立起一個(gè)企業(yè)級iSCSI SAN也就不再困難。


