Centos

如何在 Areca 1880i 硬體 RAID 卡上啟動 CentOS 6.0 安裝

  • January 10, 2012

我有一個帶有這個硬體的伺服器

  • 兩個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 文件中包含zerombror 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

引用自:https://serverfault.com/questions/298957