iscsi
iSCSI的協議自頂向下分爲三層
SCSI層:根據客戶端發出的請求建立SCSI CDB--命令描述,並傳給iSCSI層。同時接收來自iscsi層的CDB,並嚮應用返回數據
iSCSI層:對SCSI CDB進行封裝,便於能夠在基於TCP/IP協議的網絡上進行傳輸,完成SCSI到tcp/ip的協議映射。這一層是iscsi協議的核心層。
TCP/IP層:對ip報文進行路由和轉發,並且提供端到端的透明可靠的傳輸。
iscsi協議定義了在tcp/ip網絡發送,接收數據塊存儲數據的規則和方式。發送端封裝scsi命令和數據到TCP/IP包,然後通過ip網絡轉發,接收到tcp/ip包後將其還原爲scsi命令和數據並執行,執行完成後將返回的scsi命令和數據在封裝到tcp/ip包中,返回給發送端。
iSCSI Initiator是一個安裝在計算機上的軟件或硬件設備,其負責與iSCSI存儲設備進行通信。
iSCSI服務器與iSCSI存儲設備之間的連接方式有兩種:軟件方式iSCSI Initiator軟件,在iSCSI服務器上安裝Initiator後,其可以將以太網卡虛擬爲iSCSI卡,可以接收和發送iSCSI數據報文,從而實現主機和iSCSI存儲設備之間的iSCSI協議和TCP/IP協議傳輸功能。但是iSCSI報文和TCP/IP報文轉換需要消耗iSCSI服務器的一部分CPU資源。第二種就是硬件iSCSI HBA卡
Linux上配置iSCSI Initiator
啓動iscsi
iscsi initiator的目錄及其部分說明
/sbin/iscsiadm;用來管理(更新、刪除、插入、查詢)iSCSI配置數據庫文件的命令行工具,能夠對iSCSI nodes、sessions、connections、discovery records進行操作
/var/lib/iscsi/send_targets;此目錄下回生成iSCSI存儲服務器的ip地址和端口號命名的文件夾
/var/lib/iscsi/nodes;此目錄下生成iSCSI存儲服務器上的target命名的文件夾,還有一個文件名iSCSI port ip,端口號的配置文件,此文件是iSCSI Initiator登錄iSCSI Target時需要的參數,此參數從/etc/iscsi/iscsi.conf文件中繼承過來
執行iSCSI Target發現
iscsiadm -m dicovery --type sendtargets --portal ip或
iscsiadm -m discovey -t sendtargets -p ip
成功執行一次Targets發現後,iSCSI Initiator就會將查詢記錄到/var/lib/iscsi/send_targets對應的目錄下面。
iscsiadm指令與iSCSI Target主機建立連接,登錄到iSCSI Target
iscsiadm -m node -T <target-name> -p ip --login
當Target主機多時,通過--login=all登錄所有主機
說明:執行Target發現操作時,已經與iSCSI Target主機建立了連接。斷開iSCSI Target與Initiator的連接命令如下
iscsiadm -m node -T <target-name> -p ip -u
查看iSCSI session信息
iscsiadmin -m session -i
iSCSI在安全方面的設定
iSCSI在授權訪問和安全管理方面可以以主機爲基礎來設定允許和拒絕;也可以通過賬號密碼設定允許和拒絕。
Initiaror主機以ip認證方式獲取iSCSI Target資源:
iSCSI Target是一個可以用於存儲數據的iSCSI磁盤陣列或者具有iSCSI功能的設備都可以成爲Target,其主配置文件是/etc/iet/ietd.conf
在iSCSI Target服務器上修改/etc/iet/ietd.conf定義Target,併爲Target添加對應的分區,然後修改/etc/iet/initiator.allow文件,此文件件定義Initiator主機對Target服務器的訪問規則類似於/etc/hosts.allow
Initiaror主機以密碼認證方式獲取iSCSI Target資源:
iscsi Target以賬號密碼方式認證分兩個階段:
一是discovery查詢認證所使用的賬號密碼
二是登錄Target使用的賬號密碼
需要在Initiator主機和iscsi Target主機上進行配置
1、iscsi Target配置
vim /etc/iet/initiator.allow開啓權限
vim /etc/iet/ietd.conf
2、Initiator主機配置
vim /etc/iscsi/iscsid.conf
node.session.auth.authmethod=CHAP
node.session.auth.username=login_username
node.session.auth.password = secret
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = discovery.auth
discovery.sendtargets.auth.password = discoverysecret
iSCSI優化
由於iSCSI協議建立在TCP/IP協議上,進行數據傳輸時,其性能受限於TCP/IP協議棧負載和以太網最大帶寬。在應用中iSCSI數據傳輸性能存在瓶頸。一次完整的數據發送過程;數據封裝--->數據拷貝--->數據傳輸。