Linux 应用 iSCSI 技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Linux應用iSCSI技術作者:徐秉義(AlbertHsu)本文主要介紹iSCSI:一種在TCP/IP網路中使用SCSI命令來傳輸資料的標準通訊協定。以及介紹Linux在iSCSI方面應用實作。儲存區域網路(SAN)談到iSCSI就會先談到儲存區域網路(StorageAreaNetwork,簡稱SAN),這是個專門用來傳輸磁碟資料的網路,以別於一般TCP/IP網路,通常預設SAN是使用光纖(FC,FibreChannel)設備,不同的是iSCSI預設使用GigabitEthernet(通常是乙太網路銅線)來作傳輸媒介,促使iSCSI價格上比FibreChannel低廉許多,這使得iSCSI讓許多中小企業能夠以較低門檻就可以實現SAN的應用。Note:能夠實現SAN應用有FibreChannel、iSCSI與AoE等等,其中以FibreChannel價格最高、效能最優,而iSCSI是FibreChannel之外較知名儲存通訊協定,AoE則是緊追在iSCSI的後起之秀(筆者於NetAdmin網管人第七期有AoE詳細介紹)。進階學習:iSCSI亦能夠使用光纖來當傳輸媒介,但是通常為了節省費用而使用銅線。在SAN中通常有兩個角色「Target」與「Initiator」分別敘述如下:Target稱為Target的通常是「儲存設備」(StorageDevice),也就是存放資料的磁碟(以磁碟陣列居多),在我們使用iSCSI期間,會在iSCSI儲存設備上去建立LUN(LogicalUnitNumber)來提供給有iSCSIInitiator功能的主機來存取iSCSI儲存設備。溫馨提示:LUN好比是個「邏輯單位磁碟」,為追求效率、冗餘與延展性,這個LUN通常會是由數個實體磁碟(在搭配RAID或LVM技術後)所組成。InitiatorInitiator主要功能是提供電腦主機連線到Target作磁碟存取。這個Initiator可使用硬體方式Initiator或者軟體方式Initiator,底下在LinuxiSCSI實做,皆是使用軟體方式Target與Initiator。溫馨提示:「軟體模擬」或「硬體晶片運作」的iSCSITarget與iSCSIInitiator就好比RAID有「軟體模擬的SoftRAID」與「硬體方式HardwareRAID」。iSCSI介紹iSCSI(InternetSCSI):一種主要應用在儲存區域網路(SAN)通訊協定,iSCSI將SCSI命令運行在TCP/IP網路上,用以傳輸磁碟資料。iSCSI在OSI七層模型中屬於傳輸層(TransportLayer)的通訊協定,提供給iSCSITarget與iSCSIInitiator之間溝通。經由iSCSI技術,我們能夠提供Block-LevelI/O給Initiator主機,其目的不外乎是「將磁碟排線網路化」、「把這台主機(Target主機)幻化成另一台主機(Initiator主機)的磁碟」以達成更大空間、更高I/O速度及具有冗餘與高延展度的應用,類似iSCSI技術還有FibreChannel、AoE(ATAOverEthernet)。進階學習:搭配SAN架構所應用之高階技術之一為叢集檔案系統(ClusterFileSystem),RedHat推廣GFS(GlobalFS)、SuSE推廣OCFS2(OracleClusterFS)都是實際案例。測試主機介紹這次測試主機共三台(實際上只有兩台硬體),一台WindowsXP、一台Linux利用Xen虛擬機器技術偽裝成兩台FedoraCore5Linux,相關資訊如下:用途(作業系統)主機IP位址Target主機(Linux)172.16.2.101Initiator主機(Linux)172.16.7.120Initiator主機(WindowsXP)172.16.7.101使用Linux實做iSCSITarget篇這次用來當作iSCSITarget主機是一台標準安裝的FedoraCore5主機,因為FedoraCore5沒有內建iSCSITarget軟體,所以我們只好手動編譯一個名為「iSCSIEnterpriseTarget」軟體來使用。編譯iSCSIEnterpriseTarget軟體我們使用的軟體簡稱為「iscsitarget」網址「」此軟體可於本頁超連結『sourceforgesite』連到「=108475」下載到,終至筆者截稿前(2006年9月),最新的是0.4.13版,下載到的檔案名稱為「iscsitarget-0.4.13.tar.gz」。Note:使用指令「uname-r」查出FedoraCore5核心版本編號為2.6.15符合網頁上所聲明的需求2.6.14以上。第一步:使用指令「tar-zxfiscsitarget-0.4.13.tar.gz」解開下載的tar.gz檔並生成「iscsitarget-0.4.13」這個目錄與其下許多檔案。溫馨提示:雖然編譯程式不一定需要root權限,但是因為稍後安裝、執行程式還是需要root權限,為避免麻煩所以筆者都使用root來演練。第二步:使用指令「cdiscsitarget-0.4.13」切換至剛才產生的iscsi原始碼目錄內,接著使用指令「make」來編譯程式。編譯過程之溫馨提示一:若發生「make[1]:cc:Commandnotfound」錯誤,代表著這台Linux編譯相關的程式(尤其是gcc)還沒安裝,Linux稱這類軟體為開發工具(DevelopTool),只要把『gcc』相關這一類的開發工具都安裝即可。下圖為gcc還沒安裝前發生編譯錯誤的畫面。筆者使用指令「rpm-ivhgcc-4.1.0-3.i386.rpmbinutils-2.16.91.0.6-4.i386.rpmglibc-devel-2.4-4.i386.rpmglibc-headers-2.4-4.i386.rpmlibgomp-4.1.0-3.i386.rpm」將gcc與其相依套件,包括binutils、glibc-devel、glibc-headers和libgomp都一併裝起來。Note:Fedora軟體套件一般都放在安裝光碟片Fedora/RPMS目錄內,您也可藉由圖形化程式來安裝套件,或是於安裝時就預先把開發工具都裝起來。安裝gcc與其相依軟體的畫面裝好gcc後,繼續執行編譯動作,也就是回到iscsi原始碼目錄執行「make」命令。編譯過程之溫馨提示二:若發現錯誤訊息「chap.c:20:25:error:openssl/sha.h:Nosuchfileordirectorychap.c:21:25:error:openssl/md5.h:Nosuchfileordirectory」則是因為『openssl-devel』套件尚未安裝所造成。於編譯期間因缺少openssl-devel套件發生錯誤的快照與缺少gcc套件的解決方法類似,使用指令「rpm-ivhopenssl-devel-0.9.8a-5.2.i386.rpmkrb5-devel-1.4.3-4.1.i386.rpmzlib-devel-1.2.3-1.2.1.i386.rpme2fsprogs-devel-1.38-12.i386.rpm」將openssl-devel與其相依套件,包括krb5-devel、zlib-devel和e2fsprogs-devel都一併裝起來。安裝openssl-devel與其相依軟體的畫面編譯過程之溫馨提示三:若發現錯誤訊息「make:***/lib/modules/2.6.15-1.2054_FC5smp/build:Nosuchfileordirectory.Stop.」則是因為核心原始碼『kernel-devel』套件尚未安裝所致。Note:其中『2.6.15-1.2054_FC5smp』是會與當下kernel版本有關(筆者使用雙CPU主機所以有smp),請使用「uname-r」指令可確認核心版本。於編譯期間因缺少核心原始碼『kernel-devel』套件發生錯誤的快照。將kernel-devel套件與相依的hardlink套件裝起來,注意到kernel-devel有許多版本,請選擇與您的主機執行命令「uname-r」顯示出來的相同版本安裝即可,通常安裝i686版,鮮少發生有i686版本卻安裝i586版本的情形,因為不能使用i686版本卻只能使用i586版本軟體的電腦主機(586規格)已經不常見。安裝kernel-devel與其相依軟體的畫面繼續執行「make」命令,這一回應該不會出錯了。Note:若在安裝FedoraCore5就將套件全部安裝上去,就不會發生前述這些小插曲,只是『全裝』對於一般普通或汰舊電腦來說會花上不少時間。第三步:執行「makeinstall」將編譯好的程式安裝到系統內,包括『iSCSITarget程式』以及『iSCSITarget核心模組』。在安裝完畢iscsitarget軟體後,接著需了解其相關程式、設定檔、啟停方式、規格與所使用埠號,來完成最簡易版的iSCSIEnterpriseTarget設定。iSCSIEnterpriseTarget啟停方式iscsitarget支援Linux常用InitScripts方式,也就是使用「/etc/init.d/iscsi-target」來控制iscsi-target服務,只要在執行「/etc/init.d/iscsi-target」最後面補上start或stop即可作啟動與停止的動作,在RedHat/Fedora系列Linux也可以使用「serviceiscsi-target」來控制啟停。溫馨提示:注意到服務名稱「iscsi-target」中間有『-』符號,與軟體名稱「iscsitarget」相異。至於開機預設啟動iscsi-target則是使用chkconfig來調整,使用指令「chkconfig--addiscsi-target」將iscsi-target加入服務列表;使用「chkconfig--listiscsi-target」列出開機預設是啟動還是停用;使用「chkconfigiscsi-targeton」來設定開機預設啟動(on啟動,off關閉)。InitScripts、service與chkconfig的指令操作畫面iSCSIEnterpriseTarget服務所使用埠號iSCSITarget端主機預設使用tcp埠號3260來服務,這項資訊可用來「設定防火牆」,使用封包過濾(PacketFilter)防火牆來規範來源端主機IP也算是的方法,另外iscsitarget也有內建「以主機為基礎」(Host-Based)防護機制,這機制類似Linux/Unix上常用TCPWrapper方式(/etc/hosts.allow、/etc/hosts.deny)。我們使用的FedoraCore5內建防火牆是不開放這個3260埠號,所以有啟動防火牆功能請記得放行(若不熟悉防火牆的讀者請先暫時關閉防火牆)。開啟「/etc/sysconfig/iptables」(FedoraCore5防火牆設定檔),仿造--dport22那一行(這行就是放行sshd服務,埠號22),新增一行開放3260埠號,接著使用指令「serviceiptablesrestart」來重新啟動iptables服務即完成放行iSCSITarget服務埠號3260。溫馨提示:圖形介面程式來設定Firewall與SELinux則是使用指令「system-config-securitylevel」來啟動。檔案「/etc/sysconfig/iptables」修改情形iSCSIEnterpriseTargetDaemon設定檔iSCSIEnterpriseTargetDaemon名稱ietd

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功