Chinaunix首页 | 论坛 | 博客
  • 博客访问: 497796
  • 博文数量: 59
  • 博客积分: 4236
  • 博客等级: 上校
  • 技术积分: 755
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-13 13:08
个人简介

六笨哥

文章分类

全部博文(59)

文章存档

2015年(1)

2014年(2)

2013年(4)

2012年(4)

2011年(15)

2010年(5)

2009年(13)

2008年(15)

我的朋友

分类: LINUX

2011-11-19 22:38:24

Linux 應用 iSCSI 技術

本文转载自
作者:徐秉義(Albert Hsu)

本文主要介紹 iSCSI:一種在 TCP/IP 網路中使用 SCSI 命令來傳輸資料的標準通訊協定。

以及介紹 Linux 在 iSCSI 方面應用實作。

儲存區域網路(SAN)

談到 iSCSI 就會先談到儲存區域網路(Storage Area Network, 簡稱 SAN),這是個專門用來傳輸磁碟資料的網路,以別於一般 TCP/IP 網路,通常預設 SAN 是使用光纖(FC,Fibre Channel)設備,不同的是 iSCSI 預設使用 Gigabit Ethernet(通常是乙太網路銅線)來作傳輸媒介,促使 iSCSI 價格上比 Fibre Channel 低廉許多,這使得 iSCSI 讓許多中小企業能夠以較低門檻就可以實現 SAN 的應用。

Note:能夠實現 SAN 應用有 Fibre Channel、iSCSI 與 AoE 等等,其中以 Fibre Channel 價格最高、效能最優,而 iSCSI 是 Fibre Channel 之外較知名儲存通訊協定,AoE 則是緊追在 iSCSI 的後起之秀(筆者於 NetAdmin 網管人第七期有 AoE 詳細介紹)。進階學習:iSCSI 亦能夠使用光纖來當傳輸媒介,但是通常為了節省費用而使用銅線。

在 SAN 中通常有兩個角色「Target」與「Initiator」分別敘述如下:

Target

稱為 Target 的通常是「儲存設備」(Storage Device),也就是存放資料的磁碟(以磁碟陣列居多),在我們使用 iSCSI 期間,會在 iSCSI 儲存設備上去建立 LUN(Logical Unit Number)來提供給有 iSCSI Initiator 功能的主機來存取 iSCSI 儲存設備。

溫馨提示:LUN 好比是個「邏輯單位磁碟」,為追求效率、冗餘與延展性,這個 LUN 通常會是由數個實體磁碟(在搭配 RAID 或 LVM 技術後)所組成。Initiator

Initiator 主要功能是提供電腦主機連線到 Target 作磁碟存取。這個 Initiator 可使用硬體方式 Initiator 或者軟體方式 Initiator,底下在 Linux iSCSI 實做,皆是使用軟體方式 Target 與 Initiator。

溫馨提示:「軟體模擬」或「硬體晶片運作」的 iSCSI Target 與 iSCSI Initiator 就好比 RAID 有「軟體模擬的 SoftRAID」與「硬體方式 Hardware RAID」。iSCSI 介紹

iSCSI(Internet SCSI):一種主要應用在儲存區域網路(SAN)通訊協定,iSCSI 將 SCSI 命令運行在 TCP/IP 網路上,用以傳輸磁碟資料。iSCSI 在 OSI 七層模型中屬於傳輸層(Transport Layer)的通訊協定,提供給 iSCSI Target 與 iSCSI Initiator 之間溝通。

經由 iSCSI 技術,我們能夠提供 Block-Level I/O 給 Initiator 主機,其目的不外乎是「將磁碟排線網路化」、「把這台主機(Target 主機)幻化成另一台主機(Initiator 主機)的磁碟」以達成更大空間、更高 I/O 速度及具有冗餘與高延展度的應用,類似 iSCSI 技術還有 Fibre Channel、AoE(ATA Over Ethernet)。

