分类: LINUX
2013-07-04 10:08:52
安装open-iscsi套件,即Linux Open-iSCSI Initiator。
# sudo apt-get install open-iscsi
有关iscsiadm的指令:
寻找主机上的target iscsiadm -m discovery --type sendtargets --portal HOST_IP
登入target iscsiadm –m node --targetname THE_TARGET_IQN --login
注销target iscsiadm –m node --targetname THE_TARGET_IQN --logout
删除target iscsiadm –m node --op delete --targetname THE_TARGET_IQN
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 以上。
第一步:使用指令「 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 還沒安裝前發生編譯錯誤的畫面。
筆者使用指令「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 與其相依軟體的畫面
裝好 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 套件發生錯誤的快照
與缺少 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 與其相依軟體的畫面
編譯過程之溫馨提示三:若發現錯誤訊息「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』套件發生錯誤的快照。
將 kernel-devel 套件與相依的 hardlink 套件裝起來,注意到 kernel-devel
有許多版本,請選擇與您的主機執行命令「uname -r」顯示出來的相同版本安裝即可,通常安裝 i686 版,鮮少發生有 i686 版本卻安裝
i586 版本的情形,因為不能使用 i686 版本卻只能使用 i586 版本軟體的電腦主機(586 規格)已經不常見。
安裝 kernel-devel 與其相依軟體的畫面
繼續執行「make」命令,這一回應該不會出錯了。
Note:若在安裝 Fedora Core 5 就將套件全部安裝上去,就不會發生前述這些小插曲,只是『全裝』對於一般普通或汰舊電腦來說會花上不少時間。
第三步:執行「make install」將編譯好的程式安裝到系統內,包括『iSCSI Target 程式』以及『iSCSI Target 核心模組』。
在安裝完畢 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 的指令操作畫面
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」修改情形
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 設定情形
下一步就是製作方才設定 /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
使用 Windows 實做 iSCSI Initiator
微軟自 2003 年就已經完成 iSCSI Initiator
相關軟體支援,網址「
/storage/iscsi/default.mspx」可以看到微軟對於 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。
Note:除了 x86 版本外,還提供 amd64 及 ia64 版本 iSCSI Initiator for Windows。
安裝 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』即可。
接下來切換到第三個分頁標籤『Targets』,偵測到「iqn」且現在狀態是 inactive(還沒運作),點選下方『Log On』按鈕跳出『Log On to Target』視窗接著按下『OK』按鈕來使這個 Target active(運作)。
得到這個區塊裝置後(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 能找到套件檔案。
使用 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 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 -m node --record 0aa8ed --logout」來移除連線,指令「fdisk -l」(參數是小寫 L 不是一)列出當下所有能夠使用的磁碟。
Note:裝置 xvda 是使用 Xen DomainU 所虛擬出來之主磁碟。
接下來在 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
左右的效能。
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)下,再設定即可。
底下列出範本為「只允許 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 主機設定
/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 畫面
Initiator 主機設定 /etc/iscsid.conf 畫面
結語
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 速度不失為一個好方法。