一、iSCSI發展路線圖
2001年初:由IBM及Cisco于2001年制定iSCSI技術,兩家并且分別推出了支持iSCSI的產品—IBM IP Storage 200i及Cisco SN5420 Router。
2001年12月:NetApp公司推出了自家的IP SAN,它采用的是自行開發的VLD協議(Virtual Local Disk),存儲上屬于Block over IP方式。
2003年2月:SNIA(Storage Networking Industry Associate,存儲網絡工業協會)終于正式制定通過了iSCSI標準。而業界莫不把此標準化視為iSCSI發展歷程中的最關鍵因素,自此開始,有愈來愈多的廠商開始進一步開發合乎業界標準的相關產品,iSCSI也開始受到業界目光的青睞。
2003年5月:微軟在Windows Server 2003 中,正式開始支持iSCSI,并提供iSCSI Initiator驅動程序的下載。微軟此項深具推波助瀾的作法,帶動了整個iSCSI業界的發展。所以接下來,不論各類作業平臺或軟硬件的支持會愈來愈齊備。
2004年10月:HP發布的IP Storage 500/1500。
2005年:自從標準化及微軟支持解決了iSCSI最大的發展瓶頸之后,iSCSI的全面普及也只是時間早晚的問題而已。但業界對其開始普及的時間點一直莫衷一是。一般調查機構多半認為該時間點應在2006年,但各家廠商卻異口同聲地認為2005年就有機會看到市場大幅起飛。
二、 iSCSI技術
SAN(Storage Area Network的縮寫)意為存儲區域網絡,是真正的專注于企業級的存儲。SAN采用一個分離的網絡(從傳統的局域網中分離)連接所有的存儲器和服務器,這個網絡可以采用高性能的實現技術,如光纖通道(Fiber Channel),可以容納SCSI等協議,使數據塊的移動更為有效,也便于用戶自由增加磁盤陣列、磁帶庫或服務器等設備?,F在的SAN基本都是通過Fibre Channel來實現的,Fibre Channel,簡稱FIBRE CHANNEL,又稱光纖通道,是利用專用設備進行數據高速傳輸的一種網絡標準,主要用于連接服務器的干線(backbones),并把服務器連接到存儲設備上。采用高速的FIBRE CHANNEL作為傳輸媒介的SAN具有光纖信道在距離、性能和連接性等方面的優勢,如果結合光纖通道交換機,則可以提供高達2Gb/s的數據傳輸速率,使獨立于應用服務器網絡系統之外的SAN幾乎擁有了無限的存儲能力。 但是利用FIBRE CHANNEL實現的SAN雖然性能優越,擴展性極佳,但價格卻貴得驚人,管理起來也非常困難,讓一般用戶難以承受。也是許多企業不得不忍痛放棄SAN的原因。iSCSI(互聯網小型計算機系統接口)是一種在Internet協議網絡上,特別是以太網上進行數據塊傳輸的標準,是一種集成了IP和SCSI的技術。它最大的特點就是讓標準的SCSI命令能夠在TCP/IP網絡上的主機系統(啟動器)和存儲設備(目標)之間傳送。與光纖通道相比,iSCSI具有許多優勢,用‘iSCSI=低廉+高性能’這個等式來表示再恰當不過了。iSCSI是基于IP協議的技術標準,實現了SCSI和TCP/IP協議的連接,那些以局域網為網絡環境的用戶只需要少量的投入,就可以方便、快捷地對信息和數據進行交互式傳輸和管理。相對于以往的網絡接入存儲,iSCSI的產生解決了開放性、容量、傳輸速度以及兼容性等許多問題,讓用戶可以通過現有的TCP/IP網絡來構建存儲區域網,能夠更容易地管理SAN存儲。iSCSI結構見圖1。
圖1 iSCSI體系結構
這里就SAN與iSCSI做一比較,基本兩者同屬運行塊協議的SAN架構,只不過前者透過FIBRE CHANNEL,后者由IP傳輸數據罷了,而兩者在管理及應用上也大同小異。這里在此還是盡量做一番歸納整理,以供參考,見表-1。
表-1 iSCSI和SAN綜合對比
對比選項
SAN存儲
iSCSI存儲
接口
光纖
IP
性能
高
中
管理及維護成本
高
低
管理方式
集中
集中
傳輸介質
光纖
雙絞線
噪聲干擾
無
有
訪問方式
塊
塊
文件系統
主機文件系統
主機文件系統
電磁影響
無
有
傳輸距離
100公里
無限制
數據傳輸方式:同為SAN的iSCSI及FIBRE CHANNEL都采用塊協議方式。
傳輸速度:就目前的傳輸速度而言是FIBRE CHANNEL(2Gb)最快、iSCSI(1Gb)次之。
管理方式:iSCSI采用IP網絡的現有成熟架構。所以可延用既有成熟的網絡管理機制,不論是建置、管理或維護上,都非常方便及容易。而FIBRE CHANNEL則完全獨立于一般網絡系統架構,所以需由FIBRE CHANNEL供貨商分別提供專屬管理工具軟件。
管理及維護成本:一般來說,FIBRE CHANNEL SAN多半需要特定的工具軟件來操作管理,所以需要對人員進行一定時間的教育訓練,而且費用不低。但由于iSCSI乃透過IP網絡來傳輸數據及分配存儲資源,所以只要使用網絡現有的管理功能即可,相較起來,的確可以省下大筆管理人力及訓練成本。
傳輸距離:原則上,二者都支持長距離的數據傳輸。FIBRE CHANNEL的理論值可達100公里。透過IP網絡的iSCSI理論上都沒有距離上的限制, iSCSI可以進行長距大量資料的傳遞。
噪聲碰撞問題:由于iSCSI走的是IP網絡,其中當然充斥著來自全球各地的龐大數據及噪聲,所以碰撞情形也就在所難免了,如此一來,在數據傳輸的過程中,就很容易導致延遲的情形發生,大大影響了傳輸的效能,甚至數據的正確性。
三、主流操作系統對iSCSI支持
對于蓄勢待發已久的iSCSI而言,遲遲未能全面普及的主要原因之一,就在于各類平臺支持性的不夠完備。是否能得到各式平臺充份支持的關鍵,則在于協議的標準化上。有了標準化的協議,各類平臺解決方案商才能有所依循地推出符合共通標準的支持及產品,如此可觀的市場規模才能建立得起來。SNIA協會在2003年2月正式通過了iSCSI標準, 雖然iSCSI已正式標準化,但不一定代表從此就能快速普及,iSCSI是否能在企業存儲市場站穩腳步,仍需看廠商本身的參與態度及開發意愿。表2是主流操作系統對iSCSI支持情況。
表2是主流操作系統對iSCSI支持
操作系統
驅動程序
適配卡
產品名稱
Windows 2000
有
有
Microsoft software Initiator
Intel PRO/1000T IP適配卡
Alacritech iSCSI HBA SES 1001
Adaptec iSCSI HBA <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:chmetcnv UnitName="C" SourceValue="721" HasSpace="False" Negative="False" NumberType="1" TCSC="0" w:st="on">721C</st1:chmetcnv>/F
Qlogic SANblade QLA4010
Windows 2003
有
有
Intel PRO/1000T IP適配卡
Microsoft software Initiator
Alacritech iSCSI HBA SES 1001
Qlogic SANblade QLA4010
Red Hat
無
有
Qlogic SANblade QLA4010
Adaptec iSCSI HBA
HP-UX V1/V2
有
無
HP-UX software Initiator
Novell Netware 5.1-6.5
有
無
Novell software Initiator
SUN Solaris 9
無
有
Qlogic SANblade QLA4010
iSCSI Initiator可分為三種,即軟件Initiator驅動程序、硬件的TOE(TCP Offload Engine,TCP卸載引擎) HBA卡及iSCSI HBA卡。就性能而言,軟件Initiator驅動程序最差、TOE HBA卡居中、iSCSI HBA卡最佳。但是iSCSI HBA只能運行iSCSI協議,而無法運行NFS(Network File System,SUN制定)或CIFS(Common Internet File System,微軟制定)等檔案系統協議與應用服務器溝通。但Initiator驅動程序及TOE HBA卡則同時支持iSCSI、NFS及CIFS三種協議。
四、Linux下實現iSCSI
Linux網絡環境iSCSI技術的實現主要有三種方式:
1. 純軟件方式
服務器采用普通以太網卡來進行網絡連接,通過運行上層軟件來實現iSCSI和TCP/IP協議棧功能層。這種方式由于采用標準網卡,無需額外配置適配器,因此硬件成本最低。但是在這種方式中,服務器在完成自身工作的同時,還要兼顧網絡連接,造成主機運行時間加長,系統性能下降。這種方式比較適合于預算較少,并且服務器負擔不是很大的用戶。目前不論是Microsoft Windows、IBM AIX、HP-UX、Linux、Novell Netware等各家操作系統,皆已陸續提供這方面的服務,在價格上,比起前兩種方案,遠為低廉,甚至完全免費。但由于Initiator驅動程序工作時會耗費大量的CPU使用率及系統資源,所以性能最差。在此建議,最好是采用1GHz以上CPU的主機,如此才能獲得較佳的效能表現,如果公司主機CPU在1GHz以下,那么最好不要采用。至于在各類協議的支持上,Initiator驅動程序可以同時支持iSCSI、NFS及CIFS協議。當然現在大多數服務器CPU都可以滿足這個要求。這里免費的iSCSI Initiator驅動程序,才可以將一般Gigabit網卡仿真成iSCSI Initiator。然后再透過iSCSI橋接器將一般SCSI接口的存儲配備仿真成iSCSI Target,如此就形成一個iSCSI-SAN。
2. iSCSI TOE網卡實現方式
在這種方式中,服務器采用特定的TOE網卡來連接網絡,TCP/IP協議棧功能由智能網卡完成,而iSCSI層的功能仍舊由主機來完成。這種方式較前一種方式,部分提高了服務器的性能。在三種iSCSI Initiator中,價格比iSCSI HBA便宜,但比軟件Initiator 驅動程序貴,性能也居于兩者之間。目前市面上Intel的TOE(TCP Offload Engine,TCP卸載引擎) HBA價格在150美金左右。
3. iSCSI HBA卡實現方式
使用iSCSI存儲適配器來完成服務器中的iSCSI層和TCP/IP協議棧功能。這種方式使得服務器CPU無需考慮iSCSI以 及網絡配置,對服務器而言,iSCSI存儲器適配器是一個HBA(存儲主機主線適配器)設備,與服務器采用何種操作系統無關。該方式性能最好,但是價格也最為昂貴。在三種iSCSI Initiator中,價格最貴,但性能最佳。目前價格已由一開始的1000美金左右,下降跌至500美元左右。對于有高效能應用需求的企業,最好采用iSCSI HBA卡,如此才能獲得最好的性能。
考慮到筆者使用Linux服務器使用2.4G Intel 至強處理器,而且網絡負載不大,本文使用第一種方式,拓樸結構見圖2.
圖2 網絡拓樸結構
說明:iSCSI 儲存設備架構:
型號為PROMISE Vtrak 15200 ,使用 iSCSI 機型;
使用5 顆硬盤,1 顆為 spare disk,其余4 顆做成 RAID-5;
IP:iSCSI 儲存設備的 IP 地址設置為 192.168.11.201
連接到儲存設備的賬號與密碼分別為: myaclearcase/" target="_blank" >ccount/iscsimy1Spw
Linux 服務器:
系統: Red Hat 9 Linux核心 ( 2.4.20-8mp )
IP: Red Hat 9 Linux服務器IP地址設置為 192.168.10.3
硬件:Dell PowerEdge 16000SC(2.4G Intel 至強處理器,512MB DDR ECC內存)基礎型服務器。用于郵件服務器(商業版本的sendmail:3Rsoft)。
1.準備工作
因為安裝iSCSI驅動需要配合核心來編譯,所以會使用到內核源代碼,此外,也需要編譯器 ( compiler ) 的幫助,因此,先確定您的 Linux 系統當中已經下列軟件的存在 :kernel-source 、kernel、gcc、perl、Apache。 打開一個終端,使用命令檢查:
# rpm -qa | grep gcc;rpm -qa | grep make
# rpm -qa | grep kernel ;rpm -qa | grep make
iSCSI 驅動程序下載網址是:http://sourceforge.net/project/showfiles.php?group_id=26396
這個網站根據Linux內核(2.4/2.6)提供兩種驅動程序,請根據內核版本下載相應的驅動,首先使用下面的命令查詢目前所使用的Linux的內核版本:
#uname –a
Linux cao 2.4.20-8#1Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux
2. 得到版本信息后,到其官方網站下載系統所需的驅動。下載完成就可以使用下面的命令安裝該組件然后編譯內核:
#cd cd /usr/local/src
# wegt http://nchc.dl.sourceforge.net/sourceforge/linux-iscsi/linux-iscsi-3.4.3.2.tgz
#tar -zxvf linux-iscsi-3.4.3.2.tgz
# cd linux-iscsi-3.4.3.2
#make clean
# make
#make install
3. 修改配置文件開始進行修改的工作:
# vi /etc/iscsi.conf
Username= myaccount #用戶名#
Password= iscsimy1Spw #口令#
DiscoveryAddress=192.168.11.201 #iSCSI 儲存設備的 IP 地址#
Username=myaccount
Password=iscsimy1Spw
4. 啟動iscs
#/etc/init.d/iscsi start
Starting iSCSI: iscsi iscsid fsck/mount
5. 使用iscsi-ls命令可以看到更為詳細的磁盤信息::
# iscsi-ls
*****************************************************************
SFNet iSCSI Driver Version ... 3.4.3.2 (27-Jun-2005 )
****************************************************************
TARGET NAME : iqn.1994-12.com.promise.target.3b.31.4.55.1.0.0.20
TARGET ALIAS : Vtrak 15200
HOST NO : 0
BUS NO : 0
TARGET ID : 0
TARGET ADDRESS : 192.168.11.201:3260
SESSION STATUS : ESTABLISHED AT Thu Nov 10 20:13:43 2005
NO. OF PORTALS : 1
PORTAL ADDRESS 1 : 192.168.11.201:3260,2
SESSION ID : ISID 00023d000001 TSIH 04
****************************************************************
iSCSI節點名稱有兩種格式,即 iqn-type 格式和 eui-type 格式。
Linux常用的是iqn-type的格式為:
6.使用fdisk命令進行磁盤分區
fdisk命令格式
fdisk [-l] [-b SSZ] [-u] device
主要選項:
?。璴: 察看指定的設備的分區表狀況。
?。璪 SSZ:將指定的分區大小輸出到標準輸出上,單位為區塊。
?。璾:搭配"-l"參數列表,會用分區數目取代柱面數目,來表示每個分區的起始地址。
device:要這些操作的設備名稱。
fdisk是各種Linux發行版本中最常用的分區工具,是被定義為Expert級別的分區工具。我們可以通過fdisk來分區使用iscsi設備。它還包括一個二級選單,首先輸入命令,然后出現問答式界面,用戶通過在這個界面中輸入命令參數來操作fdisk。見圖3。
圖3 fdisk分區工具
選項介紹:
a:設定硬盤啟動區。
b:編輯一個BSD類型分區。
c:編輯一個DOS兼容分區。
d: 刪除一個分區。
l: 察看指定的設備的分區表狀況。
m:顯示Fdisk命令各個參數的說明。
o:創建一個DOS分區。
n:設定新的硬盤分區。
p:打印分區信息。
s:創建一個空Sun分區表。
t:改變硬盤分區類型。
q: 結束分區,不保存操作內容。
v:校驗硬盤分區表。
w:結束分區,保存操作內容。
x:進入高級操作模式。
?。?fdisk /dev/hdd
運行后出現fdiak的命令提示符:
Command (m for help):
使用n命令創建一個分區,會出現選擇主分區(p primary partition)還是擴展分區(l logical)的提示,通常選用主分區。然后按照提示輸入分區號(Partion number(1-4):)、新分區起始的磁盤塊數(First Cylinder)和分區的大小,可以是以MB為單位的數字(Last cylindet or +siza or +sizeM or +sizeK:)。例如:
fdisk /dev/sda
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-189971, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-189971, default 189971):
Using default value 1899719
Command (m for help): w
7.格式化分區:
#mke2fs -t ext3 -c /dev/sda1
8.設定加載點:
#mkdir /cluster/raid
# mount -t ext3 /dev/sda1 /cluster/raid
經過以上的操作,我的 Linux服務器已經連接到 iSCSI 儲存設備, 并且如同Linux 本機上面的一個 SCSI 硬盤一樣。 使用的方式幾乎一模一樣。
9. 自動掛載一個iSCSI卷
可以通過向/etc/fstab.iscsi (filesystem table)中添加指令行來告訴Linux如何自動掛載卷了。使用vi編輯器修改/etc/fstab,依次使用shift+G命令(將光標定位到最后一行)然后使用o命令(插入新行并且進入編輯狀態),輸入以下內容:
/dev/sda1 /cluster/raid ext3 defaults 0 0
存盤后從新啟動計算機Linux即可自動掛載iSCSI卷。
五、保護iSCSI安全
光纖通道環境給人感覺具有比較高的安全性,原因在于它們是受控的專有網絡。iSCSI 給人感覺安全性較低,原因在于它是基于以太網的網絡。不過從本質上來說,光纖通道是沒有安全功能的,而iSCSI提供了非常豐富的安全功能。iSCSI 規范提供了initiator與目標端兩方面的身份驗證(使用 CHAP、SRP、Kerberos 和 SPKM),能夠阻止未經授權的訪問,只允許那些可信賴的節點進行訪問。另外,IPsec Digests(IPsec 摘要)和 Anti-Reply(防回復)功能阻止了插入、修改和刪除操作,而 IPsec Encryption(IPsec 加密)功能防止被偷聽,確保了私密性。
最簡單的iSCSI實現方式,就是沒有任何加密和認證機制的連接。這種方式僅提供“SCSI指令在TCP/IP協議上傳輸”這樣一個最基本的功能,連接到網絡上的任何一臺主機都可以毫無阻礙地連接到iSCSI存儲設備上。這種方式顯然對任何危險都沒有防范能力。但是,這種方式也有一個明顯的優勢,那就是性能。沒有了認證和加密,自然也就省去了很多額外的開銷。如果您非常需要您的iSCSI磁盤陣列全速工作,這種方式無疑是最好的選擇。 當然,選擇這種方式的時候,用來連接iSCSI磁盤陣列的網絡交換機最好是與外界隔離的。
妥善選擇口令
口令應避免與個人資料有關系,不要選用諸如身份證號碼、出生日期、電話號碼等作為密碼。建議選用字母、數字混合的方式,以提高密碼破解難度。盡量避免在不同的操作系統使用同一密碼,否則密碼一旦遺失,后果將不堪設想。黑客們經常用一些常用字來破解密碼。曾經有一位美國黑客表示,只要用“password”這個字,就可以打開全美多數的計算機。其它常用的單詞還有:account、ald、alpha、beta、computer、dead、demo、dollar、games、bod、hello、help、intro、kill、love、no、ok、superuser、system、test、work、yes等。另外相信設置空白口令這件事就會讓很多網絡管理員頭疼。很多用戶嫌口令難記,干脆留空,或者隨手設成111111之類。這種口令實在令人著急,稍微耐心一點兒的黑客,手工都可以試出來,更何況眼下各種字典攻擊程序滿天飛。對iSCSI磁盤陣列來說,情況也是一樣。如果僅靠用戶認證不能解決問題,就需要借鑒傳統IP網絡的辦法,在內網和外網之間架設防火墻,阻擊外面那些有充分精力和耐心的“嘗試者”。 如果iSCSI磁盤陣列(Target)和主機(Initiator)需要跨廣域網連接,最好使兩者以VPN互連??傊褪且粋€目的,不讓iSCSI磁盤陣列使用公網的IP地址。
總結:至此這里 給予Linux網絡下中小企業一個低成本的iSCSI的解決方案。
iSCSI小貼士:
1.應該使用硬件 initiator 還是軟件 initiator?
iSCSI initiator 是使用硬件還是軟件要取決于多種因素,包括預算、性能要求以及服務器工作負荷。軟件 iSCSI initiator 能夠實現成本最低的 iSCSI 解決方案。純軟件 iSCSI initiator 使用標準以太網卡,并依靠主機 CPU 來處理 iSCSI 命令和 TCP/IP 棧。對于具有 2G CPU 的最新一代服務器來說,大部分客戶工作負荷在 iSCSI 協議處理方面不會引發明顯的性能開銷。如果您的服務器擁有千兆以太網卡則對軟件 initiator 的評測過程幾乎不會有任何問題,原因是在絕大多數流行的操作系統中,initiator 都是免費提供的。如果 CPU 較陳舊,服務器的負荷較重,則可能更適合采用硬件 iSCSI initiator。硬件 iSCSI initiator 會將 iSCSI 和 TCP/IP 處理工作轉移到 iSCSI HBA 中。其結果就是能夠大幅度降低 CPU 的性能開銷,這點堪與光纖通道 HBA 相比。硬件 initiator 還能提供軟件解決方案所不具備的功能,例如支持高可用性環境的硬件多通道功能,支持密集服務器環境中的遠程引導功能。
2.硬件和軟件 initiator 如何影響應用程序的性能?
如果應用程序位于負擔較輕的服務器上,在大多數情況下,采用軟件 initiator 的 iSCSI 的性能開銷也不會明顯影響應用程序的性能。如果服務器的負荷較重,則必須采用硬件 iSCSI initiator。不過,在大多數環境中,傳輸帶寬以及主機 CPU 的性能開銷完全不是問題 — 應用程序性能問題在很大程度上要歸因于存儲的軸數有限(承擔工作負荷的磁盤太少)。這不是協議或傳輸問題。這是直連式存儲系統的一個普遍問題,但是采用基于 iSCSI 的 SAN 解決方案可以非常方便地解決這一問題。
3.Linux下哪些服務器適合使用iSCSI構架?
目前Linux的擅長應用領域是:單一應用的基礎服務器應用,譬如DNS和DHCP服務器、Web服務器、目錄服務器、防火墻、文件服務器、打印服務器、互聯網連接代理服務器、數據庫。其中,數據庫服務器及郵件服務器最適合采用iSCSI構架,另外NetApp表示由于ERP數據庫系統采用塊協議,所以非常適合建置在iSCSI構架 上。
參考文件:
Linux iSCSI project:http://linux-iscsi.sourceforge.net/
A Quick Guide to iSCSI on Linux:http://www.cuddletech.com/articles/iscsi/index.html
http://www.sanrad.com/objects/support/Solaris_Cisco-APP-CHN-004-01.pdf