進階學習:搭配 SAN 架構所應用之高階技術之一為叢集檔案系統(Cluster File System),RedHat 推廣 GFS(Global FS)、SuSE 推廣 OCFS2(Oracle Cluster FS)都是實際案例。測試主機介紹

這次測試主機共三台(實際上只有兩台硬體),一台 Windows XP、一台 Linux 利用 Xen 虛擬機器技術偽裝成兩台 Fedora Core 5 Linux,相關資訊如下:

 

用途(作業系統)主機 IP 位址
Target 主機(Linux)172.16.2.101
Initiator 主機(Linux)172.16.7.120
Initiator 主機(Windows XP)172.16.7.101
使用 Linux 實做 iSCSI Target 篇

這次用來當作 iSCSI Target 主機是一台標準安裝的 Fedora Core 5 主機,因為 Fedora Core 5 沒有內建 iSCSI Target 軟體,所以我們只好手動編譯一個名為「iSCSI Enterprise Target」軟體來使用。

編譯 iSCSI Enterprise Target 軟體

我們使用的軟體簡稱為「iscsitarget」網址「 site』連到「 0.4.13 版,下載到的檔案名稱為「iscsitarget-0.4.13.tar.gz」。

Note:使用指令「uname -r」查出 Fedora Core 5 核心版本編號為 2.6.15 符合網頁上所聲明的需求 2.6.14 以上。

iscsitarget 畫面

第一步:使用指令「 tar -zxf iscsitarget-0.4.13.tar.gz」解開下載的 tar.gz 檔並生成「iscsitarget-0.4.13」這個目錄與其下許多檔案。

溫馨提示:雖然編譯程式不一定需要 root 權限,但是因為稍後安裝、執行程式還是需要 root 權限,為避免麻煩所以筆者都使用 root 來演練。

第二步:使用指令「 cd iscsitarget-0.4.13」切換至剛才產生的 iscsi 原始碼目錄內,接著使用指令「make」來編譯程式。

編譯過程之溫馨提示一:若發生「make[1]: cc: Command not found」錯誤,代表著這台 Linux 編譯相關的程式(尤其是 gcc)還沒安裝,Linux 稱這類軟體為開發工具(Develop Tool),只要把『gcc』相關這一類的開發工具都安裝即可。

下圖為 gcc 還沒安裝前發生編譯錯誤的畫面。

ccNotFound 畫面

筆者使用指令「rpm -ivh gcc-4.1.0-3.i386.rpm binutils-2.16.91.0.6-4.i386.rpm glibc-devel-2.4-4.i386.rpm glibc-headers-2.4-4.i386.rpm libgomp-4.1.0-3.i386.rpm」將 gcc 與其相依套件,包括 binutils、glibc-devel、glibc-headers 和 libgomp 都一併裝起來。

Note:Fedora 軟體套件一般都放在安裝光碟片 Fedora/RPMS 目錄內,您也可藉由圖形化程式來安裝套件,或是於安裝時就預先把開發工具都裝起來。

安裝 gcc 與其相依軟體的畫面

installGcc 畫面

裝好 gcc 後,繼續執行編譯動作,也就是回到 iscsi 原始碼目錄執行「make」命令。

編譯過程之溫馨提示二:若發現錯誤訊息「chap.c:20:25: error: openssl/sha.h: No such file or directory
chap.c:21:25: error: openssl/md5.h: No such file or directory」則是因為『openssl-devel』套件尚未安裝所造成。

於編譯期間因缺少 openssl-devel 套件發生錯誤的快照

opensslError 畫面

與缺少 gcc 套件的解決方法類似,使用指令「rpm -ivh openssl-devel-0.9.8a-5.2.i386.rpm krb5-devel-1.4.3-4.1.i386.rpm zlib-devel-1.2.3-1.2.1.i386.rpm e2fsprogs-devel-1.38-12.i386.rpm」將 openssl-devel 與其相依套件,包括 krb5-devel、zlib-devel 和 e2fsprogs-devel 都一併裝起來。

