歡迎您光臨本站 註冊首頁

DELL伺服器使用DTK+PXE全自動創建RAID

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

DELL伺服器使用DTK+PXE全自動創建RAID

對於公司的運維工作,我希望儘可能做到運維自動化,而部署系統作為日常工作的常見操作尤其需要自動化。
對於PXE安裝,Kickstart等技術之前也有寫過文章,但那些都是要在系統做好了RAID,配置好了BIOS參數之後再做的工作。
今天,來聊聊如何把做RAID,配置BIOS也自動化。
因為我公司里用的伺服器DELL的占絕大多數,因此就說說DELL的伺服器。

Dell提供了一個工具叫Dell Deployment Toolkit,也就是隨伺服器帶來的那個光碟。
這個光碟中包含了Dell的各種驅動和syscfg、raidcfg工具。這些工具可以用腳本執行。
用這個光碟引導系統,可以直接進行BIOS配置和創建RAID等操作。

下面說說如何把DTK整合進PXE環境中。

1.從ftp://ftp.us.dell.com/sysman/下載最新版的DTK Linux ISO。

2.掛載DTK Linux ISO,複製isolinux/SA.1和isolinux/SA.2 到TFTP目錄中。
其實SA.1就是Linux kernel,而SA.2則是initrd文件。
假設我們把SA.1和SA.2複製到/tftpboot/pxelinux/dtk目錄中

3.編輯pxelinux.cfg文件,增加如下條目:
default dtk
prompt 0
label dtk
      kernel dtk/SA.1
      append initrd=dtk/SA.2 ramdisk_size=65536

DTK Linux環境會自動使用eth0,並使用DHCP獲取地址,然後開啟一個沒有root密碼的sshd server.
我們可以直接ssh到這個系統中,執行一些操作,當然更重要的是可以寫腳本。

4.自動創建RAID
我們可以使用TFTP,NFS等方式共享一個自動化腳本,例如:
我們在/tftpboot/pxelinux/dtk創建raid0.sh,內容如下:

#!/bin/bash
cat > /tmp/raid0.ini <<EOF

controllerid=0
;size=278784
raid=0
readpolicy=nra
writepolicy=wt
stripesize=64
cachepolicy=
adisk=0:0:1,0:1:1
EOF

raidcfg -ctrl -c=0 -ac=rst
raidcfg -i=/tmp/raid0.ini
shutdown

上邊腳本首先使用raidcfg命令reset控制器,刪除所有原有RAID配置,將磁碟置為"JBOD"模式。
然後再次調用raidcfg,在2塊磁碟上創建RAID0。(以上腳本在R610上通過測試,RAID卡為板載的SAS6i)
創建好RAID之後,我們讓系統關機(如果寫reboot則重啟)。

然後我們需要修改pxelinux.cfg中的配置,改為如下:

default dtk
prompt 0
label dtk
      kernel dtk/SA.1
      append initrd=dtk/SA.2 ramdisk_size=65536 share_type=tftp share_location=dtk share_script=raid0.sh tftp_ip=10.10.128.12

5.自動升級BIOS

創建/tftpboot/pxelinux/dtk/files/目錄,將R610最新的BIOS文件複製到這個目錄中,創建一個名為r610.bios的鏈接文件。

創建/tftpboot/pxelinux/dtk/r610bios.sh,腳本內容如下:

#!/bin/bash
tftp -g -r dtk/files/r610.bios -l bios.sh 10.10.128.15
sh bios.sh -q
sleep 3600
reboot

然後修改pxelinux.cfg,內容如下:

default dtk
prompt 0
label dtk
      kernel dtk/SA.1
      append initrd=dtk/SA.2 ramdisk_size=65536 share_type=tftp share_location=dtk share_script=r610bios.sh tftp_ip=10.10.128.12

需要注意的是,這個tftp其實是busybox,所以和我們常用的tftp參數稍有不同,busybox裡面的解釋如下:

Usage: tftp ... HOST
Transfer a file from/to tftp server using "octet" mode
Options:
        -l FILE   Local FILE
        -r FILE   Remote FILE
        -g        Get file
        -p        Put file
        -b SIZE   Transfer blocks of SIZE octets

附錄:
raidcfg命令可分為以下幾類:

1.輸出當前信息類

#列出所有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.

2.vdisk操作類

#創建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="">

3.hotspare類

#分配全局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="">

4.RAID控制器類

#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="">

5.通用參數,除了[-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

資源:
Dell OpenManage Systems Management Tools 主頁
http://en.community.dell.com/techcenter/systems-management/w/wiki/1757.dell-openmanage-systems-management-tools.aspx
DTK命令行參考手冊
http://support.dell.com/support/edocs/software/dtk/4_1/cli/pdf/DTKCLIMR.pdf

參考文檔:
https://www.aglt2.org/wiki/AGLT2/DellDeploymentToolkit
http://www.symantec.com/connect/articles/how-manually-run-deployment-toolkit-tools-automation       
《解決方案》

多謝分享!:)

[火星人 ] DELL伺服器使用DTK+PXE全自動創建RAID已經有843次圍觀

http://coctec.com/docs/service/show-post-225.html