My fileserver recently starting locking up and crashing – with the original CPU and MB being around 5 years old now, it was due for a replacement.
There had been previous problems with that motherboard which have developed over the years – the serial ports had died many years ago, and in order to keep the system stable and to prevent reboots, I had to run the RAM overclocked by +0.1V – if run at normal voltage, it would randomly hang.
About a year ago I upgraded it with 4x 500GB IDE disks and another 2GB of RAM to boost it to 3GB to act as my home file and Xen server.
I decided to keep the existing disks and case, but to replace the motherboard, CPU and RAM with new equipment. To better suit my growing needs I also wanted this box to be a full blown Xen server running backup and development VMs for my company.
The power supply in the server had also recently failed, and I was using a cheap generic replacement supply, so replaced this with a new 500W Vantec.
Upgrades ended up being:
- AMD Phenom II X4 810 – That’s 4 cores at 2.6Ghz with a total cache of 6MB!
- 6GB DDR 3 1333 FSB RAM (Kingston)
- ASUS M4A7BT-E Motherboard
- 500W Vantec PSU
- (second hand) Silicon Image IDE PCI controller card
The upgrades went smoothly thanks to the ease of the Lian Li case – these cases are a bit more pricy, but fantastic to work with, perfectly formed aluminium, sliding out motherboard try and removable drive cages, with everything using a single size of thumbscrew.
REBUILDING INITRD
The most complex part was having to fix the CentOS kernel – whilst the IDE data array was fine, the OS is stored on 2x RAID 1 SATA drives. Due to the fact I had completely changed SATA controllers, Linux was unable to boot since the modules were missing from initrd.
To fix this, you need to re-create the initrd file that the kernel uses using the redhat mkinitrd tool. Personally, I wish Redhat would simply stick *all* supported disk drivers into the initrd file to save me from this hassle, but there might be some technical reason for not doing so…
The steps to take are:
1. Boot off a live CD and chroot to your install
2. Edit /etc/modules.conf to include your new driver (in my case ahci)
3. Delete (or move) the existing initrd in /boot
4. Mount /proc and /sys.
5. Run /sbin/start_udev to populate /dev
6. Execute mkinitrd -v /boot/initrd-MYKERNEL.img MYKERNEL
7. Reboot
We need to mount the special filesystems and create the device structure since mkinitrd uses these for detecting what drivers to include in the initrd file.
CENTOS 5.3 WITH ASUS M4A7BT-E
Once booted everything worked except for the ethernet controller – this particular motherboard requires the atl1e driver, which is now in the mainstream kernel.
For users of older kernels, you can download the source for the module here and build it for your kernel.
Since this is a server, I ran no tests with the onboard video or sound.
PERFORMANCE
I’m currently re-organising a lot of the data and services on this system, moving all services off the host server into virtual machines and setting up LVM on the array, once this is done planning to run some performance tests to see what I can get this powerful new box to do. :-)
Also working on getting another IDE controller – currently I have a two-controller card, which means I have two IDE drives on each channel, which degrades performance since the drives have to take turns when transferring data.
Once I get another controller, I will be giving each IDE disk a dedicated channel and will do some before and after performance tests.