基於ip san的iscsi操作實現過程

來源:互聯網
上載者:User

    SAN是storage area network(存放區域網路)的簡寫,早期的san採用的是光纖通道技術,後期當iscsi協議出現以後,為了區分兩者,就劃分了IP SAN和FC SAN。FC SAN由於其昂貴的價格讓許多企業退避三舍,IP SAN作為一個很好的代替產品出現在了人們的視線中。現在大部分存放裝置提供支援基於TOE技術的介面,可以在硬體基礎上處理TCP/IP協議。這意味著ISCSI裝置可以處理速度已接近GigE、約100MB/秒的資料轉送速率來處理I/O進程,其速率可與FC SAN的相比

    IP SAN的操作流程大體如下:
    initiator作為伺服器端去使用遠程target上的一個lun(邏輯單元編號),一個target即一個主機,一個主機上可以共用多個硬碟給initiator使用,我們把每一個硬碟叫做一個lun。為了使用iscsi協議,initiator上要封裝scsi driven,iscsi driven和tcp/ip的報文通過網路發送給target上,target以此扯掉這些報文,發現對方發送的scsi協議,進而交給本地的硬碟驅動處理。所以target上不用必須裝scsi的硬碟,像傳統的sata盤都可以在這個架構中使用。從使用者的角度來看,就像在使用本地的用戶端一樣,方便簡單。

    這裡我們來完成一個IP SAN的實驗:
   192.168.1.121做我們的initator
   192.168.1.122做我們的target,並且提供1塊10G的IDE硬碟和10G的SCSI硬碟輸出。(當然也可以建立一個分區輸出,但是不建議這樣做)
    
    第一塊硬碟:
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

    第二塊硬碟:
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

    192.168.1.122的操作流程如下:
    # yum install scsi-target-utils
    # rpm -ql scsi-target-utils(可以查看一些包資訊)
    # service tgtd restart
    # chkconfig tgtd on
    # tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2014-05.com.qiguo.node:target1
    解釋:--lld指定driven,--mode指定模式,--op指定模式操作,--tid指定target_id,--targetname指定target的名稱,這裡使用iqn的命名方式,這裡就是新增了一個target,並且target_id為1,target的名稱為iqn.2014-05.com.qiguo.node:target1
    # tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sda
    解釋:這裡就是在target_id為1的上面增加了一個lun,其值為1,後端的存放裝置為/dev/sda,一個target上最多儲存32個lun
    # tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 2 --backing-store /dev/sdc
    # tgtadm --lld iscsi --mode target --op show
    解釋:可以查看當前的target資訊和lun資訊
    # tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 192.168.1.121
    解釋:target_id為1的允許IP為192.168.1.121的這台主機訪問
   
    192.168.1.121的操作流程如下:
    # yum install iscsi-initiator-utils
    # echo "InitiatorName=`iscsi-iname -p iqn.2013-05.com.qiguo.initiator1`" > initiatorname.iscsi  #產生initiator的名稱
    # iscsiadm -m discovery -t st -p 192.168.1.122:3260   #使用的時候會自動啟動iscsid進程。意思為在192.168.1.122的3260連接埠以sendtargets的類型尋找iscsi target裝置
    顯示內容如下:192.168.1.122:3260,1 iqn.2014-05.com.qiguo.node:target1 
    # iscsiadm -m node -d 2 -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -l #-d顯示debug的層級,-T指定遠程主機的targetName,-l選擇登陸到遠程主機
    # fdisk -l

    如果看到兩個新的硬碟,證明登陸成功,就可以對其進行分區了。

    當用戶端不想使用這個iscsi裝置的時候,使用iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -u即可。但是這隻是在當前有效,當重啟以後,只要伺服器端繼續在共用這個裝置,用戶端仍然會看到這個裝置。這時需要刪除資料庫的資訊。使用iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -o delete就可以把/var/lib/iscsi/sent_targets中的發現裝置資訊刪除。當再次重新啟動的時候就不會有這個裝置資訊了。
 
    當伺服器端不想給某台主機共用iscsi裝置的時候,可以使用tgtadm --lld iscsi --mode target --op unbind --tid 1 --initiator-address 192.168.1.121;如果不想提供某個lun的時候可以使用tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 2;如果不想提供target的時候可以使用tgtadm --lld iscsi --mode target --op delete --tid 1。

    iscsi不僅僅可以使用基於ip的認證,還可以做使用使用者的認證,其認證用的是CHAP(Challenge Handshake Authentication Protocol)挑戰試握手認證協議。iscsi預設支援兩種層級的CHAP認證。基於initiator的認證和基於target的認證。基於initiator的認證就是當initiator串連target的時候,initiator需要提供一個帳號和密碼供target進行認證,這種帳號叫做incoming帳號;基於target的認證就是當initiator串連target的時候,target需要提供一個帳號和密碼供initiator進行認證,這種帳號叫做outcoming帳號。initiator認證可以單獨使用,而target認證需要同時使用initiator認證。下面再來配置一個雙向認證的過程,主機仍然是上面的主機。

    在target上面的操作如下:
    # tgtadm --lld iscsi --mode account --op new --user qiguo --pass qiguo 建立一個incoming帳號
    # tgtadm --lld iscsi --mode account --op new --user qiguoin --pass qiguoin 建立一個outcomming帳號
    # tgtadm --lld iscsi --mode account --op bind --tid 1 --user qiguo 
    # tgtadm --lld iscsi --mode account --op bind --tid 1 --user qiguoin --outgoing
    
    在initiator上面的操作如下:
    編輯設定檔/etc/iscsi/iscsid.conf,修改如下幾項
    node.session.auth.authmethod = CHAP
    node.session.auth.username = qiguo
    node.session.auth.password = qiguo
    node.session.auth.username_in = qiguoin
    node.session.auth.password_in = qiguoin
    # iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -u 
    # iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -o delete
    # rm -rf /var/lib/iscsi/send_targets/
    # iscsiadm -m discovery -t st -p 192.168.1.122:3260
    # iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -l
    基於CHAP的雙向認證過程,需要做到以下幾點:
    1.CHAP不支援discovery的發現認證,所以在發現的時候需要借用到ip的認證
    2.修改設定檔iscsid.conf以後,需要刪除以前的發現資訊,要保證/var/lib/iscsi/目錄中的send_targets,nodes,ifaces目錄下沒有任何內容
    3.要保證incoming和outcoming的帳號必須保持一值,否則會登陸不了

    最後還要說明一點,當伺服器端重啟以後,伺服器端上的target和lun就會不見,要想讓其有效,需要使用設定檔/etc/tgt/targets.conf,使用上面介紹的雙向認證的設定檔為:
    <target iqn.2014-05.com.qiguo.node:target1>
    backing-store /dev/sda
    backing-store /dev/sdc
    initiator-address 192.168.1.121
    incominguser qiguo qiguo
    outgoinguser qiguoin qiguoin
    </target>
    這下重新啟動以後,只要tgtd服務啟動,就會自動儲存這些配置資訊了 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.