zoukankan      html  css  js  c++  java
  • cobbler使用DTK自动化做RAID

    转自:https://garywu520.github.io/blog/2017/04/12/cobbler%E4%BD%BF%E7%94%A8DTK%E8%87%AA%E5%8A%A8%E5%8C%96%E5%81%9ARAID/


    Dell提供一个叫做DTK(dell openmanage deployment toolkit)的套件, 套件包含了 raidcfg 这个工具。dtk导入cobbler之后,就可以自动化的完成RAID卡的设置;以及自动化完成修改BIOS设置.

    自动化配置RAID

    下载DTK ISO镜像

    下载: DTK_v5.3(最新版)

    挂载iso并安装rpm基础包
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    mount -o loop dtk_5.3.0_1908_Linux64_A00.iso /mnt
    cd /mnt/RPMs/rhel7/x86_64
    ls

    #注:以下包安装有前后顺序
    yum install -y srvadmin*
    yum install -y raidcfg-5.3.0-1908.9058.el7.x86_64.rpm
    yum install -y syscfg-5.3.0-1908.9058.el7.x86_64.rpm
    yum install -y dtk-scripts-5.3.0-1908.9058.el7.x86_64.rpm

    命令软链
    ln -sv /opt/dell/toolkit/bin/raidcfg /usr/sbin/raidcfg

    注:我的cobbler部署在了CentOS7上,所以需要进入rhel7目录。
    了解文件SA.1和SA.2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # ls -lh /mnt/isolinux/
    ......
    -r--r--r-- 1 root root 4.0M Feb 15 2016 SA.1
    -r--r--r-- 1 root root 158M Feb 15 2016 SA.2
    ......

    # file /mnt/isolinux/SA.1
    # file /mnt/isolinux/SA.2

    上面可以看到有两个文件SA.1和SA.2, 这两个文件分别是kernel和initrd文件,稍后导入到cobbler的时候会用到它们。
    手动添加dtk所需文件到cobbler启动菜单
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    拷贝SA.1和SA.2到/var/www/cobbler/ks_mirror/目录中
    # mkdir /var/www/cobbler/ks_mirror/dtk5.3_raid5_n3x1/
    # cp /mnt/isolinux/SA* /var/www/cobbler/ks_mirror/dtk5.3_raid5_n3x1

    将dtk导入到cobbler
    # cobbler distro add --name=dtk5.3_raid5_n3x1 --kernel=/var/www/cobbler/ks_mirror/dtk5.3_raid5_n3x1/SA.1 --initrd=/var/www/cobbler/ks_mirror/dtk5.3_raid5_n3x1/SA.2
    # cobbler profile add --name=dtk5.3_raid5_n3x1 --distro=dtk5.3_raid5_n3x1
    注: name名称定义为"dtk5.3_raid5_n3x1"原因是便于识别,即3块盘做1组RAID5。

    查看确认
    # cobbler profile list
    # cobbler distro list
    配置RAID自动化脚本并与distro进行关联
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    创建raid脚本文件存放目录
    mkdir /var/lib/tftpboot/raidcfg/raid5_n3x1

    接下来配置raid5.sh脚本
    vim /var/lib/tftpboot/raidcfg/raid5_n3x1/raid5_n3x1.sh 内容如下:

    ##-----------脚本内容开始-------------------------
    #!/bin/bash

    cat >> /tmp/raid5.ini <<EOF
    [vdisk0]
    controllerid=0
    raid=5
    readpolicy=nra
    writepolicy=wt
    stripesize=64
    cachepolicy=e
    adisk=0:0:1,0:1:1,0:2:1
    EOF

    echo "…………. reset all disks …………."
    raidcfg -ctrl -c=0 -ac=rst
    echo "………. 3 disks for raid5 ………."
    raidcfg -i=/tmp/raid5.ini
    echo "…………… fast init ……………"
    raidcfg -vd -c=0 -vd=0 -ac=fi
    echo "…………… RAID5 is created, this is server will be shutdown... ……………"
    shutdown
    ##-------------脚本内容结束-----------------------

    脚本含义:
    首先使用raidcfg命令reset控制器,删除所有原有RAID配置,将磁盘置为"JBOD"模式。然后再次调用raidcfg,创建RAID5。创建好RAID之后,让系统重启(如果写shutdown则关机)

    chmod 755 /var/lib/tftpboot/raidcfg/raid5_n3x1/raid5_n3x1.sh
    注:cobbler服务器千万不要运行这个脚本,你懂得
    1
    2
    3
    4
    把raid5脚本与distro进行关联
    cobbler distro edit --name=dtk5.3_raid5_n3x1 --kopts="share_type=tftp share_location=/raidcfg/dtk5.3_raid5_n3x1 share_script=dtk5.3_raid5_n3x1.sh tftp_ip=x.x.x.x"

    注: 这条命令修改的配置文件是/var/lib/tftpboot/pxelinux.cfg/default
    最后执行cobbler sync命令
    1
    2
    最后执行命令: cobbler sync
    目的:保存配置

    导入多个DTK满足不同RAID自动化需求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    例如:Dell R720,8块盘满配,4块一组RAID5,做两组。

    mount -o loop dtk_5.3.0_1908_Linux64_A00.iso /mnt
    cd /var/www/cobbler/ks_mirror/
    mkdir dtk5.3_raid5_n4x2
    cp /mnt/isolinux/SA* dtk5.3_raid5_n4x2/
    cd dtk5.3_raid5_n4x2/ && ls

    cobbler distro add --name=dtk5.3_raid5_n4x2 --kernel=/var/www/cobbler/ks_mirror/dtk5.3_raid5_n4x2/SA.1 --initrd=/var/www/cobbler/ks_mirror/dtk5.3_raid5_n4x2/SA.2

    cobbler profile add --name=dtk5.3_raid5_n4x2 --distro=dtk5.3_raid5_n4x2
    cobbler profile list
    cobbler distro list

    cd /var/lib/tftpboot/raidcfg/
    mkdir raid5_n4x2

    接下来配置raid5_n4x2.sh脚本
    vim /var/lib/tftpboot/raidcfg/raid5/raid5_n4x2.sh
    (略)
    chmod 755 /var/lib/tftpboot/raidcfg/raid5/raid5_n4x2.sh

    cobbler distro edit --name=dtk5.3_raid5_n4x2 --kopts="share_type=tftp share_location=/raidcfg/raid5_n4x2 share_script=raid5_n4x2.sh tftp_ip=x.x.x.x"

    cobbler sync

    常用RAID脚本

    raid5-3块盘/组

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    cat >> /tmp/raid5.ini <<EOF
    [vdisk0]
    controllerid=0
    raid=5
    readpolicy=nra
    writepolicy=wt
    stripesize=64
    cachepolicy=e
    adisk=0:0:1,0:1:1,0:2:1
    EOF

    echo "…………. reset Other Raid …………."
    raidcfg -ctrl -c=0 -ac=fgnclr
    echo "…………. reset all disks …………."
    raidcfg -ctrl -c=0 -ac=rst
    echo "………. 3 disks for raid5 ………."
    raidcfg -i=/tmp/raid5.ini
    echo "…………… fast init ……………"
    raidcfg -vd -c=0 -vd=0 -ac=fi
    echo "…………… RAID5 is created, this is server will be shutdown... ……………"
    shutdown

    2组raid5-4块盘/组(Dell R720)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/bin/bash

    cat >> /tmp/raid5_n4x2.ini <<EOF
    [vdisk0]
    controllerid=0
    raid=5
    readpolicy=nra
    writepolicy=wt
    stripesize=64
    cachepolicy=e
    adisk=0:0:1,0:1:1,0:2:1,0:3:1

    [vdisk1]
    controllerid=0
    raid=5
    readpolicy=nra
    writepolicy=wt
    stripesize=64
    cachepolicy=e
    adisk=0:4:1,0:5:1,0:6:1,0:7:1

    EOF

    echo "………….reset Other Raid …………."
    raidcfg -ctrl -c=0 -ac=fgnclr
    echo "…………. reset all disks …………."
    raidcfg -ctrl -c=0 -ac=rst
    echo "………. 4 disks for raid5 ………."
    raidcfg -i=/tmp/raid5_n4x2.ini
    echo "…………… fast init ……………"
    raidcfg -vd -c=0 -vd=0 -ac=fi
    raidcfg -vd -c=0 -vd=1 -ac=fi
    echo "…………… This is server will be shutdown... ……………"
    shutdown

    注:
    1.多组Raid下,controllerid都配置为0,因为共属于一个控制器,而vdisk可以有多个,如[vdisk=0]、[vdisk=1]
    2.多组Raid与硬盘容量无关,只需保证每组RAID容量一致即可。
    3.若原硬盘已有RAID信息, 这条指令可以清除:raidcfg -ctrl -c=0 -ac=fgnclr

    raid5_n3x1+raid0_n1x1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #!/bin/bash

    cat >> /tmp/raid5_n3x1+raid0_n1x1.ini <<EOF
    [vdisk0]
    controllerid=0
    raid=5
    readpolicy=nra
    writepolicy=wt
    stripesize=64
    cachepolicy=e
    adisk=0:0:1,0:1:1,0:2:1

    [vdisk1]
    controllerid=0
    raid=0
    readpolicy=nra
    writepolicy=wt
    stripesize=64
    cachepolicy=e
    adisk=0:3:1

    EOF

    echo "………….reset Other Raid …………."
    raidcfg -ctrl -c=0 -ac=fgnclr
    echo "…………. reset all disks …………."
    raidcfg -ctrl -c=0 -ac=rst
    echo "………. raid5 + raid0 ………."
    raidcfg -i=/tmp/raid5_n3x1+raid0_n1x1.ini
    echo "…………… fast init ……………"
    raidcfg -vd -c=0 -vd=0 -ac=fi
    raidcfg -vd -c=0 -vd=1 -ac=fi
    echo "…………… RAID is created, this is server will be shutdown... ……………"
    shutdown

    附录:RAID参数详解

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    上面这些指令从哪儿来?
    raidcfg -h 帮助都有使用方法,常用的如下:

    controller 简写为 -ctrl
    action 简写为 -ac
    controllerid 简写为 -c
    adisk, pdisk 简写为 -ad, -pd
    raid 简写为 -r
    size 简写为 -sz
    stripsize 简写为 -ssz
    cachepolicy 简写为 -cp
    writepolicy 简写为 -wp
    readpolicy 简写为 -rp
    vdisk 简写为 -vd

    RAIDCFG命令分类

    信息输出类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #列出所有RAID控制器信息
    raidcfg <-ctrl>

    #列出指定ID的RAID控制器信息
    raidcfg <-ctrl> [-c=ID]

    #显示指定控制器上的所有物理磁盘信息
    raidcfg <-ad|-pd> <-c=ID>

    #显示指定控制器指定vdisk上的所有物理磁盘信息
    raidcfg <-ad|-pd> <-c=ID> [-vd=ID]

    #显示具体某块物理磁盘的信息
    raidcfg <-ad|-pd> <-c=ID> [-ad=ch:targ[:encl],ch:targ[:encl],...]

    #显示所有控制器上的所有vdisk信息
    raidcfg <-vd>

    #显示指定控制器上的所有vdisk信息
    raidcfg <-vd> [-c=ID]

    #显示指定控制器上的指定vdisk信息
    raidcfg <-vd> <-c=ID> [-vd=ID]

    #将系统函数调用的返回值赋予用户指定的环境变量
    raidcfg <-se> <-envn=string> <-envc=function> [-f=filename]
    Function Calls: getcontrollerslots.

    #将系统函数调用的返回值赋予用户指定的环境变量
    raidcfg <-se> <-envn=string> <-envc=function> <-c=ID> [-f=filename]
    Function Calls:getfirmware,getcontrollertype,getadisks,getadiskcount,getfreeadisks, getfreeadiskcount,getfreeadisksize,gethotspares.
    vdisk操作类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #创建vdisk
    raidcfg <-ctrl> <-ac=cvd> <-c=ID> <-ad|-pd=ch:targ[:encl],ch:targ[:encl], ...>
    [-r=n] [-sz=n] [-ssz=n] [-cp=d | e]
    [-rp=ra | ara | nra | rc | nrc] [-wp=wb | wt | fwb | wc | nwc]
    [-fd=ch:targ,ch:targ,...] [-str=number] [-sp=number]

    #删除指定控制器上的所有vdisk
    raidcfg <-vd> <-ac=dvd> <-c=ID>

    #删除指定控制器上的指定vdisk
    raidcfg <-vd> <-ac=dvd> <-c=ID> [-vd=ID]

    #对指定控制器上的vdisk执行快速初始化
    raidcfg <-vd> <-c=ID> <-vd=ID> <-ac=fi>

    #对指定控制器上的vdisk执行完全(慢速)初始化
    raidcfg <-vd> <-c=ID> <-vd=ID> <-ac=sli>

    #取消指定vdisk的完全(慢速)初始化
    raidcfg <-vd> <-c=ID> <-vd=ID> <-ac=ci>
    hotspare类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #分配全局hotspare磁盘
    raidcfg <-ctrl> <-ac=sghs> <-c=ID> <-ad|-pd=ch:targ[:encl]>

    #取消分配全局hotspare磁盘
    raidcfg <-ctrl> <-ac=rghs> <-c=ID> <-ad|-pd=ch:targ[:encl]>

    #在指定控制器上启用Controller Persistent Hot Spare
    raidcfg <-ctrl> <-c=ID> <-ac=ephs>

    #在指定控制器上禁用Controller Persistent Hot Spare
    raidcfg <-ctrl> <-c=ID> <-ac=dphs>
    raid控制类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #reset指定控制器
    raidcfg <-ctrl> <-c=ID> <-ac=rst>

    #读取所有控制器上的RAID配置信息,输出到指定的ini文件
    raidcfg <-o=filename>

    #读取指定的ini文件,在配置文件指定的制器上创建RAID
    raidcfg <-i=filename>

    #在指定控制器上导入外部RAID配置信息
    raidcfg <-ctrl> <-c=ID> <-ac=fgnimp>

    #在指定控制器上清除外部RAID配置信息
    raidcfg <-ctrl> <-c=ID> <-ac=fgnclr>

    #在指定控制器上恢复外部RAID配置信息
    raidcfg <-ctrl> <-c=ID> <-ac=fgnrvr>
    通用参数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    除了[-ver]之外,可以应用于上边任何命令中:

    [-ver] -- 显示RAIDCFG版本
    [-l=logfilename] -- 将输出写入到log文件中
    [-si] -- 静默,抑制console输出

    应用举例:
    假设系统总共有8块硬盘,前两块146G做RAID1,后5块900G做RAID5,最后一块做全局hotspare
    raidcfg -ctrl -ac=cvd -c=0 -ad=0:0:0,0:1:0 -r=1
    raidcfg -ctrl -ac=cvd -c=0 -ad=0:2:0,0:3:0,0:4:0,0:5:0,0:6:0 -r=5
    raidcfg -ctrl -ac=sghs -c=0 -ad=0:7:0

    参考:官方参数说明

  • 相关阅读:
    HTML常用标签
    消息机制JMS
    一个Socket连接管理池(心跳机制)
    Java调用其他程序时waitFor()阻塞
    JDBC连接数据库
    mysql入门
    WebService到底是什么
    Netty详解
    Mongodb集群搭建
    JavaScript入门
  • 原文地址:https://www.cnblogs.com/yueminghai/p/13517479.html
Copyright © 2011-2022 走看看