Sunday, May 8, 2016

RHEL 6 fails to load the NIC firmware driver at boot time

這是筆者早前遇到奇怪問題。一台RHEL 6 sever重啟完之後無緣無故少了其中一個NIC。

這是error log:

bnx2: Broadcom NetXtreme II Gigabit Ethernet Driver bnx2 v2.1.11 (July 20, 2011)
bnx2 0000:04:00.0: PCI INT A -> GSI 28 (level, low) -> IRQ 28
bnx2 0000:04:00.0: firmware: requesting bnx2/bnx2-mips-09-6.2.1a.fw
bnx2: Can't load firmware file "bnx2/bnx2-mips-09-6.2.1a.fw"

google了一下發現原來是memory fragmentation問題。原因是OS load scsi module的時候需要把所有lun寫入memory,如果lun太多,剩下的contiguous space已經不足以initialize所有NIC driver




解決辦法:
-備份/etc/dracut.conf
-在/etc/dracut.conf加入 add_driver +="bnx2"
-備份initramfs:
     cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.$(date +%m-%d-%H%M%S).bak
-然後打command: dracut -f
-reboot server,然後檢查是不是所有NIC driver都成功載入

reference:
https://access.redhat.com/solutions/69540





Monday, May 2, 2016

怎樣搬server  — data center migration(3)
上兩篇講的都是懶人包,今日入戲肉,network cloning

筆者今次介紹的是用dump and restore的方法clone機。
1. 在新server插入兩個或以上硬盤(HDD),然後設定RAID1
2. boot機,import ISO。筆者推薦CentOS,它比JetOS更適用不同的hardware model
3. 根據已有的network info設定network,因為以後還要改config,就算server會有多於一個IP address的話,暫時起一個就夠。
4. start ssh daemon,disable iptable(如有)
5. 在舊server擷取partition table,然後scp到新server
     sfdisk -d /dev/sda > part_table
6. 在新server按照partition table進行格式化
   sfdisk /dev/sda < part_table
7. 從舊server scp /etc/fstab 到新server
8. 建立臨時mount point /sysroot
8. 按照fstab在新server建立file systems,然後mount在/sysroot下面
9. 用dump restore command逐一把file system clone到新server:
   E.G
   mkfs -t ext3 /dev/sda1
   mount /dev/sda1 /sysroot
   cd /sysroot
   ssh root@NewServer "dump -0 -f - /" | restore -rf-
    *這裡注意要先在新server enable direct root login
10. clone完所有file system之後安裝grub
   grub-install --root-directory=/sysroot --recheck /dev/sda 
11. 基本上clone的部分已經完成,接著記得改IP,netmask和gateway,
     -  更改/etc/sysconfig/network(SuSE)folder內ifcfg file的IP,netmask。RHEL的話則是/etc/sysconfig/network-scripts
     -  有bonding的話就注意network port的mapping。如eth0/3 map to bond0,eth1/2 map to bond1
     -更改routing table的gateway。RHEL更要修改/etc/sysconfig/network
12. 最後處理boot menu,/etc/fstab和chkconfig:
     -檢查boot menu內的(hd0,0), 確認kernel和initrd version都正確
     -如果是physical server,而/etc/fstab內又沒有用partition label的話,則要update harddisk的uuid
     -完成上面步驟可以reboot一次
     -reboot之後檢查chkconfig,看看需要auto start的daemon是否仍然存在
         chkconfig --list

             


                                                             怎樣搬server (完)