安裝 openssl-devel 與其相依軟體的畫面

opensslDev 畫面

編譯過程之溫馨提示三:若發現錯誤訊息「make: *** /lib/modules/2.6.15-1.2054_FC5smp/build: No such file or directory. Stop.」則是因為核心原始碼『kernel-devel』套件尚未安裝所致。Note:其中『2.6.15-1.2054_FC5smp』是會與當下 kernel 版本有關(筆者使用雙 CPU 主機所以有 smp),請使用「uname -r」指令可確認核心版本。

於編譯期間因缺少核心原始碼『kernel-devel』套件發生錯誤的快照。

kernSource 畫面

將 kernel-devel 套件與相依的 hardlink 套件裝起來,注意到 kernel-devel 有許多版本,請選擇與您的主機執行命令「uname -r」顯示出來的相同版本安裝即可,通常安裝 i686 版,鮮少發生有 i686 版本卻安裝 i586 版本的情形,因為不能使用 i686 版本卻只能使用 i586 版本軟體的電腦主機(586 規格)已經不常見。

安裝 kernel-devel 與其相依軟體的畫面

kernSourceInst 畫面

繼續執行「make」命令,這一回應該不會出錯了。

Note:若在安裝 Fedora Core 5 就將套件全部安裝上去,就不會發生前述這些小插曲,只是『全裝』對於一般普通或汰舊電腦來說會花上不少時間。

make 畫面

第三步:執行「make install」將編譯好的程式安裝到系統內,包括『iSCSI Target 程式』以及『iSCSI Target 核心模組』。

makeInst 畫面

在安裝完畢 iscsitarget 軟體後,接著需了解其相關程式、設定檔、啟停方式、規格與所使用埠號,來完成最簡易版的 iSCSI Enterprise Target 設定。

iSCSI Enterprise Target 啟停方式

iscsitarget 支援 Linux 常用 InitScripts 方式,也就是使用「/etc/init.d/iscsi-target」來控制 iscsi-target 服務,只要在執行「/etc/init.d/iscsi-target」最後面補上 start 或 stop 即可作啟動與停止的動作,在 RedHat / Fedora 系列 Linux 也可以使用「service iscsi-target」來控制啟停。

溫馨提示:注意到服務名稱「iscsi-target」中間有『 - 』符號,與軟體名稱「iscsitarget」相異。

至於開機預設啟動 iscsi-target 則是使用 chkconfig 來調整,使用指令「chkconfig --add iscsi-target」將 iscsi-target 加入服務列表;使用「chkconfig --list iscsi-target」列出開機預設是啟動還是停用;使用「chkconfig iscsi-target on」來設定開機預設啟動(on 啟動,off 關閉)。

InitScripts、service 與 chkconfig 的指令操作畫面

serviceiSCSI 畫面

iSCSI Enterprise Target 服務所使用埠號

iSCSI Target 端主機預設使用 tcp 埠號 3260 來服務,這項資訊可用來「設定防火牆」,使用封包過濾(Packet Filter)防火牆來規範來源端主機 IP 也算是的方法,另外 iscsitarget 也有內建「以主機為基礎」(Host-Based)防護機制,這機制類似 Linux/Unix 上常用 TCP Wrapper 方式(/etc/hosts.allow、/etc/hosts.deny)。我們使用的 Fedora Core 5 內建防火牆是不開放這個 3260 埠號,所以有啟動防火牆功能請記得放行(若不熟悉防火牆的讀者請先暫時關閉防火牆)。

開啟「/etc/sysconfig/iptables」(Fedora Core 5 防火牆設定檔),仿造 --dport 22 那一行(這行就是放行 sshd 服務,埠號 22),新增一行開放 3260 埠號,接著使用指令「service iptables restart」來重新啟動 iptables 服務即完成放行 iSCSI Target 服務埠號 3260。

溫馨提示:圖形介面程式來設定 Firewall 與 SELinux 則是使用指令「system-config-securitylevel」來啟動。

