魔術大空間 - glusterfs
Published by knick,
魔術大空間 - glusterfs
標籤: 分佈式檔案系統 glusterfs dfs
△注意:本文是配合 Ubuntu Server 12.04 LTS 安裝
現在資料越長越大、越長越多,老是覺得儲存的空間不夠用,只好花錢買新的設備,用新的硬碟,現在一個硬碟最大4TB,多個硬碟合在一起做raid,就是n多TB了,可要是沒有錢,想用舊設備來做?行,這就是伺服器管理有趣的地方,找一些軟體方案解決問題,回到主題,我們接下來要介紹glusterfs,透過glusterfs就可以把多台舊設備中的空間,合併成一個大空間,供管理者使用。
▲ 圖一、透過glusterfs可以合併多個伺服器中的儲存空間
glusterfs 是開源的分佈式檔案系統,詳細的資料可以看官網 ,在使用舊設備來做儲存空間前,我會建議系統要重新規劃,一是本機的磁碟容錯還是要做,例如以raid 5組成磁碟陣列,避免本機硬碟故障而遺失資料,這是因為下面我示範的是Distributed volumes(註),這種volume type只是把檔案分散到不同台的glusterfs伺服器中,藉此達到儲存空間,等於所有glusterfs伺服器分享空間的總合,缺點就是沒有備份,有一個伺服器壞掉時,那原本被分佈到儲存裡面的檔案就會不見;二是將磁碟分為兩部份,一個給作業系統(os)用,一個給分享的儲存空間(storage)用,兩者要是混在一起時,可能會發生儲存空間檔案用太多,導致root沒有空間可用的問題。
註:要有備份可以選用Replicated Volumes。
測試的環境需要三台機器,我使用virtualbox做,而相關的設定如下
storage | |||
192.168.1.31 |
os:8GB | ||
192.168.1.32 |
os:8GB |
因為舊設備間的空間可能不一樣,所以我這邊也故意做出不一樣的storage空間 | |
gfsclient |
192.168.1.41 |
os:8GB |
測試空間使用的用戶端 |
作業系統安裝好後,先把/etc/hosts設定好,讓伺服器間可以用主機名溝通,同時也方便我們後續的設定,再使用fdisk做第二顆硬碟的分割,分割好後格式化為ext4的格式,然後mount在需要的資料夾中。
● sudo fdisk /dev/sdb #切硬碟分割表
● sudo partprobe #重載硬碟分割表資訊
● sudo mkfs.ext4 /dev/sdb1 #新硬碟格式化為ext4格式
● sudo mkdir /gfsdata #建一個資料夾做掛載點
● sudo mount -t ext4 /dev/sdb1 /gfsdata #掛載新的硬碟
▲ 圖二、兩台伺服器掛載完硬碟後的df情形
再來進行glusterfs的軟體安裝,
● sudo apt-get install glusterfs-server #有多台提供儲存空間的伺服器時,每一台都要做此安裝動作
● glusterfs –version #安裝成功後,可以看一下安裝的版本
▲ 圖三、安裝glusterfs
▲ 圖四、glusterfs的版本檢查
找一台伺服器做端點(其它提供儲存服務的伺服器)設定,我這邊是在gfs1上做
● sudo gluster peer probe gfs2 #把gfs2加入,若環境中還有其它台,這邊就要一一加入
● sudo gluster peer status #查看端點資訊
▲ 圖五、加入其它端點
建立glusterfs的volume,這個volume就是gfsclient將要可以使用的空間
● sudo gluster volume create dist-vol gfs1:/gfsdata gfs2:/ gfsdata #/gfsdata就是我們掛載第二顆硬碟的目錄
● sudo gluster volume start dist-vol
● sudo gluster vloume info
▲ 圖六、建立glusterfs的volume,及秀出volume資訊
至此伺服器的設定已完成,接下來是client端的設定
● sudo mkdir -p /mnt/dist-vol #建一個資料夾做glusterfs的掛載
● sudo apt-get install glusterfs-client #安裝掛載所需的程式
▲ 圖七、安裝glusterfs-client
掛載遠端的volume到本機
● sudo mount.glusterfs gfs1:/dist-vol /mnt/dist-vol
產生測試檔案
● cd /mnt/dist-vol
● sudo touch Files{1..20} #用touch產生20個檔
● df -h #檢查掛載的空間大小,顯示是9.9G,就等於我們gfs1 4GB+gfs2 6GB的大小
▲ 圖八、touch產生測試資料,與df看到gfs1的空間是9.9G
▲圖九、touch的檔案,隨機分配到gfs1中
▲圖十、touch的檔案,隨機分配到gfs2中
由<<圖八>>我們看到空間是9.9G,不過我們現在使用的Distributed volumes,其實是將檔案隨機寫到不同的伺服器中,所以今天要是有一個檔案是8G要寫進這個volume,因為超過任一台glusterfs伺服器的可用空間,所以還是會出現空間不足(no space left on device)的錯誤訊息。
軟體下載
Ubuntu 12.04 LTS
2013-05-06 14:38:10