[moosefs] storage class

chapter 1 moosefs 3.1 storage class 功能的介紹node

1.1 什麼是storage classdom

在moosefs中,storage class容許指定文件的chunks存放在哪些chunkservers上。工具

storage class使用label進行表達。spa

爲了與早起的版本的goal功能兼容,moosefs 3.0以上會自動在系統中創建1~9 storage class。goal工具將默認在對應的storage class下進行工做。code

1.2 什麼是labelserver

label是能夠被分配給chunkserver的字母(a~z,26個字母可選),每一個chunkserver能夠被打上多個標籤(即標記上多個字母,但最多能夠打26個label)blog

完整的label表達式能夠由多個子表達式構成,每一個子標籤之間用逗號分隔。每一個子表達式特指文件副本的一種存儲模式。子表達式能夠爲星號*或一個label schema。進程

label schema能夠是一個label或由加法、乘法和括號構成的複雜表達式。get

加法是邏輯「或」的含義,即文件的副本能夠被存放在任意含有加法元素label的chunkserver上。例如,一個文件的storage class是a+b+c,那麼任何含有a、b或c標籤的chunkserver均可以用來存儲該文件的副本。ast

乘法是邏輯「與」的含義,即文件的副本僅能夠存放在包含全部label的chunkserver上。例如,一個文件的storage class是abc,那麼只有當一臺chunkserver同時含有abc三個標籤時,它才能用於存放該文件的副本。

相同的子表達式能夠經過在表達式前加數字的方式來表示,而不用重複顯示聲明屢次。

chapter 2 如何使用storage class

2.1 機器配置

在本文的示例中,將在11臺機器上安裝moosefs:

ts02, ts03 爲master servers

ts04 .. ts12 爲chunkservers

前提假設:

已有一些初始化數據存放在示例的moosefs文件系統中,而且goal爲2(storage class 2)

2.2 不設置storage class狀況下moosefs的安裝方法

若是chunkserver上沒有設置任何的label,則moosefs 3.0系統中數據的分佈將於2.0版本時相同,以下圖所示

2.3 爲chunkservers加上label

若要給chunkserver打label,則須要修改相應chunkserver的配置文件 /etc/mfs/mfschunkserver.cfg

編輯該配置文件,將LABELS = A前面的註釋符號去掉,並設置上你想要的標籤

設置好後,須要通知chunkserver進程配置文件已更新,使用以下兩個命令都可

service moosefs-pro-chunkserver reload

mfschunkserver reload

再爲ts04..ts07設上A標籤,ts08..ts12設上B標籤後,從cgi頁面看到chunkserver的信息以下:

若想爲chunkserver設置多個標籤,則以下三種方式均可以:

LABELS = XYZ

or

LABELS = X Y Z

or

LABELS = X, Y, Z

設好標籤後的集羣以下:

2.4 建立storage class

使用mfsscadmin工具能夠在moosefs系統中建立storage class。

 ps:在chapter 3有mfsscadmin工具完整的使用介紹

此處僅簡單給出使用示例

首先,mount一個mfs卷

mount -t moosefs mfsmaster.test.lan: /mnt/mfs

而後,進入到mount點的目錄下

cd /mnt/mfs

假設咱們但願將文件的2個副本存放在帶有label A的chunkserver上,則能夠建立storage class以下:

mfsscadmin create 2A sclass1

上面這條命令的含義爲:每個屬於sclass1的文件,將會擁有2個副本,其中每一個副本將存放在帶有標籤A的chunkserver上。

相似的,能夠建立另外一個storage class,讓文件再生成2個副本存放在帶有標籤B的chunkserver上。

mfsscadmin create 2B sclass2

此外,不必定要cd到mount的目錄中進行storage class的建立,也能夠經過顯示指定目錄的方式來給文件建立storage class,例如:

mfsscadmin /mnt/mfs create 2B sclass2

2.5 展現storage class

mfsscadmin list

該指令將列出某個mfs目錄擁有的storage class列表,例如

root@client :/ mnt / mfs # mfsscadmin list

list ; 1

1

2

3

4

5

6

7

8

9

sclass1

sclass2

root@client :/ mnt / mfs #

也能夠經過加上-l參數來獲取相信的信息

2.6 將storage class配置到文件或目錄上

有不少個工具均可覺得文件或目錄配置storage class:

mfsgetsclass, mfssetsclass, mfscopyclass, mfsxchgsclass, mfslistclass

在chapter 3.2能夠查看這些指令的詳細介紹,或者使用man指令,如:man mfssclass

如今,能夠將一些數據存入mfs中了。建立兩個目錄dataX dataY:

cd /mnt/mfs

mkdir {dataX,dataY}

爲dataX目錄添加sclass1這個storage class:

mfssetsclass sclass1 dataX

執行該指令後,dataX及其子目錄中全部的目錄和文件將自動根據sclass1策略來存儲文件。

一樣的,爲dataY分配sclass2這一storage class:

mfssetsclass sclass2 dataY

2.6.1 建立文件

如今能夠往dataX和dataY分別建立文件並寫入數據了:

root@client :/ mnt / mfs # cd dataX
root@client :/ mnt / mfs / dataX # for i inseq 1 35 ‘; do dd if =/ dev / urandom of=
dd1G_$i .bin bs =1M count =1024; done
[...]
root@client :/ mnt / mfs / dataX # cd ../ dataY
root@client :/ mnt / mfs / dataY # for i inseq 1 10 ‘; do dd if =/ dev / urandom of=
dd1G_$i .bin bs =1M count =1024; done
[...]
root@client :/ mnt / mfs / dataY #

2.6.2 文件系統根據storage class的設定進行數據分配

與此同時,「resource」tab下的inodes信息也更新了:

相關文章
相關標籤/搜索