本篇博客将在KVM虚拟机中部署Lustre文件系统。
操做系统版本为CentOS6.5_x86_64。Lustre软件包版本在官方下载与内核版本2.6.32-431相对应的rpm(包括server和client)等所有的包。
实践思路为建立一个kvm模板主机,在该主机完成lustre文件系统软件包安装以后,而后克隆6个主机。node
首先建立虚拟机node31
将下载的lustre文件系统的rpm包上传至node31,这些包包括:
lustre服务端软件包:
lustre客户端软件包:
lustre文件系统依赖包:
python
而后,执行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
centos
重启主机
重启了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
注意:网络
在2.2.1小节中,进行了部署lustre文件系统时,须要的主机和软件安装。下面进行磁盘添加。
lustre文件系统组件包括:MGS,MDS,OSS,三个部分均须要后端存储MGT,MDT,OST
本篇博客将MGS和MDS分开,所以其后端存储也不会在共享存储上。
建立虚拟磁盘
执行如下命令,建立8块1G大小的虚拟磁盘ssh
for i in $(seq -w 01 08) do qemu-img create -f raw /mnt/data/vdisks/disk$i 1G done
为主机添加磁盘
执行如下命令,为各个虚拟主机添加磁盘tcp
#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文件系统后端存储配置。下面将进行文件系统的建立和挂载测试
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
查看当前挂载目录的条带化分配,以下图
根据图上显示,全部在挂载节点建立的文件和目录,将会被分配到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上
以下图,100M的test.img,刚开始分布在obdidx=1上,执行命令lfs migrate test.img --stripe-count=3
以后,经过lfs getstripe test.img
查看到,test.img已经被迁移至其余三个OST上