魔術大空間 - glusterfs

術大空間 - 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
storage 4GB

192.168.1.32

os:8GB
storage 6GB

因為舊設備間的空間可能不一樣,所以我這邊也故意做出不一樣的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

檢舉