學習iSCSI

學習iSCSI

談到iSCSI,我能想到的就是存儲分爲NAS和SAN,NAS與SAN都是在DAS的基礎上發展起來的,是新型數據存儲模式中的兩個主要發展方向。

網絡存儲技術(Network Storage Technologies) 網絡存儲技術是基於數據存儲的一種通用網絡術語。網絡存儲結構大致分爲三種:
直連式存儲(DAS:Direct Attached Storage)、
網絡連接式存儲(NAS:Network Attached Storage)
存儲網絡(SAN:Storage Area Network)。

  • 直連式存儲(DAS)

是一種直接與主機系統相連接的存儲設備,如作爲服務器的計算機內部硬件驅動。

將存儲設備通過SCSI 接口或光纖通道直接連接到一臺計算機上。其缺點是服務器成爲網絡瓶頸,存儲容量不易擴充; 服務器發生故障時,連接在服務器上的存儲設備中的數據不能被存取。

  • 網絡連接式存儲(NAS)

一種採用直接與網絡介質相連的特殊設備實現數據存儲的機制。由於這些設備都分配有 IP 地址,所以客戶機通過充當數據網關的服務器可以對其進行存取訪問,甚至在某些情況下,不需要任何中間介質客戶機也可以直接訪問這些設備。

NAS的優點

第一,NAS適用於那些需要通過網絡將文件數據傳送到多臺客戶機上的用戶。NAS設備在數據必須長距離傳送的環境中可以很好地發揮作用。

第二,NAS設備非常易於部署。可以使NAS主機、客戶機和其他設備廣泛分佈在整個企業的網絡環境中。NAS可以提供可靠的文件級數據整合,因爲文件鎖定是由設備自身來處理的。

第三,NAS應用於高效的文件共享任務中,例如UNIX中的NFS和Windows NT中的CIFS,其中基於網絡的文件級鎖定提供了高級併發訪問保護的功能。

  • 存儲網絡(SAN)

SAN 是指存儲設備相互連接且與一臺服務器或一個服務器羣相連的網絡。其中的服務器用作 SAN 的接入點。在有些配置中,SAN 也與網絡相連。SAN 中將特殊交換機當作連接設備。它們看起來很像常規的以太網絡交換機,是 SAN 中的連通點。SAN 使得在各自網絡上實現相互通信成爲可能,同時並帶來了很多有利條件。
SAN的優點

SAN是通過網線連接的磁盤陣列,具備磁盤陣列的所有主要特徵:高容量、高效能、高可靠。

1、SAN 具有安裝容易、快速的特點

2、易於維護

3、非常好的可擴展性

4、具有更快的響應速度和更高的數據帶寬

5、對服務器的要求降低,可大大降低服務器的成本,有利於高性能存儲系統在更廣的範圍內普及及應用。

NAS與SAN的區別

NAS有文件操作和管理系統,而SAN卻沒有

SAN主要是高速信息存儲,NAS偏重文件共享。

SAN和NAS相比不具有資源共享的特徵

SAN是隻能獨享的數據存儲池,NAS是共享與獨享兼顧的數據存儲池。

NAS是網絡外掛式,而SAN是通道外掛式。

SAN高效可擴,NAS簡單靈活

一般用在NAS中的有CIFS(在windows主機之間進行網絡文件共享),NFS(用於unix上的網絡文件系統),在SAN中有iSCSI(Internet 小型計算機系統接口),FCP(光纖信道協議)

ESX storage只支持NFS,iSCSI,FCP協議,不支持cifs協議

說了這麼多有的沒的,下面開始進入正題iSCSI

什麼是 iSCSI:

早期的企業使用的服務器若有大容量磁盤的需求時,通常是透過SCSI來串接SCSI 磁盤,因此服務器上面必須要加裝SCSI卡,而且這個SCSI是專屬於該服務器的。 後來這個外接式的SCSI設備被SAN的架構所取代,在SAN的標準架構下,雖然有很多的服務器可以對同一個SAN 進行存取的動作,不過爲了速度需求,通常使用的是光纖通道。但是光纖通道很貴,不但設備貴,服務器上面也要有光纖卡,很麻煩,所以光纖的SAN在中小企業很難普及。

後來網絡實在太普及,尤其是以IP封包爲基礎的LAN技術已經很成熟,再加上以太網路的速度越來越快,所以就有廠商將SAN的連接方式改爲利用IP技術來處理。 然後再透過一些標準的設定,最後就得到Internet SCSI (iSCSI)這個的產生! iSCSI主要是透過TCP/IP的技術,將儲存設備端透過iSCSI target (iSCSI目標端)功能,做成可以提供磁盤的服務器端,再透過iSCSI initiator (iSCSI初始化用戶)功能,做成能夠掛載使用iSCSI target的用戶端,如此便能透過iSCSI設置來進行磁盤的應用了。

也就是說,iSCSI 這個架構主要將儲存裝置與使用的主機分爲兩個部分,分別是:

iSCSI target:就是儲存設備端,存放磁盤或RAID的設備,目前也能夠將Linux主機模擬成iSCSI target了! 目的在提供其他主機使用的『磁盤』;
iSCSI initiator:就是能夠使用target的用戶端,通常是服務器。 也就是說,想要連接到iSCSI target的服務器,也必須要安裝iSCSI initiator的相關功能後才能夠使用iSCSI target提供的磁盤。

配置iSCSI實驗環境

兩臺主機

主機A:

主機名:Jerry (initiator端)
eth0:192.168.186.130

主機B:

主機名:Tom(target端)
eth0:192.168.186.207

先來配置initiator端

安裝iscsi initiator

