1. 程式人生 > >客戶端通過iscsi使用glusterfs

客戶端通過iscsi使用glusterfs

http://www.tuicool.com/articles/RNnyYb

http://www.cnblogs.com/mchina/p/centos-iscsi-network-storage.html

CentOS 6.3下配置iSCSI網路儲存

http://dngood.blog.51cto.com/446195/842658/

iscsi Target (TGT)

最近一直在調研如何將基於glusterfs檔案系統建立的檔案,利用iscsi協議掛載到區域網內的物理機上,終於有了一點收穫,總結一下。首先介紹一下iscsi協議。

1 iscsi

1.1  iscsi 簡介

iSCSI利用了TCP/IP的port 860 和 3260 作為溝通的渠道。透過兩部計算機之間利用iSCSI的協議來交換 

SCSI 命令,讓計算機可以透過高速的區域網集線來把儲存區域網(SAN)模擬成為本地的儲存裝置。

1.2 iscsi用途

使用iSCSI SAN 的目的通常有以下兩個:

儲存整合  公司希望將不同的儲存資源從分散在網路上的伺服器移動到統一的位置(常常是資料中心); 這可以讓儲存的分配變得更為有效。 SAN 環境中的伺服器無需任何更改硬體或電纜連線就可以得到新分配的磁碟卷。

災難恢復  公司希望把儲存資源從一個數據中心映象到另一個遠端的資料中心上,後者在出現長時間停電的情況下可以用作熱備份。 特別是,iSCSI SAN 使我們只需要用最小的配置更改就可以在 WAN 上面遷移整個磁碟陣列,實質上就是,把儲存變成了“可路由的”,就像普通的網路通訊一樣。

1.3 iscsi協議

如圖1所示,iscsi分為target和initiator兩部分。它利用TCP/IP技術,將儲存裝置端通過iscsi target功能,做成可以提供磁碟的伺服器端;通過iscsi initiator功能,做成能夠掛載使用iscsi target的使用者端。

iscsi協議棧

2 glusterfs+iscsi解決方案

iscsi target可以是一個檔案,也可以是一塊磁碟或者一個分割槽。如果普通檔案可以作為target, gluster volume中建立的檔案是不是也可以作為target來被掛載呢?帶著這個疑問,我做了如下嘗試,如圖2所示。

首先部署gluster,建立卷cinder-volume並啟動,將該卷 mount到提供target的伺服器的某個目錄下。利用truncate命令在該卷下建立一個檔案,然後以iscsi方式暴露target。最後物理機安裝iscsi initiator,登入到target。

iscsi協議掛載glusterfs檔案流程圖

實驗結果證明是可以的,接下來我一步步詳細說明。

2.1  gluster

2.1.1 部署gluster

關於gluster部署,網上有很多資料,在此不再贅述。具體可以參考如下連線:

http://blog.csdn.net/dysj4099/article/details/17099161

http://navyaijm.blog.51cto.com/4647068/1258250

2.1.2 建立volumes

假設gluster peer為192.168.64.229 和 192.168.64.239, 在任意一臺機器上執行(例子為229)

[email protected]:~#   gluster volume create cinder-volume replica 2 192.168.64.229:/data/gluster/ 192.168.64.239:/data/gluster/

[email protected]:~#   gluster volume start cinder-volume

[email protected]:~#   gluster volume info

2.1.3 mount

假設提供target的伺服器ip地址為 192.168.64.219 ,則在改機器上執行以下命令:

[email protected]:~# mkdir –p /opt/cinder-volume

[email protected]:~# mount –t glusterfs 192.168.64.229:cinder-volume /opt/cinder-volume

這時,glusterfs上的卷cinder-volume 成功mount到提供target的伺服器的/opt/cinder-volume資料夾下

2.1.4 建立資料夾

在提供target 的伺服器上(192.168.64.219) 執行以下操作:

[email protected]:~# cd /opt/cinder-volume

[email protected]:~# truncate –s 2G iscsi_target

進入該資料夾,利用truncate命令(dd也可以,但是建立大檔案會非常慢)建立一個大小為2G的檔案“iscsi_target”,作為iscsi的 target。

