1. 程式人生 > >GlusterFS分布式系統維護管理筆記補充

GlusterFS分布式系統維護管理筆記補充

設置 計算 自動變 peer 系統配額 行數 掛載 別名 cte

下面是在GlusterFS學習中總結的管理手冊,希望這些能夠對那些也是使用研究 GlusterFS 的人有些許的幫助。

1)管理說明

在解釋系統管理時會提供實例,首先提供一個環境說明。
系統節點:
IP            別名     Brick
192.168.2.100 server0 /mnt/sdb1  /mnt/sdc1  /mnt/sdd1
192.168.2.101 server1 /mnt/sdb1  /mnt/sdc1  /mnt/sdd1
192.168.2.102 server2 /mnt/sdb1  /mnt/sdc1  /mnt/sdd1

創建了三個節點,並每臺虛擬機 mount 三塊磁盤作為 Brick 使用,每個 brick 分配了 30G 的虛擬容量。

實例約定 
AFR 卷名:     afr_vol
DHT 卷名:     dht_vol
Stripe 卷名:  str_vol
客戶端掛載點: /mnt/gluster

2)系統部署

2.1) 在每個節點上啟動glusterd服務
[root@localhost ~]# service glusterd start

2.2) 添加節點到存儲池,在其中一個節點上操作 ,如 server0
[root@localhost ~]# gluster peer probe server1
[root@localhost ~]# gluster peer probe server2
//可以使用 gluster peer status 查看當前有多少個節點,顯示不包括該節點

2.3) 創建系統卷, 部署最常見的分布式卷,在 server0上操作
[root@localhost ~]# gluster volume create dht_vol 192.168.2.{100,101,102}:/mnt/sdb1
//分別使用 server0/1/2 的磁盤掛載目錄/mnt/sdb1 作為 brick

2.4) 啟動系統卷,在 server0上操作
[root@localhost ~]# gluster volume start dht_vol

2.5) 掛載客戶端,例如在server2上
[root@localhost ~]# mount.glusterfs server0:/dht_vol /mnt/gluster
//將系統卷掛載到 server2 上的/mnt/gluster 目錄下就可以正常使用了。該目錄聚合了三個不同主機上的三塊磁盤。
//從啟動服務到提供全局名字空間,整個部署流程如上。

3)基本系統管理

3.1)節點管理

# gluster peer command

1)節點狀態
[root@localhost ~]# gluster peer status      //在serser0上操作,只能看到其他節點與 server0 的連接狀態
Number of Peers: 2
Hostname: server1
Uuid: 5e987bda-16dd-43c2-835b-08b7d55e94e5
State: Peer in Cluster (Connected)
Hostname: server2
Uuid: 1e0ca3aa-9ef7-4f66-8f15-cbc348f29ff7
State: Peer in Cluster (Connected)

2)添加節點
[root@localhost ~]# gluster peer probe HOSTNAME
#gluster peer probe server2                //將server2添加到存儲池中

3)刪除節點
[root@localhost ~]# gluster peer detach HOSTNAME
[root@localhost ~]# gluster peer detach server2        //將server2從存儲池中移除
//移除節點時,需要確保該節點上沒有 brick ,需要提前將 brick 移除

3.2)卷管理

1)創建卷
[root@localhost ~]# gluster volume create NEW-VOLNAME [transport [tcp | rdma | tcp,rdma]]
NEW-BRICK...

-------------創建分布式卷(DHT)-------------
[root@localhost ~]# gluster volume create dht_vol 192.168.2.{100,101,102}:/mnt/sdb1
//DHT 卷將數據以哈希計算方式分布到各個 brick 上,數據是以文件為單位存取,基本達到分布均衡,提供的容量和為各個 brick 的總和。

-------------創建副本卷(AFR)-------------
[root@localhost ~]# gluster volume create afr_vol replica 3 192.168.2.{100,101,102}:/mnt/sdb1
//AFR 卷提供數據副本,副本數為 replica,即每個文件存儲 replica 份數,文件不分割,以文件為單位存儲;副本數需要等於brick數;當brick數是副本的倍數時,則自動變化為
Replicated-Distributed卷。

[root@localhost ~]# gluster  volume  create  afr_vol  replica  2  192.168.2.{100,101,102}:/mnt/sdb1 192.168.2.{100,101,102}:/mnt/sdc1
//每兩個 brick 組成一組,每組兩個副本,文件又以 DHT 分布在三個組上,是副本卷與分布式卷的組合。