可以用rpm –qa |grep iscsi查看是否安裝,iscsi initiator可以從linux系統鏡像中找到.rpm安裝就行。

安裝好以後,我們再來看看initiator的配置文件

/etc/iscsi/initiatorname.iscsi 只有一行iqn,是target端識別initiator的唯一標識,默認就行。

iqn.yyyy-mm.:identifier

iqn.年-月.單位網域名的反轉寫法:這個分享的target名稱

例如我的就是:iqn.2012-04.com.redhat:2cc7d328b934

這個iqn是initiator端 /etc/iscsi/initiatorname.iscsi文件中的,即target端通過initiator端的iqn號把新設備/dev/sdb 註冊給initiator,這樣initiator就可以用了新的磁盤了。

/etc/iscsi/iscsid.conf 主要的配置文件

node.startup = automatic 是表示當iscsi initator啓動時就會自動登陸到target。

“CHAP Settings” 主要是一些安全設置。

“Timeouts” 部分是我們重點關注的地方:

  node.session.timeo.replacement_timeout 指網絡出現問題,多長時間通知上層:


  node.session.timeo.replacement_timeout = 120
一般我們可以把這個時間改小,防止IO被hang太長時間,如:
  node.session.timeo.replacement_timeout = 3


下面兩個時間是sessison登錄和登出Target的超時時間,也可以適當減少。
  node.conn[0].timeo.login_timeout = 15
  node.conn[0].timeo.logout_timeout = 15


  node.conn[0].timeo.noop_out_interval 指發ping包的時間間隔,
  node.conn[0].timeo.noop_out_timeout 爲接收心跳包的超時時間


  node.conn[0].timeo.noop_out_interval = 5
  node.conn[0].timeo.noop_out_timeout = 5
這兩個時間根據需要減少,如:
  node.conn[0].timeo.noop_out_interval = 1
  node.conn[0].timeo.noop_out_timeout = 1


  node.session.initial_login_retry_max 爲登錄的重試次數:
  node.session.initial_login_retry_max = 4
可以適當減少到  2:
  node.session.initial_login_retry_max = 2

啓動iscsi initiator服務

#service iscsi start或#/etc/init.d/iscsi start

配置target端

iSCSI 就是透過一個網路介質,將現有的磁盤給分享出去就是了。那麼有哪些類型的磁盤可以分享呢?這包括:

使用dd 指令所建立的大型文件可供模擬爲磁碟(無須預先格式化);
使用單一分區(partition) 分享爲磁盤;
使用單一完整的磁盤(無須預先分區);
使用磁碟陣列分享(其實與單一磁盤相同方式);
使用軟磁盤陣列(software raid) 分享成單一磁盤;
使用LVM 的裝置分享爲磁盤。

其實沒有那麼複雜,我們大概知道可以透過(1)大型文件; (2)單一分區; (3)單一設備(包括磁盤、陣列、軟磁盤陣列、LVM裝置文件等等) 來進行分享。要注意,等一下我們要分享出去的資料,最好不要被使用,也最好不要開機就被掛載(/etc/fstab 當中沒有存在記錄的意思)

既然iSCSI要分享的是磁盤,那麼我們要準備一個新的磁盤,在虛擬機中加一塊新的磁盤/dev/sdb

解壓軟件包

#cd /usr/local/src/

#tar zxvf iscsitarget-1.4.20.2.tar.gz

#make

#make install

加入系統服務

#chkconfig --add iscsi-target   就可以通過service iscsi-target start來啓動他了

配置iSCSI target

#vim  /etc/iet/ietd.conf

Target iqn.2012-04.com.redhat:2cc7d328b934

Lun 0 Path=/dev/sdb,Type=blockio,ScsiId=xyz,ScsiSN=xyz
其中內容中的Target後面是Target的名稱,一般名稱爲:iqn..com.:,
其中爲年月,爲主機名,<爲存儲的名稱,可以隨便起一個名字。

Lun 1是指這個設備共享出去的Lun Id,同一個Target Lun Id不能重複。Type=blockio是指定使用blockio的方式,
也可以使用fileio,如果使用了fileio,會使用操作系統的文件緩存,如果出現掉電,可能會丟數據。使用blockio則沒有這個問題。
IscsiId是這個Lun的名字,隨便起一個名字就可以了。

啓動iSCSI target

#service iscsi-target start

查看iSCSI-target共享出的硬盤

#cat /proc/net/iet/volume

查看客戶端(initiator端)登陸到target的情況

#cat /proc/net/iet/session

兩端的基本配置設置好後

iscsi initiator主要通過iscsiadm命令管理,我們先查看提供服務的iscsi target機器上有哪些target:

#iscsiadm --mode discovery --type sendtargets --portal 192.168.186.207

然後就可以登陸某個target了,登陸成功某個target後,這個target下的硬盤也就都共享過來了:

#iscsiadm --mode node --targetname iqn.2012-04.com.redhat:2cc7d328b934 –portal 192.168.186.207:3260 --login

登陸之後要對新磁盤進行分區,格式化,然後在掛載即可

完成這些命令後,iscsi initator會把這些信息記錄到/var/lib/iscsi目錄下:

/var/lib/iscsi/send_targets記錄了各個target的情況,/var/lib/iscsi/nodes記錄了各個target下的nodes情況。
下次再啓動iscsi initator時(service iscsi start),就會自動登陸各個target上。如果想讓重新手工登陸各個target,需要把/var/lib/iscsi/send_targets目錄下的內容和/var/lib/iscsi/nodes下的內容全部刪除掉。

要查看各個iscsi的信息:

# iscsiadm -m session -P 3 
發佈了124 篇原創文章 · 獲贊 17 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章