歡迎您光臨本站 註冊首頁

Linux網路環境下iSCSI配置攻略

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  Linux網路環境下iSCSI配置攻略轉載:http://www.ccw.com.cn/server/yyjq/htm2006/20060116_13UVI.htm 感謝原創作者:曹江華

一、iSCSI發展路線圖

  2001年初:由IBMCisco於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等協議,使數據塊的移動更為有效,也便於用戶自由增加磁碟陣列、磁帶庫或伺服器等設備。現在的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 721C/F

Qlogic SANblade QLA4010

Windows 2003

Intel PRO/1000T IP適配卡

Microsoft software Initiator

Alacritech iSCSI HBA SES 1001

Qlogic SANblade QLA4010

Red Hat Enterprise Linux  AS 4.0

Qlogic SANblade QLA4010

Adaptec iSCSI HBA 721C/F

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

  連接到儲存設備的賬號與密碼分別為: myaccount/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

主要選項:

-l:  察看指定的設備的分區表狀況。

-b SSZ:將指定的分區大小輸出到標準輸出上,單位為區塊。

-u:搭配"-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

 
 


[火星人 ] Linux網路環境下iSCSI配置攻略已經有576次圍觀

http://coctec.com/docs/linux/show-post-67625.html