之前的那篇文章 http://shanker.blog.51cto.com/1189689/831010 側重在應用上,在target的搭建上用到了openfiler系統,這篇文件介紹如何在Redhat5.5系統上創建target,並用CentOS和win來連接,側重點是在shell環境下搭建iSCSI.
存儲世界里,常用的名詞有SCSI(Small Computer System Interface), FC(FIbre Channel ), DAS(Direct -Attached Storage), NAS(Network Attached Storage ), SAN(Storage Area Network ),iSCSI(internet SCSI),在iSCSI出現之前,構建SAN架構的存儲唯一技術就是利用光纖通道,需要花費很大建設成本,一般中小企業無法承擔.iSCSI技術解決了傳輸效率,兼容性,開放性,安全性等方面的諸多問題.
FC SAN 與 IP SAN比較,在傳輸方式上,FC SAN AND IP SAN 都採用協議方式來完成,這是他們的共同點;在傳輸速度上,FC SAN 2Gbit/s, iSCSI 1Gbit/s;傳輸距離上,FC理論上可以達到100公里,而事實上,傳輸超過50公里后,就會出現瓶頸,而iSCSI在理論上沒有距離的限制;管理及維護成本上,假設FC SAN需要投入很多硬體成本,並且需要特定的工具軟體進行管理,而iSCSI構建成本低,只要有網路就可以.
iSCSI的組成: iSCSI initiator或者iSCSI HBA; iSCSI Target;至少兩台伺服器;乙太網交換機.本次實驗是在vmware的虛擬機環境下完成的,initiator為centos6.0(192.168.39.133),target為rhel5.5(192.168.39.134),軟體有
iscsi-initiator-utils-6.2.0.871-0.16.el5
iscsitarget-1.4.20.2.tar.gz iSCSI target:就是儲存設備端,存放磁碟或RAID的設備,目前也能夠將Linux主機模擬成iSCSI target了! 目的在提供其他主機使用的『磁碟』;iSCSI initiator:就是能夠使用target的用戶端,通常是伺服器. 也就是說,想要連接到iSCSI target的伺服器,也要安裝iSCSI initiator的相關功能后才能夠使用iSCSI target提供的磁碟.
實驗第一步:在target上安裝軟體 解壓軟體包編譯安裝iscsitarget
- # cd /usr/local/src/
- # tar xzvf iscsitarget-1.4.20.2.tar.gz
- # cd iscsitarget-1.4.20.2
- # make
- # make install
l 配置iSCSI target
- # chkconfig --add iscsi-target
- Vi /etc/iet/ietd.conf
- Target iqn.1994-05.com.redhat:e44b66e1842Lun 1 Path=/dev/sdc,Type=blockio,ScsiId=sdc
iSCSI有一套自己分享target文件的定義,基本上,由iSCSI分享出來的target文件都是以iqn為開頭,意思是:『iSCSI Qualified Name (iSCSI合格名稱)』的意思.那麼在iqn後面要接什麼呢?通常是這樣的:
iqn.yyyy-mm.
我做這個測試的時間是2012年4月份,然後我的的機器是shanker.com,反轉網域寫法為com.shanker, 然後,想要的iSCSI target 名稱是xp_disk ,那麼就可以這樣寫:
iqn.2012-04.com.shanker:xp_diskLun 1是指這個設備共享出去的Lun Id,同一個Target Lun Id不能重複.Type=blockio是指定使用blockio的方式,也可以使用fileio,如果使用了fileio,會使用操作系統的文件緩存,如果出現掉電,可能會丟數據.使用blockio則沒有這個問題.
IscsiId是這個Lun的名字,隨便起一個名字就可以了.
- # service iscsi-target start
l 查看iSCSI target 共享出的硬碟
- # cat /proc/net/iet/volume
l 查看客戶端登錄到target的情況
- # cat /proc/net/iet/session
會發現剛才配置的那個target
- # iscsiadm -m discovery -t sendtargets -p 192.168.39.134
- # iscsiadm -m node -T iqn.1994-05.com.redhat:e44b66e1842 -p 192.168.39.134 -l
完成這些命令后,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下的內容全部刪除掉.
# iscsiadm -m session -P 2
iSCSI target 的日常維護
1.在/etc/ietd.conf文件中增加新硬碟的配置;
2.重新啟動iscsi-target 服務:
- # service iscsi-target restart
3.在target增加的新硬碟在iscsi initator端不會被自動識別,需要到iscsi客戶端機器上重新識別新加的新硬碟:
- # iscsiadm -m discovery -t sendtargets -p 192.168.39.134 -l
- [root@defcon iet]# cat /proc/net/iet/volume
- tid:1 name:iqn.1994-05.com.redhat:e44b66e1842
- lun:1 state:0 iotype:blockio iomode:wt blocks:4194304 blocksize:512 path:/dev/sdc
2.使用ietadm命令動態增加硬碟:
假設我們現在要往tid=1,target name是iqn.1994-05.com.redhat:e44b66e1842增加硬碟/dev/sdb,
則執行如下命令:
- # ietadm --op new --tid=1 --lun=2 --params Type=blockio,Path=/dev/sdb
然後再用cat /proc/net/iet/volume檢查硬碟是否被加入到iscsi-target中.
完成這個操作后,需要在initiator伺服器上重啟iscsi服務,然後,重新map
我們發現多了一塊sdd硬碟,正式剛才target新添加的/dev/sdb
2.如果想把硬碟加到一個新建的target中,則需要先新建target,
- # ietadm --op new --tid=2 --params Name=iqn.2012-05.com.shanker:e44b66e1842
命令中的tid是比以前的最大tid值大1的值.
然後再把硬碟加到這個新建的target中:
- # ietadm --op new --tid=2 --lun=2 --params Type=blockio,Path=/dev/sdb
不要忘記在/etc/ietd.conf文件中增加新硬碟的配置.
本文出自 「天涯海閣」 博客,請務必保留此出處http://shanker.blog.51cto.com/1189689/831708
[火星人 ] CentOS6.0 Windows7 Redhat5.5搭建iSCSI存儲環境實驗已經有819次圍觀