我有这个硬件的服务器
并创build了一个使用所有5个硬盘的RAID 6卷。
不幸的是,在CentOS 6.0安装映像的Linux内核中不支持Areca 1880i RAID卡。 Areca网站上提供了更新的内核模块(作为RHEL 6.0的预编译二进制文件和源代码)。
如何编写kickstart脚本来自动安装服务器上的CentOS 6.0?
更新:好消息! CentOS 6.2支持Areca 1880i。 当我通过执行“yum -y update”升级到CentOS 6.2时,新的内核原生支持Areca 1880i。 我还没有testingCentOS 6.2 kickstart安装,但是我想这也应该起作用。
在kickstart脚本的%pre部分中,我们需要运行preinstall.sh脚本,该脚本使用/ sbin / insmod加载更新后的二进制内核模块(arcmsr)。 之后,kickstart安装程序就可以访问Areca 1880i RAID卡提供给计算机的硬盘驱动器,从而可以对其进行分区和创build文件系统。 在kickstart脚本的%post部分中,我们需要运行post-install.sh脚本,该脚本将更新后的二进制内核模块安装到/ mnt / sysimage / lib / modules /中,然后运行/ sbin / mkinitrd,以便服务器将能够在安装后启动。
在Areca网页上find的预编译的内核模块打包成ZIP压缩文件
http://www.areca.us/support/s_linux/driver/rhel/6_0.zip
但在Centos 6.0 kickstart安装的%pre部分中unzip命令不可用。 因此,我们提前解压档案。
$ mkdir /tmp/a $ cd /tmp/a $ wget --quiet http://www.areca.us/support/s_linux/driver/rhel/6_0.zip $ unzip 6_0.zip Archive: 6_0.zip creating: 6_0/ inflating: 6_0/install.zip inflating: 6_0/README.txt $ mkdir /tmp/b $ cd /tmp/b $ unzip /tmp/a/6_0/install.zip Archive: /tmp/a/6_0/install.zip inflating: driver.img $ ls -l driver.img -rw-r--r-- 1 erik users 1474560 2011-05-09 10:48 driver.img
现在把文件driver.img放在一些内部的web服务器上。 在这个例子中,这个文件将会是http://www.example.com/driver.img,但是你需要在你自己的kickstart脚本中调整这个URL。 这是你在%pre部分写的
%pre --log=/tmp/kspre.log #!/bin/sh cd /tmp wget http://example.com/driver.img mkdir /arcmsr mount -o loop driver.img /arcmsr cd /arcmsr sh ./pre-install.sh sleep 5 dd if=/dev/zero of=/dev/sda bs=512 count=64 parted -s /dev/sda mklabel gpt %end
sleep 5
是必要的,否则parted -s /dev/sda mklabel gpt
会这样失败
# parted -s /dev/sda mklabel gpt Error: Can't have the end before the start! (start sector=34 length=-3) Error: Can't have overlapping partitions. Error: Can't have overlapping partitions.
我们需要创build一个GUID分区表(GPT),因为RAID卡将RAID 6卷作为一个9 Tb硬盘驱动器提供给计算机。 9 Tb大于正常分区表可以处理的最大2 Tb。
使用GPT的想法来自Joshua Daniel Franklin的邮件列表 。
在kickstart脚本的%post部分,我们首先将一些安装文件复制到/ mnt / sysimage中,因为当我们稍后在chroot之后运行命令进入/ mnt / sysimage时,它们需要可用
%post --nochroot --log=/mnt/sysimage/root/ks-post1.log cp -r /tmp /mnt/sysimage/root/tmp mkdir /mnt/sysimage/tmp/arcmsr cp -r /arcmsr/* /mnt/sysimage/tmp/arcmsr %end %post --log=/root/ks-post2.log cd /tmp/arcmsr sh ./post-install.sh %end
请注意,我们需要有两个%post部分,第一个没有chroot,第二个没有chroot到/ mnt / sysimage。 首先,我尝试在非chroot%post部分中使用/usr/sbin/chroot /mnt/sysimage
但是这种方法无效。
服务器的分区scheme可能如下所示
bootloader --location=mbr clearpart --linux --drives=sda part /boot --fstype=ext4 --size=8192 part pv.01 --grow --size=1 volgroup vg0 --pesize=4096 pv.01 logvol swap --name=lv_swap --vgname=vg0 --size=65536 logvol / --fstype=ext4 --name=lv0 --vgname=vg0 --grow --size=1024
Joshua Daniel Franklin发布的邮件列表表示,应该避免使用zerombr
或clearpart --all
在kickstart文件中,否则我们在%pre部分创build的GPT将被覆盖。
安装完成后,服务器看起来像这样
[user@server ~]$ cat /proc/meminfo |grep SwapTotal SwapTotal: 67108856 kB [user@server ~]$ df -m Filesystem 1M-blocks Used Available Use% Mounted on /dev/mapper/vg0-lv0 8256978 828 7836720 1% / tmpfs 12012 0 12012 0% /dev/shm /dev/sda1 8064 194 7460 3% /boot