-------------創建條帶化卷(Stripe)-------------
[root@localhost ~]# gluster volume create str_vol stripe 3 192.168.2.{100,101,102}:/mnt/sdb1
//Stripe 卷類似 RAID0,將數據條帶化,分布在不同的 brick,該方式將文件分塊,將文件分成stripe塊,分別進行存儲,在大文件讀取時有優勢;stripe 需要等於 brick 數;當 brick 數等於 stripe 數的倍數時,則自動變化為 Stripe-Distributed 卷。

[root@localhost ~]# gluster  volume  create  str_vol  stripe  3  192.168.2.{100,101,102}:/mnt/sdb1 192.168.2.{100,101,102}:/mnt/sdc1
//沒三個 brick 組成一個組,每組三個 brick,文件以 DHT 分布在兩個組中,每個組中將文件條帶化成 3 塊。

-------------創建Replicated-Stripe-Distributed卷-------------
[root@localhost ~]# gluster volume create str_afr_dht_vol stripe 2 replica 2 192.168.2.{100,101,102}:/mnt/sdb1 192.168.2.{100,101,102}:/mnt/sdc1 192.168.2.{100,101}:/mnt/sdd1
//使用8個 brick 創建一個組合卷,即 brick 數是 stripe*replica 的倍數,則創建三種基本卷的組合卷,若剛好等於 stripe*replica 則為 stripe-Distrbuted 卷。

2)卷 信息
[root@localhost ~]# gluster volume info
//該命令能夠查看存儲池中的當前卷的信息,包括卷方式、包涵的 brick、卷的當前狀態、卷名及 UUID 等。

3)卷 狀態
[root@localhost ~]# gluster volume status
//該命令能夠查看當前卷的狀態,包括其中各個 brick 的狀態,NFS 的服務狀態及當前 task執行情況,和一些系統設置狀態等。

4)啟動/ 停止 卷
[root@localhost ~]# gluster volume start/stop VOLNAME
//將創建的卷啟動,才能進行客戶端掛載;stop 能夠將系統卷停止,無法使用;此外 gluster未提供 restart 的重啟命令

5)刪除卷
[root@localhost ~]# gluster volume delete VOLNAME
//刪除卷操作能夠將整個卷刪除,操作前提是需要將卷先停止

3.3)Brick 管理

1)添加 Brick
若是副本卷,則一次添加的 Bricks  數是 replica  的整數倍;stripe  具有同樣的要求。
# gluster volume add-brick VOLNAME NEW-BRICK
#gluster volume add-brick dht_vol server3:/mnt/sdc1
//添加 server3 上的/mnt/sdc1 到卷 dht_vol 上。

2)移除 Brick
若是副本卷,則移除的 Bricks  數是 replica  的整數倍;stripe  具有同樣的要求。
[root@localhost ~]# gluster volume remove-brick VOLNAME BRICK start/status/commit
[root@localhost ~]# gluster volume remove-brick dht_vol start
//GlusterFS_3.4.1 版本在執行移除 Brick 的時候會將數據遷移到其他可用的 Brick 上,當數據遷移結束之後才將 Brick 移除。執行 start 命令,開始遷移數據,正常移除 Brick。

[root@localhost ~]# gluster volume remove-brick dht_vol status
//在執行開始移除 task 之後,可以使用 status 命令進行 task 狀態查看。

[root@localhost ~]# gluster volume remove-brick dht_vol commit
//使用 commit 命令執行 Brick 移除,則不會進行數據遷移而直接刪除 Brick,符合不需要數據遷移的用戶需求。

PS :系統的擴容及縮容可以通過如上節點管理、Brick  管理組合達到目的。
(1) 擴容時,可以先增加系統節點,然後 添加新增節點上的 Brick  即可。
(2) 縮容時,先移除 Brick ,然後再。 進行節點刪除則達到縮容的目的,且可以保證數據不丟失。

3)替換 Brick
[root@localhost ~]# gluster volume replace-brick VOLNAME BRICKNEW-BRICK start/pause/abort/status/commit
[root@localhost ~]# gluster volume replace-brick dht_vol server0:/mnt/sdb1 server0:/mnt/sdc1 start
//如上,執行 replcace-brick 卷替換啟動命令,使用 start 啟動命令後,開始將原始 Brick 的數據遷移到即將需要替換的 Brick 上。

