如何在 Areca 1880i 硬體 RAID 卡上啟動 CentOS 6.0 安裝
我有一個帶有這個硬體的伺服器
- 兩個Intel Xeon E5620 CPU
- Areca 1880i 8 埠 SAS RAID PCIe 512MB 記憶體
- 檳榔電池備份模組
- 5 件日立 Deskstar 7K3000 HDS723030ALA640 64MB 3TB
並創建了一個使用所有 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。雖然我還沒有測試過 CentOS 6.2 kickstart 安裝,但我想這也應該可以。
在 kickstart 腳本的**%pre部分,我們需要執行pre-install.sh腳本,它使用 /sbin/insmod 載入更新的二進制核心模組 (arcmsr)。之後,kickstart 安裝可以訪問 Areca 1880i RAID 卡提供給電腦的硬碟驅動器,因此可以在其上分區和創建文件系統。在 kickstart 腳本的%post部分,我們需要執行post-install.sh**腳本,它將更新的二進制核心模組安裝到 /mnt/sysimage/lib/modules/ 中,然後執行 /sbin/mkinitrd 以便伺服器安裝後就可以開機了。
在 Areca 網頁上找到的預編譯核心模組打包為 ZIP 存檔
http://www.areca.us/support/s_linux/driver/rhel/6_0.zip
但unzip命令在 Centos 6.0 kickstart 安裝的****%pre部分不可用。因此我們提前解壓存檔。
$ 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.
我們需要創建一個 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
orclearpart --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