我有一台配备此硬件的服务器
- 二英特尔至强 E5620CPU
- Areca 1880i 8 端口 SAS RAID PCIe 512MB 缓存
- Areca 电池备用模块
- 5 件日立 Deskstar 7K3000 HDS723030ALA640 64MB 3TB
并创建了一个利用所有 5 个硬盘的 RAID 6 卷。
不幸的是,不支持槟榔 1880iCentOS 6.0 安装映像上的 Linux 内核中的 RAID 卡。不过,Areca 网站上提供了更新的内核模块(既有 RHEL 6.0 的预编译二进制文件,也有源代码)。
如何编写 kickstart 脚本来自动在服务器上安装 CentOS 6.0?
更新:好消息!CentOS 6.2 支持 Areca 1880i。当我通过执行“yum -y update”升级到 CentOS 6.2 时,新内核对 Areca 1880i 具有原生支持。不过,我还没有测试过 CentOS 6.2 kickstart 安装,但我想那应该也可以。
答案1
在一个%前我们需要运行 kickstart 脚本的部分预安装脚本使用 /sbin/insmod 加载更新的二进制内核模块 (arcmsr)。之后,kickstart 安装可以访问 Areca 1880i RAID 卡提供给计算机的硬盘,从而可以在其上分区和创建文件系统。在%邮政我们需要运行 kickstart 脚本的部分安装后将更新的二进制内核模块安装到 /mnt/sysimage/lib/modules/ 中的脚本,然后运行 /sbin/mkinitrd,以便服务器能够在安装后启动。
Areca 网页上的预编译内核模块被打包为 ZIP 存档
http://www.areca.us/support/s_linux/driver/rhel/6_0.zip
但解压缩命令在%前Centos 6.0 kickstart 安装的一部分。因此我们提前解压该档案。
$ 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
现在把文件驱动程序映像在某些内部 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.
我们需要创建一个 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。首先,我尝试/usr/sbin/chroot /mnt/sysimage
进入非 chroot %post 部分,但没有成功。
服务器的分区方案可能如下所示
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 的邮件列表帖子说应该避免在 kickstart 文件中使用zerombr
或clearpart --all
,否则我们在 %pre 部分创建的 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