基于PXE自动配置RAID方法

基于PXE自动配置RAID方法,第1张

实现原理:

我们要在内存中运行一个橘源小的内核系统,并检测到raid,然后对raid进行配置,我们使用了基于centos6.5的内核和initrd.img(initrd.img本身是一个小的内存中运行的系统),但这个小系统本身带的工具太少,需要我们加入MegaCli64命令,以及用到的shell命令,定制一个符合我们要求的小系统,并重新打包。

由于我们需要在正式安装前配置raid,所以我们利用ks文件中的%pre执行一些检测和配置工作,然后直接重启就OK了。

1. 环境准备

a. 正常安装的centos6.5一台

b. 下载并安装megacli工具

ftp://rpmfind.net/linux/Mandriva/devel/cooker/x86_64/media/non-free/release/megacli-8.02.21-1-mdv2012.0.x86_64.rpm

c. 安装后在目录/opt/MegaRAID/MegaCli/三个文件

libstorelibir-2.so.14.07-0 MegaCli MegaCli64

2. 小系统制作

a. 复制解压initrd.img

mount centos6.5.iso /mnt -o loop

mkdir /root/test

cp /mnt/isolinux/initrd.img /root/test/

cd /root/test

xz -dc initrd.img | cpio –id

解压后如下所示:

上述是在ubuntu系统中解压的,最好是在centos中进行,方便后面加入命令

b. 加入自定义的包

cp -r /opt ./ #加入MegaCli64工具

此缓团时,Megacli64工具还不能用,因为在小系统中默认很多依赖包都没有

我们通过ldd查看MegaCLi64依赖的包(有几个缺少的),如下:

root@ubuntu:~/test# ldd opt/MegaRAID/MegaCli/MegaCli64

linux-vdso.so.1 =>(0x00007ffdaffd1000)

libpthread.so.0 =>/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f21f5f26000)

libncurses.so.5 =>/lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f21f5d03000)

libdl.so.2 =>/lib/x86_64-linux-gnu/libdl.so.2 (0x00007f21f5aff000)

libstdc++.so.6 =>/usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f21f57fb000)

libm.so.6 =>/lib/x86_64-linux-gnu/libm.so.6 (0x00007f21f54f5000)

libgcc_s.so.1 =>/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f21f52df000)

libc.so.6 =>/lib/x86_64-linux-gnu/libc.so.6 (0x00007f21f4f1a000)

/lib64/ld-linux-x86-64.so.2 (0x00007f21f6144000)

libtinfo.so.5 =>/lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f21f4cf1000)

这时我们要从正常安装的centos6.5的系统中复制上述包到小系统的相应目录中。

c. 加入特定的shell命令

由于刚解压的小系统中缺少很多shell命令,所以也需要加入里面,以curl为例

首先,在正常安装的centos6.5系统中找到curl命令(/usr/bin/curl)扰伍橘,将该命令复制到小系统中的目录中,即/root/test/usr/bin/,并给预执行权限

chmod +x /root/test/usr/bin/curl

根据上述方法我们依次加了head、cp、wc、uniq等命令

d. 打包小系统

find . |cpio -o -H newc>initrd

lzma initrd initrd.lzma

mv initrd.lzma initrd.img

然后将打包好的initrd.img放入PXE的启动文件所在目录中,这里是放在了/var/lib/tftpboot/centos6u5/目录中

3. 配置ks文件

langen_US

keyboardus

timezoneAsia/Shanghai

rootpw--iscrypted $1$bzMRSch3$e2iTZ.7IuuONNJcXLq2jy1

selinux--disabled

reboot

#text

cmdline

install

zerombryes

auth --useshadow --enablemd5

firewall--enabled --port=22:tcp

skipx

url --urlhttp://10.1.15.250/Centos6u5/

clearpart--all --initlabel

bootloader--location=mbr

autopart

logging--host=10.1.15.250 --level=debug

%packages

@core

%pre --interpreter /bin/sh --log=/root/my-pre-log

exportPATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

echo"-------------------"

ln -s -T /mnt/runtime/opt /opt

mkdir /newroot

mount tmpfs /newroot -t tmpfs