檔案「/etc/sysconfig/iptables」修改情形

埠號 3260 圖檔

iSCSI Enterprise Target Daemon 設定檔

iSCSI Enterprise Target Daemon 名稱 ietd 使用 /etc/ietd.conf 當作設定檔,您可以在原始碼目錄(iscsitarget-0.4.13)內的 etc 目錄下找到設定範本,範本內大多是「#」字號開頭的註解,有需要用到這些設定時再將註解拿掉設定調整即可。

將範本設定檔拷貝一份到 /etc 再來設定 /etc/ietd.conf 是個不錯的開始。接著開啟 /etc/ietd.conf 內容,看到這一行「Target iqn.2001-04.com.example:storage.disk2.sys1.xyz」這是 Target 名稱,稱作『iSCSI Qualified Name』(簡稱:iqn),這格式在 iSCSI 規格書中有詳細說明,筆者簡介如下:

iqn.yyyy-mm.[:identifier]

 

格式意義範例
yyyy-mm年份-月份2001-04
reversed domain name倒過來的網域名稱com.example
identifier識別代號storage.disk2.sys1.xyz
溫馨提示:service iscsi-target 呼叫 ietd 程式來服務。

接下來就是要設定 LUN(Logical Unit Number),找到「#Lun 0 Path=/dev/sdc,Type=fileio」這一行並複製貼上後,將『#』註解拿掉並將 Path 改成您提供的磁碟名稱,此例為「Path=/root/test.iso」。

Note:我們可以使用像是區塊裝置(Block devices,例 /dev/sdc)、一般檔案(regular files)、LVM 邏輯卷軸(Logical Volume)與磁碟陣列(RAID)提供給 Initiators 主機當做『區塊裝置』(磁碟),上例是採用「一般檔案」方式。

ietd.conf 設定情形

ietd.conf 圖檔

下一步就是製作方才設定 /root/test.iso 檔案

使用指令「dd if=/dev/zero of=/root/test.iso count=1 seek=1048576」製作出一個約 512 MB 、檔名為 test.iso 檔案於 /root 目錄下。指令的參數解釋如下,若對「dd」指令想要進一步了解,可執行指令「man dd」參考 dd 指令的說明文件。

if 指向來源檔案 /dev/zero

of 指向目的檔案 /root/test.iso

count 次數

seek 目的忽略幾個 blocks

製作好 /root/test.iso 檔案後,使用指令「/etc/init.d/iscsi-target start」來啟動 iscsi-target Daemon。

設定到此,Target 主機調整的部份也告一個段落,接下來介紹 Windows 與 Linux 如何裝上 iSCSI Initiator 軟體來使用 iSCSI Target 所提供出去的區塊裝置(磁碟裝置)。

溫馨提示:若需要更大的檔案,只須加大 seek=「數字」,1048576 是 1024 x 1024 的結果。

/root/test.iso 檔案製作情形與啟動 iSCSI Target Daemon

dd 圖檔

使用 Windows 實做 iSCSI Initiator

微軟自 2003 年就已經完成 iSCSI Initiator 相關軟體支援,網址「iSCSI 支援不遺餘力。

下載 iSCSI Initiator for Windows 軟體,可從此頁面中間「iSCSI Software Initiator v2.0 iSCSI Software Initiator v2.0」超連結來到下載頁面,接著以下載並安裝 Initiator-2.02-QFE-bld1895-x86fre.exe 為例,來說明 Windows 如何連接 iSCSI Target。

msiSCSI 圖檔

Note:除了 x86 版本外,還提供 amd64 及 ia64 版本 iSCSI Initiator for Windows。

x86free 圖檔

安裝 iSCSI Initiator for Windows 版

下載完成 Initiator-2.02-QFE-bld1895-x86fre.exe 後,緊接著就是執行她來安裝 Initiator,依照安裝精靈指示,一步一步來完成安裝程序即可。