[root@localhost ~]# gluster volume replace-brick dht_vol server0:/mnt/sdb1 server0:/mnt/sdc1 status
//在數據遷移的過程中,可以查看替換任務是否完成。

[root@localhost ~]# gluster volume replace-brick dht_vol server0:/mnt/sdb1 server0:/mnt/sdc1 abort
//在數據遷移的過程中,可以執行 abort 命令終止 Brick 替換。

[root@localhost ~]# gluster volume replace-brick dht_vol server0:/mnt/sdb1 server0:/mnt/sdc1 commit
//在數據遷移結束之後,執行 commit 命令結束任務,則進行Brick替換。使用volume info命令可以查看到 Brick 已經被替換。

4)GlusterFS系統擴展維護

4.1)系統配額

1)開啟/關閉系統配額
[root@localhost ~]# gluster volume quota VOLNAME enable/disable
//在使用系統配額功能時,需要使用 enable 將其開啟;disable 為關閉配額功能命令。

2)設置( 重置) 目錄配額
[root@localhost ~]# gluster volume quota VOLNAME limit-usage /directory limit-value
[root@localhost ~]# gluster volume quota dht_vol limit-usage /quota 10GB
//如上,設置 dht_vol 卷下的 quota 子目錄的限額為 10GB。

PS:這個目錄是以系統掛載目錄為根目錄”/”,所以/quota 即客戶端掛載目錄下的子目錄 quota

3)配額查看
[root@localhost ~]# gluster volume quota VOLNAME list
[root@localhost ~]# gluster volume quota VOLNAME list /directory name
//可以使用如上兩個命令進行系統卷的配額查看,第一個命令查看目的卷的所有配額設置,第二個命令則是執行目錄進行查看。
//可以顯示配額大小及當前使用容量,若無使用容量(最小 0KB)則說明設置的目錄可能是錯誤的(不存在)。

4.2)地域復制(geo-replication)

# gluster volume geo-replication MASTER SLAVE start/status/stop
地域復制 是系統提供的災備功能,能夠將系統的全部數據進行異步的增量備份到另外的磁盤中。

[root@localhost ~]# gluster volume geo-replication dht_vol 192.168.2.104:/mnt/sdb1 start
//如上,開始執行將 dht_vol 卷的所有內容備份到 2.104 下的/mnt/sdb1 中的 task,需要註意的是,這個備份目標不能是系統中的 Brick。

4.3)I/O 信息查看

Profile Command 提供接口查看一個卷中的每一個brick的IO信息。

[root@localhost ~]# gluster volume profile VOLNAME start
//啟動 profiling,之後則可以進行 IO 信息查看

[root@localhost ~]# gluster volume profile VOLNAME info
//查看 IO 信息,可以查看到每一個 Brick 的 IO 信息

[root@localhost ~]# gluster volume profile VOLNAME stop
//查看結束之後關閉 profiling 功能

4.4)Top 監控

Top command 允許你查看bricks的性能例如:read, write, file open calls, file read calls, file write calls, directory open calls, 
and directory real calls所有的查看都可以設置 top數,默認100

[root@localhost ~]# gluster volume top VOLNAME open [brick BRICK-NAME] [list-cnt cnt]
//查看打開的 fd

[root@localhost ~]# gluster volume top VOLNAME read [brick BRICK-NAME] [list-cnt cnt]
//查看調用次數最多的讀調用

[root@localhost ~]# gluster volume top VOLNAME write [brick BRICK-NAME] [list-cnt cnt]
//查看調用次數最多的寫調用

[root@localhost ~]# gluster volume top VOLNAME opendir [brick BRICK-NAME] [list-cnt cnt]
[root@localhost ~]# gluster volume top VOLNAME readdir [brick BRICK-NAME] [list-cnt cnt]
//查看次數最多的目錄調用

[root@localhost ~]# gluster volume top VOLNAME read-perf [bs blk-size count count] [brick BRICK-NAME] [list-cnt]
//查看每個 Brick 的讀性能

[root@localhost ~]# gluster volume top VOLNAME write-perf [bs blk-size count count] [brick BRICK-NAME] [list-cnt cnt]
//查看每個 Brick 的寫性能

GlusterFS分布式系統維護管理筆記補充