1.Ubuntu11.10node
2.使用背景:linux
作爲服務器的系統一般是須要儲存設備的,而儲存設備除了可使用系統內建的磁盤以外,若是內建的磁盤容量不夠大, 並且也沒有額外的磁盤插槽 (SATA 或 IDE) 可用時,那麼常看法決的方案就是增長 NAS (網絡附加儲存服務器) 或外接式儲存設備。再高檔一點的系統,可能就會用到 SAN (儲存局域網絡) 。vim
NAS (Network Attached Storage, 網絡附加儲存服務器)其實就是一部設定好的主機了,只要將 NAS 鏈接上網絡,那麼在網絡上面的其餘主機就可以存取 NAS 上頭的資料了。簡單的說,NAS 就是一部 file server,因爲NAS也接在網絡上面,因此,若是網絡上有某個用戶大量存取 NAS 上的數據時,會很容易形成網絡停頓,低階的 NAS 一般會使用 Linux 系統搭配軟件磁盤陣列來提供大容量文件系統。此外,NAS 也一般支持 TCP/IP ,並會提供 NFS, SAMBA, FTP 等常見的通信協議來提供客戶端取得文件系統。centos
SAN (Storage Area Networks, 儲存局域網絡)能夠透過某些特殊的接口或信道來提供局域網絡內的全部機器進行磁盤存取,SAN 是提供『磁盤 (block device)』給主機用,而不是像 NAS 提供的是『網絡協議的文件系統 (NFS, SMB...)』!SAN能夠進行格式化操做而NAS卻不能進行此類操做。SAN 開發的目的是要提供大量的磁盤給用戶,早期的 SAN 大多配合光纖信道 (Fibre Channel) 來提供高速的數據傳輸。目前標準的光纖信道是速度是 2GB ,將來還可能到達 10GB 以上~不過,使用光纖等技術較高的設備,固然就比較貴一些。現今的以太網絡媒體 (網絡卡、交換器、路由器等等設備) 已經能夠達到 GB 的速度了,離 SAN 的光纖信道速度其實差別已經縮小不少~那麼是否咱們能夠透過這個 GB 的以太網絡接口來鏈接到 SAN 的設備呢?這就是咱們接下來要提到的 iSCSI 架構啦!服務器
3.iSCSI介紹:網絡
iSCSI技術是一種由IBM公司研究開發的,是一個供硬件設備使用的能夠在IP協議的上層運行的SCSI指令集,這種指令集合能夠實如今IP網絡上運行SCSI協議,使其可以在諸如高速千兆以太網上進行路由選擇。iSCSI技術是一種新儲存技術,該技術是將現有SCSI接口與以太網絡(Ethernet)技術結合,使服務器可與使用IP網絡的儲存裝置互相交換資料。session
iSCSI 主要是透過 TCP/IP 的技術,將儲存設備端透過 iSCSI target (iSCSI 目標) 功能,作成能夠提供磁盤的服務器端,再透過 iSCSI initiator (iSCSI 初始化用戶) 功能,作成可以掛載使用 iSCSI target 的客戶端,如此便能透過 iSCSI 協議來進行磁盤的應用了 。 架構
iSCSI 這個架構主要將儲存裝置與使用的主機分爲兩個部分,分別是:工具
iSCSI target:就是儲存設備端,存放磁盤或 RAID 的設備,目前也可以將 Linux 主機仿真成 iSCSI target 了!目的在提供其餘主機使用的『磁盤』;spa
iSCSI initiator:就是可以使用 target 的客戶端,一般是服務器。 也就是說,想要鏈接到 iSCSI target 的服務器,也必需要安裝 iSCSI initiator 的相關功能後纔可以使用 iSCSI target 提供的磁盤就是了。
以下圖所示,iSCSI 是在 TCP/IP 上面所開發出來的一套應用,因此得要有網絡才行啊!
4.server端(磁盤供給者)安裝軟件:tgt
5.client 端(磁盤使用者)安裝軟件 :open-iscsi
6.實驗條件:在安裝Ubuntu的時候應該規劃好磁盤配額,最好留出一部分磁盤空間方便後續的利用和實驗
7.開始試驗:
server端
mkdir /home/lyang/iscsi
dd if=/dev/zero of=/home/lyang/iscsi/disk1.img bs=1M count=100
chcon -Rv -t tgtd_var_lib_t /home/lyang/iscsi/
vim /etc/tgt/targets.conf
<target iqn.2014-03.ly.Ubuntu:lyangdisk>
backing_store /home/lyang/iscsi/disk1.img
initiator-address 192.168.2.0/24
incominguser lyang 218909
write-cache off
</target>
/etc/init.d/tgt start
chkconfig tgt on
tgt-admin --show
client 端
apt-get install open-iscsi
vim /etc/iscsi/iscsid.conf
node.session.auth.username = lyang
node.session.auth.passwd = 218909
discovery.sendtargets.auth.username = lyang
discovery.sendtargets.auth.password = 218909
[root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p IP:port 選項與參數: -m discovery :使用偵測的方式進行 iscsiadmin 指令功能; -t sendtargets :透過 iscsi 的協定,偵測後面的設備所擁有的 target 資料 -p IP:port :就是那部 iscsi 設備的 IP 與埠口,不寫埠口預設是 3260 囉! 範例:偵測 192.168.2.4 這部 iSCSI 設備的相關資料 [root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p 192.168.2.4 192.168.2.4:3260,1 iqn.2014-03.ly.Ubuntu:lyangdisk # 192.168.2.4:3260,1 :在此 IP, 埠口上面的 target 號碼,本例中為 target1 # iqn.2014-03.ly.Ubuntu:lyangdisk :就是我們的 target 名稱啊! [root@clientlinux ~]# ll -R /var/lib/iscsi/nodes/ /var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk /var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk/192.168.100.254,3260,1 # 上面的特殊字體部分,就是我們利用 iscsiadm 偵測到的 target 結果! |
現在我們知道了 target 的名稱,同時將全部偵測到的資訊統統寫入到上述 /var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk/192.168.100.254,3260,1 目錄內的 default 檔案中, 若資訊有修訂過的話,那你能夠到這個檔案內修改,也能夠透過 iscsiadm 的 update 功能處理相關參數的。
因為我們的 initiator 可能會連接多部的 target 設備,所以,我們得先要瞧瞧目前系統上面偵測到的 target 有幾部, 然後再找到我們要的那部 target 來進行登入的做業。不過,若是你想要將全部偵測到的 target 所有都登入的話, 那麼整個步驟能夠再簡化:
範例:根據前一個步驟偵測到的資料,啟動所有的 target [root@clientlinux ~]# /etc/init.d/open-iscsi restart 正在中止 iscsi: [ 確定 ] 正在啟動 iscsi: [ 確定 ] # 將系統裡面所有的 target 統統以 /var/lib/iscs/nodes/ 內的設定登入 # 上面的特殊字體比較須要注意啦!你只要作到這裡便可,底下的瞧瞧就好。 範例:顯示出目前系統上面全部的 target 資料: [root@clientlinux ~]# iscsiadm -m node 192.168.100.254:3260,1 iqn.2014-03.ly.Ubuntu:lyangdisk 選項與參數: -m node:找出目前本機上面全部偵測到的 target 資訊,可能並未登入喔 範例:僅登入某部 target ,不要從新啟動 iscsi 服務 [root@clientlinux ~]# iscsiadm -m node -T target名稱 --login 選項與參數: -T target名稱:僅使用後面接的那部 target ,target 名稱可用上個指令查到! --login :就是登入啊! [root@clientlinux ~]# fdisk -l |
惟一要注意的,就是 iSCSI target 每次都要比 iSCSI initiator 這部主機還要早開機,否則我們的 initiator 恐怕就會出問題。
iscsiadm -m node -l(Ubuntu用上述登陸命令出錯,用此命令正常)
若是你的 iSCSI target 可能因為某些緣由被拿走了,或者是已經不存在於你的區網中,或者是要送修了~ 這個時候你的 iSCSI initiator 總是得要關閉吧!可是,又不能所有關掉 (/etc/init.d/iscsi stop), 因為還有其餘的 iSCSI target 在使用。這個時候該如何取消不要的 target 呢?很簡單!流程以下:
[root@clientlinux ~]# iscsiadm -m node -T targetname --logout [root@clientlinux ~]# iscsiadm -m node -o [delete|new|update] -T targetname 選項與參數: --logout :就是登出 target,可是並沒有刪除 /var/lib/iscsi/nodes/ 內的資料 -o delete:刪除後面接的那部 target 連結資訊 (/var/lib/iscsi/nodes/*) -o update:更新相關的資訊 -o new :增長一個新的 target 資訊。 範例:關閉來自鳥哥的 iSCSI target 的資料,並且移除連結 [root@clientlinux ~]# iscsiadm -m node <==還是先秀出相關的 target iqn 名稱 192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk [root@clientlinux ~]# iscsiadm -m node -T iqn.2011-08.vbird.centos:vbirddisk \ > --logout Logging out of session [sid: 1, target: iqn.2011-08.vbird.centos:vbirddisk, portal: 192.168.100.254,3260] Logout of [sid: 1, target: iqn.2011-08.vbird.centos:vbirddisk, portal: 192.168.100.254,3260] successful. # 這個時候的 target 連結還是存在的,雖然登出你還是看的到! [root@clientlinux ~]# iscsiadm -m node -o delete \ > -T iqn.2011-08.vbird.centos:vbirddisk [root@clientlinux ~]# iscsiadm -m node iscsiadm: no records found! <==嘿嘿!不存在這個 target 了~ [root@clientlinux ~]# /etc/init.d/iscsi restart # 你會發現唔!怎麼 target 的資訊不見了!這樣瞭了乎! |