Note:安裝中途有一個步驟必須按下 Agree(同意)才能繼續安裝。使用 iSCSI Initiator for Windows 版

安裝完成 iSCSI Initiator 後,在桌面上就會發現啟動圖示(或是在程式集內也有),啟動後先選擇第二個分頁標籤『Discovery』上半框『Target Portals』點選『Add』跳出『Add Target Portal』視窗後,將之前 Linux 作成 iSCSI Target「 IP 位址或 DNS 主機名稱」輸入到『IP address or DNS name』欄位中,再點選『OK』即可。

2分頁

接下來切換到第三個分頁標籤『Targets』,偵測到「iqn」且現在狀態是 inactive(還沒運作),點選下方『Log On』按鈕跳出『Log On to Target』視窗接著按下『OK』按鈕來使這個 Target active(運作)。

3分頁

得到這個區塊裝置後(Block Device)再來就是使用『磁碟管理』來管理這顆磁碟。

由下圖中可看到磁碟 2 是一個還沒切割、還沒格式化且容量 512 MB 左右的硬碟。

溫馨提示:在『我的電腦』使用滑鼠右鍵選『管理』呼叫出『電腦管理』視窗內就有「磁碟管理」選項(從「控制台」內找也可以)。

磁碟管理

後續於 Windows 做「切割硬碟」、「格式化分割區」以及「掛載分割區」與一般新增硬碟沒什麼差別,故在此就不再贅述。

使用 Linux 實做 iSCSI Initiator

Linux 在 iSCSI Initiator 支援稍稍比微軟晚些,但由於 iSCSI、Linux 通常都是搭配應用在中、大型系統環境下,所以販售 iSCSI 硬體廠商都會提供驅動程式給 Linux 使用,尤以 RedHat、SuSE 這些 Linux 知名廠商支援度最高,直到最近 2006 年左右,iSCSI 技術日趨成熟、使用機會亦大大提昇下,現在 Linux 都漸漸已經內建 iSCSI Initiator 相關軟體,像是 Fedora Core 5 與 SuSE Linux Enterise Server 10 都不約而同的內建 iSCSI Initiator 軟體,接下來以 Fedora Core 5 為例,來介紹如何在 Linux 實做 iSCSI Initiator。

安裝 iSCSI Initiator for Linux

在 Fedore Core 5 軟體內就有 iSCSI Initiator 檔名為「iscsi-initiator-utils-5.0.5.476-0.1.i386.rpm」

使用指令「rpm -ivh iscsi-initiator-utils-5.0.5.476-0.1.i386.rpm」把她裝起來即可。

使用指令「rpm -qlp iscsi-initiator-utils-5.0.5.476-0.1.i386.rpm」可看到這個套件包含那些檔案與程式,接下來就從這些檔案下手。

溫馨提示:安裝光碟內 Fedora/RPMS 能找到套件檔案。

linuxInitiator 圖檔

使用 iSCSI Initiator for Linux

第一步:iSCSI Daemon 與啟停方式

iSCSI Initiator Daemon 名稱為 iscsid 可以透過 InitScripts 「/etc/init.d/iscsi start」來啟動,至於停止 iscsid 及設定開機自動啟動 iscsid 與一般 InitScripts 類似就不再多說。

第二步:給 iSCSI Initiator 主機一個名字

當我們第一次執行「/etc/init.d/iscsi start」時,Fedora Core 5 貼心的使用 iscsi-name 指令亂數產生一個 iqn 並設定至 /etc/initiatorname.iscsi 檔案內,就是這台 iSCSI Initiator 主機的 iqn。

iscsi Name 圖檔

溫馨提示:每一台 iSCSI Initiator 的 iqn 必須不同。

第三步:使用 iscsiadm 指令管理連線

使用指令「iscsiadm -m discovery --type sendtargets --portal 172.16.2.101」向 iSCSI Target 主機詢問 Target Record 資訊,其中 172.16.2.101 為 Target 主機 IP 或 DNS 名稱。

