Chinaunix首页 | 论坛 | 博客
  • 博客访问: 931341
  • 博文数量: 189
  • 博客积分: 10041
  • 博客等级: 上将
  • 技术积分: 2321
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-01 10:11
个人简介

Linux ... ...

文章分类

全部博文(189)

文章存档

2014年(3)

2013年(1)

2010年(5)

2009年(34)

2008年(41)

2007年(105)

我的朋友

分类: LINUX

2008-11-21 15:26:46

Linux 應用 iSCSI 技術

作者:徐秉義

本文主要介紹 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」網址「」此軟體可於本頁 超連結『sourceforge site』連到「」下載 到,終至筆者截稿前(2006年9月),最新的是 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 相關軟體支援,網址「http: //」 可以看到微軟對於 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 實戰攻略」中介紹過。

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

 

切割磁碟 格式化分割區 掛載與卸載
fdisk mkfs -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 主機上的 Record iscsiadm -m discovery --type sendtargets --portal 172.16.2.101
用於登入使用這個 Record(取得磁碟) iscsiadm -m node --record 0aa8ed --login
用於登出停用這個 Record(釋放磁碟) iscsiadm -m node --record 0aa8ed --logout
用來刪除多餘的 Record iscsiadm -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 Wrapper hosts.allow hosts.deny
iSCSI Enterprise Target initiators.allow initiators.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 Channel iSCSI AoE(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 速度不失為一個好方法。

阅读(1865) | 评论(0) | 转发(0) |
0

上一篇:有关择偶——合适最好

下一篇:CVU

给主人留下些什么吧!~~