glusterfs mount rdma failed

問題描述

集羣有兩個io節點,各掛載一塊盤(於/data),將兩者放入一個存儲池(在io1執行):shell

gluster peer probe io2

在其上創建卷(在兩個io節點的/data目錄下個創建一個share文件夾),指定傳輸方式爲rdma(遠程直接內存訪問Remote Direct Memory Access):測試

gluster volume create share transport rdma io1:/data/share io2:/data/share
gluster volume start share    #啓用該卷

了客戶端掛載捲到指定目錄(這裏時/share):搜索引擎

mount -t glusterfs -o transport=rdma io1:/share /share

執行後,提示Mount failed. Please check the log file for more details日誌

解決

借問搜索引擎,有相似狀況,未能找到解決方案。code

在客戶端上檢查日誌/var/log/glusterfs/share.log發現掛載時鏈接io1存在問題,有相似語句:Transport endpoint is not connected,也就是鏈接在問題,不過在客戶端上ping測試io1節點上的IB卡的地址卻正常,使用默認傳輸方式(TCP)創建的卷能正常掛載。server

其實緣由很簡單,屬於疏忽級問題:
該集羣中各個節點的/etc/hosts文件中僅添加了ip和hostname對應的解析,以本文爲例,主機名io1實際上是對應的該節點上某個以太網卡的地址,而非「無限帶寬」(Infinband)網卡的地址。在掛載時指定傳輸類型(transport)爲rdma時,系統卻沒法經過io這個主機地址進行IB方式的傳輸。索引

所以在建立卷的時候應該使用各個io節點的IB地址(IPoIB)(或者在hosts文件中爲IB地址單首創建解析,如io1上命名爲ib.io1),掛載卷的時候也如此。
刪除先前的卷ip

gluster volume stop share
gluster volume delete share

從新建立卷內存

gluster volume create share transport rdma ib.io1:/data/share ib.io2:/data/share
gluster volume start share    #啓用該卷

提示,從新建立的卷和先前建立的卷同名(即便該卷已經刪除過),可能會提示相似:volume create: share: failed: parent directory /data is already part of a volume,這種狀況可按如下方法解決:io

setfattr -x trusted.glusterfs.volume-id /data/share  #這裏/data/share換成你實際的路徑
setfattr -x trusted.gfid /data/share   #同上 可能會提示not attributes 無妨
rm /data/share/.glusterfs -rf

而後從新建立卷。
若是還遇到問題,能夠直接刪除/var/lib/glusterd文件夾,卸載glusterfs-server,刪掉卷文件夾(本文中是/data/share),而後重裝來過。

客戶端掛載

mount -t glusterfs -o transport=rdma ib.io1:/share /share

若是要自動掛載,在/etc/fstab添加:

ib.io1:/share.rdma /share glusterfs default 0 0

一切順利。

相關文章
相關標籤/搜索