网络驱动器设备:iscsi服务器
1.Ubuntu11.10
2.使用背景:
做为服务器的系统通常是需要储存设备的,而储存设备除了可以使用系统内建的磁盘之外,如果内建的磁盘容量不够大, 而且也没有额外的磁盘插槽 (SATA 或 IDE) 可用时,那么常见解决的方案就是增加 NAS (网络附加储存服务器) 或外接式储存设备。再高档一点的系统,可能就会用到 SAN (储存局域网络) 。
NAS (Network Attached Storage, 网络附加储存服务器)其实就是一部设定好的主机了,只要将 NAS 连接上网络,那么在网络上面的其他主机就能够存取 NAS 上头的资料了。简单的说,NAS 就是一部 file server,由于NAS也接在网络上面,所以,如果网络上有某个用户大量存取 NAS 上的数据时,会很容易造成网络停顿,低阶的 NAS 通常会使用 Linux 系统搭配软件磁盘阵列来提供大容量文件系统。此外,NAS 也通常支持 TCP/IP ,并会提供 NFS, SAMBA, FTP 等常见的通讯协议来提供客户端取得文件系统。
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网络的储存装置互相交换资料。
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 是在 TCP/IP 上面所开发出来的一套应用,所以得要有网络才行啊!
4.server端(磁盘供给者)安装软件:tgt
5.client 端(磁盘使用者)安装软件 :open-iscsi
6.实验条件:在安装Ubuntu的时候应该规划好磁盘配额,最好留出一部分磁盘空间方便后续的利用和实验
7.开始试验:
server端
- /etc/tgt/targets.conf:主配置文件;
- /usr/sbin/tgt-admin:线上查询、删除target等功能的设定工具。
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
- 偵測 192.168.2.4 这部 target 的相关资料
[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 功能處理相關參數的。
- 開始進行連線 iSCSI target
因為我們的 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用上述登录命令出错,用此命令正常)
- 更新/刪除/新增 target 資料的方法
如果你的 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 的資訊不見了!這樣瞭了乎! |