1. Lustre文件系統概述
2. Lustre文件系統部署
2.1 基本環境
本篇博客將在KVM虛擬機中部署Lustre文件系統。
操作系統版本為CentOS6.5_x86_64。Lustre軟件包版本在官方下載與內核版本2.6.32-431相對應的rpm(包括server和client)等全部的包。
實踐思路為創建一個kvm模板主機,在該主機完成lustre文件系統軟件包安裝之后,然后克隆6個主機。
2.2 部署過程
2.2.1 模板主機配置
首先創建虛擬機node31
將下載的lustre文件系統的rpm包上傳至node31,這些包包括:
lustre服務端軟件包:
lustre客戶端軟件包:
lustre文件系統依賴包:
然后,執行rpm安裝軟件,操作如下:
#首先安裝lustre文件系統依賴包,進入目錄e2fsprogs-centos6.5,執行
rpm -ivh * --nodeps --force
#其次安裝服務端軟件包,進入目錄lustre-server,執行
rpm -ivh kernel-* --nodeps --force
rpm -ivh lustre-* --nodeps --force
rpm -ivh perf-* --nodeps --force
rpm -ivh python-perf-* --nodeps --force
#然后安裝客戶端軟件包,進入目錄lustre-client,執行
rpm -ivh lustre-client-* --nodeps --force
rpm -ivh lustre-iokit-2.6.0-2.6.32_431.20.3.el6.x86_64.x86_64.rpm --nodeps --force
#最后,重啟node31,執行
reboot
內核加載和網絡配置
在node31的/etc/rc.local中追加:
modprobe lustre
modprobe ldiskfs
執行命令:
echo "options lnet networks=tcp0(eth0)" > /etc/modprobe.d/lustre.conf
重啟主機
重啟了node31之后,登陸node31執行unmae -a,可以發現操作系統內核已經變成:
Linux node31 2.6.32-431.20.3.el6_lustre.x86_64 #1 SMP Fri Jul 11 11:58:21 PDT 2014 x86_64 x86_64 x86_64 GNU/Linux
上述過程完成了在kvm模板機node31中,完成了lustre文件系統部署。下面進行模板主機的克隆。執行命令:
for i in $(seq -w 2 6)
do
virt-clone -n node3$i -o node31 -f /mnt/data/vhosts/node3$i.img -m 00:00:00:80:00:3$i
done
注意:
- 本博客的虛擬機已經配置了開機自動獲取固定IP,IP綁定了MAC地址
- 各節點之間已經配置了ssh互信
2.2.2 為主機添加磁盤
在2.2.1小節中,進行了部署lustre文件系統時,需要的主機和軟件安裝。下面進行磁盤添加。
lustre文件系統組件包括:MGS,MDS,OSS,三個部分均需要后端存儲MGT,MDT,OST
本篇博客將MGS和MDS分開,因此其后端存儲也不會在共享存儲上。
創建虛擬磁盤
執行以下命令,創建8塊1G大小的虛擬磁盤
for i in $(seq -w 01 08)
do
qemu-img create -f raw /mnt/data/vdisks/disk$i 1G
done
為主機添加磁盤
執行以下命令,為各個虛擬主機添加磁盤
#node31
virsh attach-disk node31 /mnt/data/vdisks/disk01 vdb --cache none
#node32
virsh attach-disk node32 /mnt/data/vdisks/disk01 vdb --cache none
#node33
virsh attach-disk node33 /mnt/data/vdisks/disk03 vdb --cache none
virsh attach-disk node33 /mnt/data/vdisks/disk04 vdc --cache none
#node34
virsh attach-disk node34 /mnt/data/vdisks/disk03 vdb --cache none
virsh attach-disk node34 /mnt/data/vdisks/disk04 vdc --cache none
#node35
virsh attach-disk node35 /mnt/data/vdisks/disk05 vdb --cache none
virsh attach-disk node35 /mnt/data/vdisks/disk06 vdc --cache none
#node36
virsh attach-disk node36 /mnt/data/vdisks/disk05 vdb --cache none
virsh attach-disk node36 /mnt/data/vdisks/disk06 vdc --cache none
其中,node31和node32共享磁盤disk01,node33和node34共享磁盤disk03,disk04,node35和node36共享磁盤disk05,disk06
至此,已經完成了lustre文件系統后端存儲配置。下面將進行文件系統的創建和掛載
2.2.3 Lustre文件系統創建
MGS配置
在node31上,執行命令:
mkfs.lustre --fsname=mylustre --reformat --mgs --servicenode=192.168.80.31@tcp0 --servicenode=192.168.80.32@tcp0 /dev/vdb
--fsname 指定要創建的文件系統名稱;
--mgs 指定node31作為MGS服務器;
--servicenode 指定備份容錯節點;
--reformat 重新格式化,避免再次創建文件系統時報錯
/dev/vdb 后端存儲設備MGT;
創建掛載點:mkdir -p /mnt/mgs00
,同時在node32上創建
掛載MGT:mount.lustre /dev/vdb /mnt/mgs00
MDS配置
在node33上,執行命令:
#/dev/vdb
mkfs.lustre \
--fsname=mylustre \
--reformat --mdt \
--index=0 \
--mgsnode=192.168.80.31@tcp0:192.168.80.32@tcp0 \
--servicenode=192.168.80.33@tcp0 --servicenode=192.168.80.34@tcp0 \
/dev/vdb
#/dev/vdc
mkfs.lustre \
--fsname=mylustre \
--reformat --mdt \
--index=1 \
--mgsnode=192.168.80.31@tcp0:192.168.80.32@tcp0 \
--servicenode=192.168.80.33@tcp0 --servicenode=192.168.80.34@tcp0 \
/dev/vdc
創建掛載點:mkdir -p /mnt/mdt0{0,1}
,同時在node34上創建
掛載MDT:mount.lustre /dev/vdb /mnt/mdt00
;mount.lustre /dev/vdc /mnt/mdt01
OST配置
在node35上,執行命令:
#/dev/vdb
mkfs.lustre \
--fsname=mylustre \
--reformat --ost --index=0 \
--mgsnode=192.168.80.31@tcp0:192.168.80.32@tcp0 \
--servicenode=192.168.80.35@tcp0 --servicenode=192.168.80.36@tcp0 \
/dev/vdb
#/dev/vdc
mkfs.lustre \
--fsname=mylustre \
--reformat --ost --index=1 \
--mgsnode=192.168.80.31@tcp0:192.168.80.32@tcp0 \
--servicenode=192.168.80.35@tcp0 --servicenode=192.168.80.36@tcp0 \
/dev/vdc
創建掛載點:mkdir -p /mnt/ost0{0,1}
,同時在node36上創建
掛載OST:mount.lustre /dev/vdb /mnt/ost00
;mount.lustre /dev/vdc /mnt/ost01
客戶端掛載
上述過程完成之后,Lustre文件部署基本完成。
在node31上創建掛載點,mkdir -p /mnt/lustre
掛載lustre文件系統,mount.lustre 192.168.80.31@tcp0:192.168.80.32@tcp0:/mylustre /mnt/lustre/
執行命令,查看文件系統狀態,lfs df -h
3. Lustre文件系統管理
3.1 條帶化分布
查看當前掛載目錄的條帶化分配,如下圖
根據圖上顯示,所有在掛載節點創建的文件和目錄,將會被分配到4個OST上
修改掛載目錄分配到一個OST上,執行命令:lfs setstripe /mnt/lustre -c 1
;lfs setstipe /mnt/lustre/liwl01 -c 1
寫入數據,進行測試:dd if=/dev/zero of=test.img bs=10M count=1
通過lfs getstipe查看到test.img分布在index為2的OST上,其磁盤占用已經更新到7%,表示test.img實際上僅分布在一個OST上
3.2 數據遷移
如下圖,100M的test.img,剛開始分布在obdidx=1上,執行命令lfs migrate test.img --stripe-count=3
之后,通過lfs getstripe test.img
查看到,test.img已經被遷移至其他三個OST上