一、前言
前段時間我同事玩GlusterFS,下午總算有點時間了,也玩玩,GlusterFS是一個開源的分佈式文件系統,於2011年被紅帽收購.它具有高擴展性、高性能、高可用性、可橫向擴展的彈性特點,無元數據服務器設計使glusterfs沒有單點故障隱患,詳細介紹請查看官網:www.gluster.org 。
二、環境
1、系統:
1 | Centos 6.4 |
2、部署說明
1 2 3 4 5 6 7 | 服務端: 172.28.26.101 172.28.26.102 172.28.26.188 172.28.26.189 客戶端: 172.28.26.103 |
三、部署
1、服務端安裝:
1 2 3 | yum -y install glusterfs glusterfs-server chkconfig glusterd on service glusterd start |
2、服務端配置:
將4個存儲節點組成一集羣,本文在第一個節點執行,只需要在任意節點執行就OK。
1 2 3 4 5 6 | [root@db1 ~] # gluster peer probe 172.28.26.102 Probe successful [root@db1 ~] # gluster peer probe 172.28.26.188 Probe successful [root@db1 ~] # gluster peer probe 172.28.26.189 Probe successful |
查看集羣的節點信息:
1 2 3 4 5 6 7 8 9 10 11 | [root@db1 ~] # gluster peer status Number of Peers: 3 Hostname: 172.28.26.102 Uuid: b9437089-b2a1-4848-af2a-395f702adce8 State: Peer in Cluster (Connected) Hostname: 172.28.26.188 Uuid: ce51e66f-7509-4995-9531-4c1a7dbc2893 State: Peer in Cluster (Connected) Hostname: 172.28.26.189 Uuid: 66d7fd67-e667-4f9b-a456-4f37bcecab29 State: Peer in Cluster (Connected) |
以/data/gluster爲共享目錄,創建名爲img的卷,副本數爲2:
1 2 3 | mkdir /data/gluster [root@db1 ~] # gluster volume create img replica 2 172.28.26.101:/data/gluster 172.28.26.102:/data/gluster 172.28.26.188:/data/gluster 172.28.26.189:/data/gluster Creation of volume img has been successful. Please start the volume to access data. |
啓動卷:
1 2 | [root@db1 ~] # gluster volume start img Starting volume img has been successful |
查看卷狀態:
1 2 3 4 5 6 7 8 9 10 11 | [root@db1 ~] # gluster volume info Volume Name: img Type: Distributed-Replicate Status: Started Number of Bricks: 2 x 2 = 4 Transport- type : tcp Bricks: Brick1: 172.28.26.101: /data/gluster Brick2: 172.28.26.102: /data/gluster Brick3: 172.28.26.188: /data/gluster Brick4: 172.28.26.189: /data/gluster |
3、客戶端安裝配置:
安裝:
1 | yum -y installglusterfs glusterfs-fuse |
掛載:
1 2 3 | mount -t glusterfs 172.28.26.102: /img /mnt/ (掛載任意一個節點即可) mount -t nfs -o mountproto=tcp,vers=3 172.28.26.102: /img /log/mnt/ (使用NFS掛載,注意遠端的rpcbind服務必須開啓) echo "172.28.26.102:/img /mnt/ glusterfs defaults,_netdev 0 0" >> /etc/fstab (開機自動掛載) |
四、測試
1、檢查文件正確性
1 2 3 4 | dd if = /dev/urandom of= /data/navy bs=1M count=100 # 在掛載客戶端生成測試文件 cp /data/navy /mnt/ # 文件拷貝到存儲上 md5sum /data/navy /mnt/navy # 在查看客戶端檢查文件哈希 md5sum /data/gluster/navy # 存儲集羣的某2個節點上會有此文件,檢查其哈希 |
2、宕機測試。使用glusterfs-fuse掛載,即使目標服務器故障,也完全不影響使用。用NFS則要注意掛載選項,否則服務端故障容易導致文件系統halt住而影響服務!
1 2 3 | # 將其中一個節點停止存儲服務service glusterd stop service glusterfsd stop # 在掛載客戶端刪除測試文件 rm -fv /mnt/navy # 此時在服務端查看,服務被停止的節點上navy並未被刪除。此時啓動服務:service glusterd start# 數秒後,navy就被自動刪除了。新增文件效果相同! |
五、運維常用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 刪除卷 gluster volume stop img gluster volume delete img 將機器移出集羣 gluster peer detach 172.28.26.102 只允許172.28.0.0的網絡訪問glusterfs gluster volume set img auth.allow 172.28.26.* 加入新的機器並添加到卷裏(由於副本數設置爲2,至少要添加2(4、6、8..)臺機器) gluster peer probe 172.28.26.105 gluster peer probe 172.28.26.106 gluster volume add-brick img 172.28.26.105: /data/gluster 172.28.26.106: /data/gluster 收縮卷 # 收縮卷前gluster需要先移動數據到其他位置 gluster volume remove-brick img 172.28.26.101: /data/gluster/img 172.28.26.102: /data/gluster/img start # 查看遷移狀態 gluster volume remove-brick img 172.28.26.101: /data/gluster/img 172.28.26.102: /data/gluster/img status # 遷移完成後提交 gluster volume remove-brick img 172.28.26.101: /data/gluster/img 172.28.26.102: /data/gluster/img commit 遷移卷 # 將172.28.26.101的數據遷移到,先將172.28.26.107加入集羣 gluster peer probe 172.28.26.107 gluster volume replace-brick img 172.28.26.101: /data/gluster/img 172.28.26.107: /data/gluster/img start # 查看遷移狀態gluster volume replace-brick img 172.28.26.101:/data/gluster/img 172.28.26.107:/data/gluster/img status # 數據遷移完畢後提交gluster volume replace-brick img 172.28.26.101:/data/gluster/img 172.28.26.107:/data/gluster/img commit # 如果機器172.28.26.101出現故障已經不能運行,執行強制提交然後要求gluster馬上執行一次同步 gluster volume replace-brick img 172.28.26.101: /data/gluster/img 172.28.26.102: /data/gluster/img commit -force gluster volume heal imgs full |
本文出自 “屌絲運維男” 博客,請務必保留此出處http://navyaijm.blog.51cto.com/4647068/1258250