使用 DTK 自动批量建立 RAID

一直想能否通过自动化的方式完成 RAID 的配置以及 BIOS 的升级,g 一下发现果真有一个叫 DTK(dell openmanage deployment toolkit) 的套件。他包含了 raidcfg 这个工具,使用他就可以自动化的完成 RAID 卡的设置,以及 syscfg 这个用来修改 BIOS 的工具。
之前我们几百台机器上的 raid 全部是人肉操作,一台机器从启动到配置完成关机最少 10min,非常的耗时低效。自从用了 dtk 之后,效率大大的提升。raidcfg 可以对机器上的磁盘的 raid 做增删,非常方便,适合大规模的机器部署,减少人肉操作出错的概率。
这里主要谈的是 RAID 卡的建立,因此主要涉及 raidcfg 的使用。要安装 dell 附带的这个工具有很多方式,最简单的是去 dell.com 下载。这里我们同步了 dell 的整个 deb, yum 源,因此直接通过包管理器安装 raidcfg 就可以了,包括前面说的 racadm 等都可以通过这个源安装。

接着是要去下载 dtk 这个 iso,解压:
# mount -o loop dtk_4.2_new_320_Linux.iso /mnt

在 isolinux/ 目录下会发现有 SA.1, SA.2 两个文件,file 一看分别是 kernel 和 initrd 文件,后来也证实这其实是 CentOS 6.2 定制的一个 busybox。在添加到 cobbler 的时候,使用 import 会出问题,索性直接手动添加,将 iso 的内容直接复制到 cobbler/ks_mirror/dtk_4.2-x86_64 下,然后再添加 distro 等:
# cp /mnt/* cobbler/ks_mirror/dtk_4.2-x86_64
# cobbler distro add –name=dtk_4.2 –kernel=cobbler/ks_mirror/dtk_4.2-x86_64/isolinux/SA.1 –initrd=cobbler/ks_mirror/dtk_4.2-x86_64/isolinux/SA.2
# cobbler profile add –name=dtk_4.2 –distro=dtk_4.2

到上面为止都比较顺利,接下来添加 system 需要做一些改进,跟之前一样,–name, –profile, –mac-address 等这些肯定是要添加的,–hostname, –dns-name 可以选择性的添加。最重要的是要在 –kopts 后面添加上 tftp 的相关脚本,否则需要做 raid 的机器获取不到配置文件:
# cobbler system edit –name=jaseywang –kopts="share_type=tftp share_location=/raidcfg share_script=raid10_6.sh tftp_ip=192.168.1.1"

接下来在 /vat/lib/tftpboot/raidcfg 里面加上类似 raid10_6.sh 的脚本就可以了:

# cat /var/lib/tftpboot/raidcfg/raid10_6.sh
cat > /tmp/raid10_6 <<EOF
[vdisk0]
controllerid=1
raid=10
readpolicy=ara
writepolicy=wt
stripesize=64
cachepolicy=e
adisk=0:0:1,0:1:1,0:2:1,0:3:1,0:4:1,0:5:1
EOF

echo "…………. rst all disks …………."
raidcfg -ctrl -c=1 -ac=rst
echo "………. 6 disks for raid10  ………."
raidcfg -i=/tmp/raid10_6
echo "…………… fast init ……………"
raidcfg -vd -c=1 -vd=0 -ac=fi
shutdown

raid10_6 这个文件里面的指令是怎么来的了?直接输入 raidcfg 就可以看到所有的 help 选项了,看上去很多,其实整理一下非常的简单,熟悉几个常见缩写就知道是干嘛的了:
controller -> -ctrl
action -> -ac
controllerid -> -c
adisk, pdisk -> -ad, -pd
raid -> -r
size -> -sz
stripsize -> -ssz
cachepolicy -> -cp
writepolicy -> -wp
readpolicy -rp
vdisk -> -vd

其他的直接看 help 好了。

上面的全部操作完,cobbler sync 重启。

除了通过 tftp 的方式获取到脚本之外,应该还可以通过 nfs, http 等方式获取到,不过这个这个我没实践。

最后谈下 BIOS 升级的方式,跟前面的类似,依然通过 tftp 完成:
# mkdir /var/lib/tftpboot/bios
# cp BIOS_28CG8_LN_1.6.0.BIN /var/lib/tftpboo/bios
# cat /var/lib/tftpboot/r620_bios_upgrade.sh
#!/bin/bash
tftp -g -r /bios/BIOS_28CG8_LN_1.6.0.BIN -l bios.sh 192.168.1.1
sh bios.sh -q
sleep 3600
reboot

修改 system 或者新建一个 system:
# cobbler system edit –name=jaseywang –kopts="share_type=tftp share_location=/bios share_script=r620_bios_upgrade.sh tftp_ip=192.168.1.1"

sync 一遍结束。
需要注意的是,如果不加上 -q(untended) 参数,则表示以交互式的方式进行,这明显不是我们希望的,另外,如果需要降级,在 sh 后面需要加上 -f(force) 参数,同时要配合 -q 使用。不过最后不加 reboot 命令,可以使用 -r,表示同样的意思。

ref:
https://www.aglt2.org/wiki/AGLT2/DellDeploymentToolkit

  • xiaoxiao

    接着是要去下载 dtk 这个 iso,解压:
    这个iso从哪里下载下来

    • xiaoxiao

      这两天正在研究怎么批量配置raid,看你这里讲的工具不错

    • jaseywang

      找个 servicetag,dell 官方会有对应的这台机器的所有 patch 等升级的文件,包括 dtk。

    • http://jaseywang.me/ Jasey Wang

      找个 servicetag,dell 官方会有对应的这台机器的所有 patch 等升级的文件,包括 dtk。

  • lirunwen

    使用你推荐的方法,可以从DHCP启动到DTK,但是不起作用,Raid没有做出来。

    不知可否来一篇更详细的文档。

    • jaseywang

      我那个写的应该算是比较详细的了。如果有不清楚的,可以看官方文档。http://en.community.dell.com/techcenter/systems-management/w/wiki/1772.dell-openmanage-deployment-toolkit.aspx

    • http://jaseywang.me/ Jasey Wang

      我那个写的应该算是比较详细的了。如果有不清楚的,可以看官方文档。
      http://en.community.dell.com/techcenter
      /systems-management/w/wiki/1772.dell-openmanage-deployment-toolkit.aspx

      • lirunwen

        非常感谢!目前已经可以使用cobbler+dtk配置RAID了,但是目前有个问题比较严重:
        配置完RAID后,自动重启,会反复从PXE启动。
        主要是cobbler 的–netboot-enabled选项的问题,官方文档中“ Cobbler contains a PXE boot loop prevention feature (pxe_just_once, can be enabled in /etc/cobbler/settings) that can automatically trip off this value after a system gets done installing.”
        所以cobbler只能识别到系统安装完成才禁用PXE,而使用DTK配置完RAID后并不会禁用PXE。
        请问Jasey Wang有没有出现这种现象,有没有好的解决办法呢?

        • http://jaseywang.me/ Jasey Wang

          我们不使用 cobbler 自带的这个管理,这个目前还不是很成熟。
          我们用的是 racadm,最简单的 ipmitool 也可以搞定(一次 pxe,其余是从 hdd 启动)。
          这个看我之前写的博客就好了。