cp -a /mnt/runtime/* /newroot/

ls /mnt/runtime/

mount /proc /newroot/proc -o bind

mount /dev /newroot/dev -o bind

mount /sys /newroot/sys -o bind

# chroot to runipmitool/hpasmcli/omreport

chroot /newroot

/opt/MegaRAID/MegaCli/MegaCli64-DiscardPreservedCache -Lall -aALL

/opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign-Clear -aALL

/opt/MegaRAID/MegaCli/MegaCli64-CfgLdDel -LALL -Force -aALL

/opt/MegaRAID/MegaCli/MegaCli64-CfgClr -aALL

id=`/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL |grep 'Enclosure Device ID' |uniq | awk '{print $4}'`

/opt/MegaRAID/MegaCli/MegaCli64-CfgSpanAdd -r10 -Array0[32:0,32:1] -Array1[32:2,32:3] -Array2[32:4,32:5]-Array3[32:6,32:7] -strpsz512 -a0 ||sleep 60

/opt/MegaRAID/MegaCli/MegaCli64-LDSetProp WB -LALL -aALL

/opt/MegaRAID/MegaCli/MegaCli64-LDSetProp ADRA -LALL -aALL

echo"---------------------"

reboot

大功告成!!!!PXE测试!!!

说明:

基于ubuntu的系统使用了debain-installer,其中最关键的检测和安装过程由一个大的二进制程序main-menu进行,无法进行hook,所以本场景不适用;

Rhel/Centos6.2之前的initrd.img打包方式不同,请注意,由于dell x20 、浪潮、联想最新的服务器最低只支持6.5,所以建议使用高版本系统制作配置raid的系统。

4. Raid缓存参数说明

建议设置:

WriteBack,ReadAdaptive, Direct, No Write Cache if bad BBU

写回(默认),自适应读(需要修改),读请求不缓存(默认),电池有问题时自动切到非写回模式(默认)

自适应读修改的命令:/opt/MegaRAID/MegaCli/MegaCli64-LDSetProp ADRA -LALL -aALL

————————————————

版权声明:本文为CSDN博主「枫华0925」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/lizhihua0925/article/details/53198483

PXE(preboot execute environment)预启动执行环境,主要实现网络引导技术。

下来我们来看看如何配置:

安装需要的组件:

yum install dhcp tftp-server tftp vsftpd syslinux -y

配置DHCP服务:

复制配置文件模版

cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcp/dhcpd.conf

编辑配置文件 /etc/dhcp/dhcpd.conf

option domain-name "tuchao.com"

option domain-name-servers 192.168.1.201

default-lease-time 43200//默认最少租用时间

max-lease-time 86400  //默认最长租用时间

# Use this to send dhcp log messages to a different log file (you also

# have to hack syslog.conf to complete the redirection).

log-facility local7

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.10 192.168.1.110 //定义地址池

option routers 192.168.1.1      //定义网关

}

next-server 192.168.1.201  ////指向tftp服务器

filename="pxelinux.0"   //tftp根目录的相对路径

配置完成后保存,启动dhcp服务。

/etc/init.d/dhcpd start

配置tftp服务器编辑配置文件 vim /etc/xinetd.d/tftp

chkconfig tftp on

service xinetd start

复制引导文件到tftp目录下,这个引导文件由syslinux提供

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

复制需要的引导文件到tftp提供服务的目录下。咐陵困

cp /var/ftp/pub/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

cp /var/ftp/pub/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/

mkdir /var/lib/tftpboot/pxelinux.cfg

cp /var/ftp/pub/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

给default文件赋予写权限,然后编辑。

chmod +w  /var/lib/tftpboot/pxelinux.cfg/default

vim /var/lib/tftpboot/pxelinux.cfg/default

使用system-config-kickstart工具制作一个ks文件,保存至指定的位置。(略)

启动vsftpd服务 //提供安装源

启动xinetd   //提供PXE引导

启动dncpd   //提衡念供动态获取IP,并告知客户端tftp服务器位置。

开启汪团一台虚拟机,设置从网卡启动。

网络引导,一键自动化安装,成功实现。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12320519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存