使用指令「iscsiadm -m node --record 0aa8ed --login」登入使用這個紀錄(Record),其中 0aa8ed 是之前指令所查出 Record 名稱。

接下來類似「Windows 發現新硬體」的方式,在 Linux 則是使用「dmesg」指令觀看最後部份,發現一顆磁碟大小為 512 MB 左右硬碟(例如,sda)。

溫馨提示:請勿重複執行「iscsiadm -m node --record 0aa8ed --login」這個動作,這樣會產生新的硬碟連線(sdb、sdc、sdd)造成不必要的問題。

iscsiadm 安裝圖檔

若是不小心產生多餘磁碟連線,可使用「iscsiadm -m node --record 0aa8ed --logout」來移除連線,指令「fdisk -l」(參數是小寫 L 不是一)列出當下所有能夠使用的磁碟。

Note:裝置 xvda 是使用 Xen DomainU 所虛擬出來之主磁碟。

fdisk -l 圖檔

接下來在 Linux 「切割磁碟」、「格式化分割區」與「掛載分割區」筆者已於本刊 NetAdmin 第七期-實戰應用篇「ATA+Linux+Ethernet,打造 AoE SAN 實戰攻略」中介紹過。

在此整理一些相關指令提供參考:

 

切割磁碟格式化分割區掛載與卸載
fdiskmkfs -j(ext3 格式)
mkreiserfs(ReiserFS 格式)
mount / umount
下次開機自動取得 iSCSI Target 磁碟

只要 iSCSI Initiator 主機曾經 sendtargets 過並且 login 相關 record 後(取得磁碟),iSCSI Initiator 會將紀錄寫到 /var/db/iscsi/ 目錄內的 db 檔中(分別為 discovery.db 與 node.db),所以只要在 Initiator 主機使用指令「chkconfig iscsi on」設定下次開機自動啟動 iSCSI Initiator Daemon,就可以辦到『下次開機自動取得 iSCSI Target 磁碟』功能。

iscsiadm 指令使用簡介

筆者這次所使用到 iscsiadm 相關應用指令如下:

『172.16.2.101』為 Target 主機的 IP;『0aa8ed』為 sendtargets 後,所得到的 Record。

 

用來發現 Target 主機上的 Recordiscsiadm -m discovery --type sendtargets --portal 172.16.2.101
用於登入使用這個 Record(取得磁碟)iscsiadm -m node --record 0aa8ed --login
用於登出停用這個 Record(釋放磁碟)iscsiadm -m node --record 0aa8ed --logout
用來刪除多餘的 Recordiscsiadm -m node --op delete --record 0aa8ed
溫馨提示:在 /usr/share/doc/iscsi-initiator-utils-5.0.5.476/README 內容中有詳細 iSCSI Initiator 使用說明,包括 iscsiadm 指令。測試 iSCSI 在 Linux 上的 I/O 速度

使用指令「hdparm -t /dev/sda」,筆者得到數據大約 10 MB/sec 左右,應該是受限於 10/100 Mbps 網路關係,若是應用「Gigabit Ethernet」並且搭配「磁碟陣列」所分配出來 iSCSI 磁碟,應該會有 100 MB/sec 左右的效能。

hdparm 圖檔

iSCSI 在安全方面相關設定

iSCSI 在安全管理方面有著不錯優勢,能夠使用「以主機為基礎」(Host-Based Allow / Deny)也就是以 IP 為基礎(IP-Based Allow / Deny)設定允許或拒絕存取;除了用 Host-Based Allow / Deny 外,iSCSI 還提供「使用者為基礎」(User-Based)也就是利用帳號密碼認證來完成允許或拒絕存取的設定。

iSCSI Target 實戰以 IP 為基礎的允許或拒絕 Initiator 主機