接下來,用iscsi協議將該檔案“iscsi_target”暴露出來,供使用者掛載使用。

2.2暴露target

管理Iscsi target的工具有兩種: iet 和 tgt 。兩種方式會同時搶佔3260埠,所以大家在使用iscsi時,一定要注意該埠是被誰佔用了,因為兩種方式所用的配置檔案和啟動指令碼均不同。本文利用tgt進行詳細說明。

iet:配置檔案(/etc/iet/ietd.conf)啟動(/etc/init.d/iscsitarget start)

tgt: 配置檔案(/etc/tgt/targets.conf)啟動(/etc/init.d/tgtd start)

在提供target 的伺服器上(192.168.64.219) 執行以下操作:

[email protected]:~# apt-get install tgt

[email protected]:~#  /etc/init.d/tgtd start

[email protected]:~# vi /etc/tgt/ targets.conf

<target iqn.2010-10.org.openstack:iscsi-target >

    backing-store /opt/cinder-volume/iscsi_target

    incominguser judy 123456

    write-cache off

</target>

[email protected]:~# tgt-admin –update iqn.2010-10.org.openstack:iscsi-target

新增target需要在/etc/init.d/targets.conf新增相應XML。其中target後接target name(可自己定義),backing-store 表示該target 的實際位置,incominguser 表示使用者端登入該target時需要提供的驗證資訊,write-cache 表示再寫入target時是否啟用寫cache。關於targets.conf檔案的配置,/usr/share/doc/tgt/examples/ targets.conf.example.gz 裡面有詳細的介紹。

新增完target後,一定要執行最後一條命令,否則使用者端無法發現該target。

2.3連線target

Target暴露之後,我們要在使用者端檢視(假設使用者端ip地址為192.168.64.209),是否能夠發現該target。

在使用者端(192.168.64.209 )執行如下操作:

[email protected]:~# apt-get install open-iscis

[email protected]:~# iscsiadm –m discovery –t st –p 192.168.64.219

192.168.64.219:3260,1 iqn.2010-10.org.openstack:iscsi-target

[email protected]:~# iscsiadm –m node –T iqn.2010-10.org.openstack:iscsi-target –p 192.168.64.219:3260–login

 

此時無法登陸,因為該target( iqn.2010-10.org.openstack:iscsi-target ) 設定了登陸許可權,必須要執行如下操作,設定登入的使用者名稱和密碼才能登入。

[email protected]:~# iscsiadm –m node –T iqn.2010-10.org.openstack:iscsi-target –p 192.168.64.219:3260 –o update –name=node.session.auth.authmethod=CHAP

[email protected]:~# iscsiadm –m node –T iqn.2010-10.org.openstack:iscsi-target –p 192.168.64.219:3260 –o update –name=node.session.auth.username= judy

[email protected]:~# iscsiadm –m node –T iqn.2010-10.org.openstack:iscsi-target –p 192.168.64.219:3260 –o update –name=node.session.auth.password= 123456

最後執行登入操作即可

[email protected]:~# iscsiadm –m node –T iqn.2010-10.org.openstack:iscsi-target –p 192.168.64.219:3260–login

Logging in to [iface: default, target: iqn.2010-10.org.openstack:iscsi-target, portal: 192.168.99.54,3260]

Login to [iface: default, target: iqn.2010-10.org.openstack:iscsi-target, portal: 192.168.99.54,3260]: successful

登入成功後,就能查到相應磁碟,可以分割槽格式化,mount到本地一個目錄就可以使用啦!

[email protected]:~# fdisk –l

[email protected]:~# mkfs.ext4 /dev/sdb

[email protected]:~# mkdir –p iscsi_device

[email protected]:~# mount /dev/sdb iscsi_device

2.4問題

在調研過程中遇到了一些問題,供大家參考

  1. 使用者A,B同時登入到target,由於cache的緣故,A所做修改,B不能實時重新整理。必須在A上執行sync,將資料寫入磁碟;在B上,umount,再mount才能生效
  2. 查閱資料,如果想做成共享target,必須用分散式檔案系統,如GFS

出處:https://blog.csdn.net/youngstonep/article/details/49907191