zoukankan      html  css  js  c++  java
  • Lustre文件系统部署和应用探索

    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

    注意:

    1. 本博客的虚拟机已经配置了开机自动获取固定IP,IP绑定了MAC地址
    2. 各节点之间已经配置了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/mdt00mount.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/ost00mount.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 1lfs 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上

    4. Lustre文件系统探索

  • 相关阅读:
    表单上传,接收非文件参数
    CompletableFuture 获取所有task的结果
    CNVD-2021-30167:用友NC BeanShell远程代码执行漏洞复现
    restful接口优化
    中科院院士:初等数学和高等数学,总结起来就这几点<转载>
    Vue打包报错Unexpected token: punc(()解决方案
    Echarts表格三连的效果
    React 项目 或者 Vue项目 中引用 第三方插件的时候,如果不在npm库上,则需把静态文件放入项目进行引用
    ios touch事件 获取 event的 clientX/Y
    GCC | GCC编译器
  • 原文地址:https://www.cnblogs.com/liwanliangblog/p/9781787.html
Copyright © 2011-2022 走看看