iSCSI網絡磁盤共享
ISCSI(Internet Small Computer System Interface,Internet 小型計算機系統接口)是一種由IBM公司研究開發的IP SAN技術,它是通過 TCP/IP 網絡傳輸 SCSI 指令的協議,讓 SCSI 命令通過網絡傳送到遠程 SCSI 設備上,而 SCSI 協議只能訪問本地的 SCSI 設備。
iSCSI 使用客戶/服務器模型。客戶端稱為 initiator,服務器端稱為 target。
iSCSI 是傳輸層之上的協議,使用 TCP 連接建立會話。在 initiator 端的 TCP 端口號隨機選取, target 的端口號默認是 3260。
- Initiator:通常指用戶主機系統,用戶產生 SCSI 請求,並將 SCSI 命令和數據封裝到 TCP/IP 包中發送到 IP 網絡中。
- Target:通常存在於存儲設備上,用於轉換 TCP/IP 包中的 SCSI 命令和數據。
這裏選用的SCSI target的架構是SCST
SCST簡介
SCST是Generic SCST Target Subsystem forLinux的簡稱,意為Linux通用SCSI目標子系統,是Linux SCSI目標子系統的一種實現。它為SCST Target Driver和Linux內核之間提供了一個統一的接口,同時提供Linux內核與存儲後端的句柄連接,連接真實或模擬的存儲後端與目標驅動程序。
SCST由三部分構成:scst、iscsi-scst和scstadmin
1. SCST
SCST在Linux內核層和SCSI目標驅動層之間提供統一的、持久的接口,它盡可能地簡化了目標驅動的開發。SCST支持如下5種I/O模式:
(1).pass-through:此模式下,initiators的SCSI命令將不被修改地直接傳給Target端的SCSI硬件。 (2).fileio:默認情況下SCST的導出模式是fileio,它允許使用文件系統上的文件或者塊設備作為虛擬的SCSI設備或光驅。Fileio模式可以充分利用Linux的cache。NV_CACHE是fileio的一種模式,它可以提供最好的性能。 (3).blockio:繞開系統的page-cache(頁面緩存)直接bio。該模式適用於後端存儲設備比較高端或者不需要caching的應用或者需要大量塊級吞吐的環境。 (4).user space:在SCST環境中使用用戶空間的虛擬SCSI設備模擬執行。 (5).performance:不與底層的SCSI設備發生實際的數據傳輸,只提供直接的性能改進措施。
2.iSCSI-SCST
目標驅動,與設備驅動程序一起工作。主要負責接收主機命令,維護目標端和啟動段的傳輸通道,並根據命令處理狀態向主機返回信息。在Initiator看來,Target就是一個專屬的SCSI Host,將用戶分配的LUN或DISK映射成為遠程可訪問的虛擬設備。
目前為止SCST支持的Target驅動包括:iSCSI-SCST、FC Target、FCoE Target、SAS、InfiniBand和並行的SCSI設備。
3. scstadmin
scstadmin是SCST的配置和管理腳本,它可以接受命令行輸入或者直接讀取SCST的配置文件(/etc/scst.conf)來管理scst。
環境準備:
節點 | 系統 | IP |
---|---|---|
target | CentOS7.2 | 192.168.26.200 |
initiator1 | Windows 7 | 192.168.26.128 |
initiator2 | CentOS7.2 | 192.168.26.201 |
安裝步驟如下:
一、target安裝SCST服務:
1.配置前關閉所有主機的防火墻和安全性策略
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.下載源代碼包( http://scst.sourceforge.net/downloads.html )
svn checkout svn://svn.code.sf.net/p/scst/svn/trunk scst-trunk
3.保證代碼包編譯不出錯,應該預先安裝一些包
yum install gcc perl-ExtUtils-MakeMaker perl-Data-Dumper -y
rpm -ivh kernel-devel-3.10.0-514.el7.x86_64.rpm
這裏的kernel-devel的版本要與系統的kernel版本對應,uname -r
4.共享磁盤
mkdir /mnt/vd1
mkdir /mnt/vd2
mount /dev/sdb1 /mnt/vd1
mount /dev/sdc1 /mnt/vd2
chmod -R 777 /mnt/*
5.安裝SCST服務
cd scst-trunk
make help #根據所需的包進行編譯
#編譯安裝scst
make scst
make scst_install
#編譯安裝iscsi
make iscsi
make iscsi_install
#安裝scstadm
make scstadm_install
6.配置
cp scst-trunk/iscsi-scst/etc/scst.conf /etc/
vi /etc/scst.conf
HANDLER vdisk_fileio {
DEVICE disk01 {
filename /dev/sdb1 #磁盤1
nv_cache 1
}
DEVICE disk02 {
filename /dev/sdc1 #磁盤2
nv_cache 1
}
}
TARGET_DRIVER iscsi {
enabled 1
TARGET iqn.2006-10.net.vlnb:tgt {
LUN 0 disk01
LUN 1 disk02
enabled 1
}
}
7.啟動SCST服務
chkconfig scst on
systemctl start scst.service
8.查看scst組件
lsmod |grep scst
Initiator端發起服務
Windows:
控制面板—->管理工具—->iSCSI發起程序
在目標中填入安裝scst主機的ip ,快速連接
打開磁盤管理可以看到2塊共享磁盤
Linux:
1.用lsblk命令查看磁盤的狀況
2.安裝並啟動iscsi
yum install -y iscsi-initiator-utils
systemctl start iscsi
chkconfig iscsi on
3.發現target目標
iscsiadm -m discovery -t sendtargets -p 192.168.26.200:3260
4.登錄發現的目標節點
iscsiadm -m node -T iqn.2006-10.net.vlnb:tgt -p 192.168.26.200:3260 -l
5.再次用lsblk命令查看磁盤狀況
iSCSI網絡磁盤共享