您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何通過Ceph-RBD和ISCSI-target實現硬盤共享,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
1 問題提出
現在要求把機房的設備存儲都利用起來,建立一個存儲池,能滿足用多少創建多少而且能夠跨平臺掛載創建的硬盤。目前,驗室的機房目前已經建立起來了CEPH的集群,存儲池達到了257TB,于是設想創建一個RBD(RADOS block device),然后通過ISCSI-target把創建的RBD導出來用于客戶端的掛載。
2 可行性分析
上述的問題的實現主要是兩部分,一部分是創建RBD,另一部分是通過安裝ISCSI-target把RBD導出,用于Ceph集群外主機掛載。目前的實驗環境已經可以成功的創建RBD用于Ceph集群內的裝有RBD客戶端的主機掛載,剩下的就是第二部分的實現。由于Ceph已經支持通過iscsi協議來使用rbd,所以在理論上是可行的。
3 實現過程
3.1 環境說明
實驗平臺:ubuntu14.04 server,內核:3.13.0-32-generic
Ceph版本:version 0.94.2
服務端 ISCSI-target采用Linux SCSI target framework (tgt)(http://stgt.sourceforge.net/)
服務端IP:172.25.1.55
3.2 創建RBD
在ceph-admin節點執行下面命令:
rbd create --size {megabytes} {pool-name}/{image-name}
比如創建大小為1GB,名為ceph-rbd1的RBD:
rbd create --size 1024 ceph-rbd1
未指定pool-name則默認創建到rbd池里面
查看RBD:rbd ls {poolname} 不加poolname默認查看rbd池下的RBD
查看RBD詳細信息:
rbd info {pool-name}/{image-name}
比如查看ceph-rbd1:rbd info ceph-rbd1 不加pool-name默認rbd池
3.3 映射RBD
創建好的RBD需要映射到客戶機才能使用,客戶機需要內核支持Ceph塊設備和文件系統,推薦內核2.6.34或更高版本。
檢查Linux版本和對RBD的支持:
modprobe rbd
Linux哲學,不返回消息就是最好的消息。所以modprobe rbd沒有返回消息說明內核對rbd支持。
在ceph-osd節點執行下面命令:
rbd map rbd/ceph-rbd1
格式是rbd map {pool-name}/{image-name} 不加{pool-name}默認rbd
查看映射后的RBD在操作系統中的設備名:
rbd showmapped
可以看到創建的RBD在操作系統的設備名是/dev/rbd1
fdisk –l /dev/rbd1#參看分區情況
如果用于本機掛載執行接下來步驟:
mkfs.xfs /dev/rbd1 #格式化RBD mkdir /mnt/ceph-vol1 #創建掛載點 mount /dev/rbd1 /mnt/ceph-vol1 #掛載RBD,可以寫入數據測試一下掛載后的RBD
不過我們的目的是Ceph集群外主機掛載RBD,所以上面的步驟了解一下即可,集群外主機掛載RBD需要用到ISCSI-target。
3.4 配置rbdmap
根據網絡文檔了解到,創建rbd塊設備并rbd map后,如果不及時rbd unmap,關機的時候系統會停留在umount此rbd設備上。所以要配置rbdmap。官方文檔無rbdmap的介紹,而且這個腳本也不是官方發布的,為避免遇到這種問題先下載并設置開機啟動rbdmap,將來再嘗試不加入這個腳本會不會出現問題。
sudo wget https://raw.github.com/ceph/ceph/a4ddf704868832e119d7949e96fe35ab1920f06a/src/init-rbdmap -O /etc/init.d/rbdmap #獲得腳本文件 sudo chmod +x /etc/init.d/rbdmap #增加執行權限 sudo update-rc.d rbdmap defaults #添加開機啟動
修改rbdmap的配置文件/etc/ceph/rbdmap將映射好的rbd添加進去,注意/etc/ceph/rbdmap路徑是wget時的當前路徑 ,我wget時是在/etc/ceph路徑下的。
vi /etc/ceph/rbdmap # RbdDevice Parameters #poolname/imagename id=client,keyring=/etc/ceph/ceph.client.keyring rbd/ceph-rbd1 id=client,keyring=/etc/ceph/ceph.client.keyring
如果使用了cephx那么,keyring=/etc/ceph/ceph.client.keyring就要加上了
3.5 配置ISCSI-target
Linux SCSI target framework (tgt)用來將 Linux 系統仿真成為 iSCSI target 的功能;安裝tgt,并檢查是否支持rbd:
apt-get install tgt tgtadm --lld iscsi --op show --mode system | grep rbd
rbd (bsoflags sync:direct)#返回這個信息表明支持rbd
文件的了解:
/etc/tgt/targets.conf:主要配置文件,設定要分享的磁盤格式與哪幾顆;
/usr/sbin/tgt-admin:在線查詢、刪除 target 等功能的設定工具;
/usr/sbin/tgt-setup-lun:建立 target 以及設定分享的磁盤與可使用的客戶端等工具軟件。
/usr/sbin/tgtadm:手動直接管理的管理員工具 (可使用配置文件取代);
/usr/sbin/tgtd:主要提供 iSCSI target 服務的主程序;
/usr/sbin/tgtimg:建置預計分享的映像文件裝置的工具 (以映像文件仿真磁盤);
SCSI 有一套自己分享 target 檔名的定義,基本上,藉由 iSCSI 分享出來的 target 檔名都是以 iqn 為開頭,意思是:『iSCSI Qualified Name (iSCSI 合格名稱)』的意思。那么在 iqn 后面要接啥檔名呢?通常是這樣的:
iqn.yyyy-mm.<reversed domain name>:identifier
單位網域名的反轉寫法 :這個分享的target名稱
比如:target iqn.2015-9.localhost:iscsi 在接下看的配置中會用到
我們主要是修改 /etc/tgt/targets.conf,把創建好的RBD信息添加進去。
vim /etc/tgt/targets.conf
# 此檔案的語法如下:
<target iqn.相關裝置的target名稱> backing-store 存儲設備名 -1 backing-store 存儲設備名 -2 </target> <target iqn.2015-9.localhost:iscsi> driver iscsi #驅動 bs-type rbd # 后端存儲類型 – 默認 rdwr, 可選 aio, 等...在這里選rbd backing-store rbd/ceph-rbd1 # <==LUN 1 (LUN 的編號通常照順序)Format is <iscsi-pool>/<iscsi-rbd-image> </target>
backing-store (虛擬的裝置), direct-store (實際的裝置): 設定裝置時,如果你的整個磁盤是全部被拿來當 iSCSI 分享之用,那么才能夠使用 direct-store 。不過,根據網絡上的其他文件, 似乎說明這個設定值有點危險的樣子。所以,基本上還是建議單純使用模擬的 backing-store 較佳。
當然,配置文件中還有其他的一些參數可以參考:/usr/share/doc/tgt/examples/targets.conf.example里面的內容。
然后重啟tgt:/etc/init.d/tgt restart
參看端口是否開啟:netstat -tlunp | grep tgt 默認3260端口
觀察一下target 相關信息,以及提供的 LUN 數據內容:
tgt-admin –show Target 1: iqn.2015-9.localhost:iscsi <==就是我們的 target System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller <==這是個控制器,并非可以用的 LUN 喔! ……省略中間…….. LUN: 1 Type: disk <==第一個 LUN (Logical Unit Number) SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 10995116 MB, Block size: 512 <==容量 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: rbd Backing store path: rbd/ceph-rbd1 <==磁盤所在的實際文件名 Backing store flags: Account information: ACL information: ALL
至此ISCSI-target就已經配置好了。
3.6 windows客戶端掛載
iSCSI initiator:就是能夠使用 target 的客戶端,通常是服務器。 也就是說,想要連接到 iSCSI target 的服務器,也必須要安裝 iSCSI initiator 的相關功能后才能夠使用 iSCSI target 提供的磁盤。
上面配置都成功的話就可以進行正常掛載,我是在windows7上面進行的掛載。windows7自帶有iSCSI initiator。
打開控制面板—》系統與安全—》管理工具 iSCSI 發起程序
點發現門戶然后填入你的服務端IP或DNS
可以看到當前的狀態是不活動的,可以點擊連接:
連接成功后相當于掛載了一個硬盤,這時我們可以在磁盤管理中進行分區和格式化等一些操作,格式化成功后可以看到磁盤已經在系統中了。
3.7 linux客戶端掛載
本次主要針對的windows客戶端掛載,成功的掛載說明服務器端是沒有問題的,如果要在linux上進行掛載,只需要安裝iSCSI initiator然后進行簡單的配置。具體的配置方法下面的參考文獻中的鳥哥文章有詳細介紹,這里只是說明其是具有可行性的,不進行實例驗證了。
注意,linux客戶端和windows客戶端都是ceph集群外的主機,集群內的不需要用到iscsi就可以進行創建掛載。
看完上述內容,你們對如何通過Ceph-RBD和ISCSI-target實現硬盤共享有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。