之前我們設定 iSCSI Target 是分享給所有 Initiator 主機都能夠存取(不需帳號密碼),先前有提到能使用 iptables(Linux 防火牆)將 iSCSI Target Daemon 預設連接埠 3260 設定防火牆達到限制 Initiator 主機連線;其實 iSCSI Enterprise Target 軟體本身有內建類似 TCP Wrapper(/etc/hosts.allow、/etc/hosts.deny)的 /etc/initiators.allow、/etc/initiators.deny,接下來示範設定這兩個檔案來限制 Initiator 主機存取。

下表為 TCP Wrapper 與 iSCSI Enterprise Target 相對應檔案(兩者皆位於 /etc 目錄下):

 

軟體名稱允許列表檔案拒絕列表檔案
TCP Wrapperhosts.allowhosts.deny
iSCSI Enterprise Targetinitiators.allowinitiators.deny

邏輯上來說:Allow > Deny > 都沒設定到的預設是「允許」

例一:某台主機在 Allow 列表裡,同時也出現在 Deny 列表裡,結果仍是「允許」(因為 Allow > Deny)

例二:某台主機沒有出現在 Allow 列表裡,但有出現在 Deny 裡,結果是「拒絕」(因為 Deny > 沒設定到」

例三:某台主機沒有出現在 Allow 列表裡,也沒有出現在 Deny 裡,結果是「允許」(因為都沒設定到預設是「允許」)

實戰操作:設定 /etc/initiators.allow、/etc/initiators.deny

從安裝 iSCSI Target 原始碼目錄中(iscsitarget-0.4.13),於 etc 目錄下發現有 /etc/initiators.allow、/etc/initiators.deny 這兩個檔案的範本檔,從內容不難看出其設定方式(#為註解),所以只要將其拷貝到 /etc/(根目錄的 etc)下,再設定即可。

allowDeny 圖檔

底下列出範本為「只允許 172.16.7.120 這台 Initiator」並「拒絕全部」設定

/etc/initiators.allow 內容,最後一行允許 172.16.7.120(其他三行被#註解)

# Some exmaples #iqn.2001-04.com.example:storage.disk1.sys1.xyz 192.168.22.2, 192.168.3.8 #iqn.2001-04.com.example:storage.disk1.sys4.xyz [3ffe:302:11:1:211:43ff:fe31:5ae2], [3ffe:505:2:1::]/64 iqn.2001-04.com.example:storage.disk2.sys1.xyz 172.16.7.120

/etc/initiators.deny 內容,最後一行拒絕全部(其他四行被#註解)

# Some exmaples #iqn.2001-04.com.example:storage.disk1.sys1.xyz ALL #iqn.2001-04.com.example:storage.disk1.sys2.xyz 192.168.12.2, 192.168.3.0/24, 192.167.1.16/28 #iqn.2001-04.com.example:storage.disk1.sys4.xyz [3ffe:302:11:1:211:43ff:fe31:5ae2], [3ffe:505:2:1::]/64 iqn.2001-04.com.example:storage.disk2.sys1.xyz ALL

為了確保設定正確,請使用不同 IP 之 Initiator 主機連連看是否設定生效,例如另一台 Linux 或是 Windows。

溫馨提示:請注意到 iqn 需與 /etc/ietd.conf 內的 iqn 相同。iSCSI Target 實戰以使用者帳號密碼為基礎的允許或拒絕 Initiator 主機

iSCSI Target 使用帳號密碼方式認證分成兩階段:

第一階段是 Discovery 時認證所使用的帳號密碼(SendTargets 用的)。

第二階段是登入各別 Target / iqn / Lun 時所使用的帳號密碼(Login 用的)。

溫馨提示:一個 iSCSI Enterprise Target 能夠在 /etc/ietd.conf 設定多個 Target 區段,分享多個 iqn / Lun 並且可以為每個 Target / iqn / Lun 設定存取的帳號密碼。

由下圖的上半個視窗可以看到在 Target 主機於 /etc/ietd.conf 設定兩個 Target / iqn / Lun,而下半個視窗可看到 Initiator 主機使用 iscsiadm 指令發現兩個 Target。

多個 Target 圖檔

 

帳號密碼層級Target 主機設定
/etc/ietd.conf
Initiator 主機設定
/etc/iscsid.conf
Discovery 時使用的帳號密碼
(SendTargets 用的)
IncomingUser joe secret
(獨立於 Target 區段外)
discovery.sendtargets.auth.username = joe
discovery.sendtargets.auth.password = secret
連接 Target / iqn / Lun 時使用的帳號密碼
(Login 用的)
IncomingUser joe2 secret2
(置於 Target 區段內)
node.session.auth.username = joe2
node.session.auth.password = secret2
Note:joe、secret、joe2 與 secret2 都是測試用的帳號密碼。溫馨提示:只要有改到 /etc/ietd.conf、/etc/iscsid.conf 別忘了各別需要使用 InitScripts(/etc/init.d/iscsi-target、/etc/init.d/iscsi)重新啟動相關 Daemon(ietd、iscsid)。

Target 主機設定 /etc/ietd.conf 畫面

Target 設定畫面

Initiator 主機設定 /etc/iscsid.conf 畫面

Initiator 設定畫面

結語Fibre Channel、iSCSI 與 AoE 之間的比較

一般若是需要用到 Fibre Channel 等級的設備,無疑是個講求高效能、高穩定度應用;倘若您有「真的需要用到那麼好?」的疑惑,iSCSI 與 AoE 都是較為便宜的方案,這三者雖然都是提供 Block Level I/O 磁碟存取,卻分別在「Target I/O 速度」、「穩定度/成熟度」、「安全管理」與「建置費用及設定難易度」上,有著不同的優勢。

 

評比項目Fibre ChanneliSCSIAoE(ATA Over Ethernet)
I/O 速度***********
穩定度/成熟度*************
安全管理*************
知名度************
建置費用及
設定難易度
***
設備最貴
設定複雜度中等
****
設備中等價碼
但設定較複雜
*****
設備最便宜
設定簡易方便
安全管理說明設定光纖交換器
(類似 VLAN 技術)
以 TCP/IP 為基礎的
Host-Based Allow / Deny
可搭配使用者認證機制
實體 Ethernet 區隔
可搭配應用 VLAN 技術
歷史淵源與簡介出現時間最早
最為成熟穩定
近幾年來流行(2003 年至今)
經常被視為光纖設備取代方案
多家知名廠商大力支援
出現時較晚(2004 年左右)
知名度較低,主推簡單與便宜
Note:上表中「*」越多意味著在此項目中越有優勢。SAN 架構與其相關技術之應用範疇

關於 SAN 架構與其相關技術應用未來只會越來越廣,底下舉幾個簡單的應用實例,提供參考:

例一:配合叢集(Cluster)與叢集檔案系統(Cluster File System)的高階應用,像是 RedHat GFS 或是 Oracle OCFS2 檔案系統,提供分享(Shared)Block Level I/O 給多台主機。

Note:今年(2006 年)Novell SuSE 在 SLES 10(SuSE Linux Enterprise Server 10)產品發表會中上,就有示範 SAN / iSCSI / OCFS2 相關應用及解決方案。溫馨提示:若未使用及設定 Cluster File System 但卻使用兩個 Initiator 同時存取同一個 Target Device 會導致資料毀損,請小心!

例二:配合資料庫叢集應用,像是 Oracle RAC(需運行在 GFS 或 OCFS2 上)。

例三:快速的資料存取,能夠快速的備份/回存資料磁碟,另外若搭配 Xen / VMWare 等等虛擬機器軟體更能夠快速備份/回存作業系統磁碟,達到不需拆卸機殼內硬碟即可快速切換硬碟配置。

例四:對於「肚量不大」主機,像是筆記型電腦、刀鋒伺服器、1U機架型主機或準系統(像是 Mac Mini)一遇到有磁碟 I/O 量大或磁碟空間需求量大時,應用 SAN 架構來擴充磁碟空間以及增加磁碟 I/O 速度不失為一個好方法。

阅读(814) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~