Tech4Him – Technology with Integrity

A Christian technology chaos wrangler and his thoughts

Ubuntu 6.06 Server LTS – Adding support for SMP

Posted by admin On January - 8 - 2008

Now that we have had our server working well following our previous instructions, it is now time to tweak some more. Actually, many folks probably thinks this is more thank a tweak and really a necessity. I’d agree with that. Why? Well you just purchased a dual, quad core Xeon server to be fast. Fast is alot of things but certainly processing power is one of those key pieces.

Go to the shell prompt on your server and run the following command:

cat /proc/cpuinfo | grep ‘^processor’ | wc -l

Now, what number did you get back. Was it 1? Well the number you get back from that command is the number or processors the system currently sees. Yes, that’s right. In our example here, our server was only seeing a single core out of a possibility of 8 (dual, quad core, xeon processors). So you’re telling me that we are wasting 7/8 of our processing power? Essentially, YES!

Well don’t fear. There is a relatively simple way to fix this. Now, there are a few caveats but we’ll show you how we did it.

NOTE: If you compiled any source for any applications since your initial installation of Ubuntu, be prepared to re-compile. We are about to change the kernel and therefore your going to need to recompile against that new kernel.

From a shell prompt we need to be sure our repository information is up to date so…:

sudo apt-get update

Next, let’s get the 686 package which will allow our system to see more than the single processor as it does in the 386 version.

sudo apt-get install linux-686

Great! That was easy. You may have noticed that the installation made changes to the /boot/grub/menu.lst file. If you recalled from our previous article, this is the file that defines how grub will boot your system. With Ubuntu 6.06Server LTS and the PERC5/i controller in our box we had to make some modifications to that menu.lst file before. Well, unfortunately our work was just overwritten by the installation of the linux-686 package.

No problem, we’ll just update it again.

sudo vi /boot/grub/menu.lst

Now in this file towards the bottom are the boot menu options just like before. Change to "root" entries from something like hd(4,0) to hd(0,0). You are just changing that 4 to a 0 in each of the 4-6 menu option entries.

Next, the 686 kernel seems to correct the issue of how the raid array is detected and therefore named. Still in the menu.lst file, find the "kernel" entries for each menu option. Notice that there is something like root=/dev/sde1 in the line. Well, now the array is seen as sda not sde. So change all the sde1 pieces to sda1.

/boot/vmlinuz-2.6.15-29-686 root=/dev/sde1 ro quiet splash

is changed to

/boot/vmlinuz-2.6.15-29-686 root=/dev/sda1 ro quiet splash

Be sure you make those changes to all the entrie and then save your work.

Now all you have to do is reboot the server, but, be sure to do it form the console because you won’t have network connectivity when you reboot if you are on a Dell Poweredge 2950 like we are.

sudo shutdown -r now

Okay, after the reboot, log into your server at the console.

sudo /etc/init.d/networking restart

This should get your networking going again. There is an issue with the bnx2 / Broadcom driver in the 686 kernel that is odd but a simple restart of networking resolves the issue. This is how we came up with this temporary workaround until we find the real solution.

sudo vi /etc/init.d/rc

Now in this rc file, near the end add the following line which will force the networking restart after reboot.

# temporary resolution to networking issue under 686 kernel
/etc/init.d/networking restart

Then save your file.

That’s it. Now try that processor count again. Hmmmm…. we actually see 8 processors now. Now we are being good stewards of what has been provided.

Popularity: 5% [?]

pedge_2950_3_overview1Yesterday we finished the installation of a new server. There has
been alot of discussion about how to install Ubuntu 6.06 onto a Dell
PowerEdge 2950 server with a PERC 5 RAID controller. Really the
discussion has been about support for the PERC 5 controller and linux
kernel’s earlier than 2.6.17. The megaraid_sas driver is needed but not properly handled in Ubuntu 6.06 LTS. Read the rest of this entry »

Popularity: 5% [?]

By default, the Ubuntu installer has configured our system to get
its IP address and other network settings via DHCP. This is not what we
want so we have to change the server to have a static IP address. Edit /etc/network/interfaces and adjust it per your requirements. For this example we are using an IP address of 192.168.167.210 for this server.


Now,
there are a myriad of examples on the web and I am including a few
links to them for convenience sake in case they explain this better.
(they probably do) ;o)

vi /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo net loopback

# The primary network interface

auto eth0

iface eth0 net static

address 192.168.167.210

netmask 255.255.255.0

network 192.168.167.0

broadcast 192.168.167.255

gateway 192.168.167.1

Now, restart your network:

/etc/init.d/networking restart

Then edit /etc/hosts.
We are telling the server what names it is going to answer to and to
which IP addresses those names belong. This is somewhat analogous to
the Windows hosts file if you are familiar with Windows:

vi /etc/hosts

127.0.0.1 localhost.localdomain localhost

192.168.0.100 server1.example.com server1

# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

Now execute the following commands.

hostname
hostname -f

The results from both commands should show server1.example.com. If they do not, reboot the system:

shutdown -r now

Log back into your server and try the hostname commands again.

hostname
hostname -f

They should show server1.example.com.

Now for those links I promised:

Link 1 on cyberciti.biz
Link 2 on howtogeek.com
Link 3 on howtoforge.com

Blessings

Popularity: 5% [?]

Well, victory is ours….sort of. See our previous post.

The
long and short of it is that we ended up just removing that Promise
FastTrak TX2 controller card and placed the two drive on the built-in
motherboard controllers. Since we have some other devices we
piggybacked both drives from the same controller which is not going to
be as performance minded as put each drive on a different controller
but for this application it is fine.

I thought that I would post
some articles describing in more detail our steps and experiences in
case it may be of use to others. So here we go.

Ubuntu 6.06 Server LTS Installation with Software RAID Support

  1. Boot from the Ubuntu 6.06 LTS Bootable CD (available from here)
  2. Choose the Start Server Install Option
  3. Follow and answer the standard prompts and entries until you get to the partitioning section
  4. This
    is where we did some research and manually created 4 partitions, 2 on
    each drive in order to create two RAID 1 arrays. The best explanation
    of this that we have found thus far is here.
    We deviated a bit from this article however. Our primary difference was
    in the changing of the partition sizes with the largest being the root
    filesystem and the smaller being the swap space.

    1. So
      here is our new physical partition view. (Be sure the root "/" mount
      points are set to "bootable" or you won’t be able to boot into your
      newly install Ubuntu Server.)

      Drive Partition Type Mounted on Size
      Drive0 /dev/hda1 Primary / 70GB
      /dev/hda2 Primary (swap area) 10 GB
      Drive1 /dev/hdb1 Primary / 70 GB
      /dev/hdb2 Primary (swap area) 10 GB
    2. We then used the above physical partitions to create these two Multidisk devices (arrays).
      RAID device Type Mounted on Size Members
      /dev/md0 RAID1
      mirror
      / 70 GB /dev/hda1
      /dev/hdb1
      /dev/md1 RAID1
      mirror
      (swap) 10 GB /dev/hda2
      /dev/hdb2
    3. Once
      you have the partition looking like the above, choose that you are
      finished and choose "yes" to the warning about writing these changes to
      the disks.
  5. Continue finishing out standard server installation prompts
  6. If
    you want to be sure you can boot from either of the two drives in the
    array (like if one goes out which is why you went to all this trouble
    to begin with) then you need to follow the step to get the grub loader
    install on the second disk. This is in the same article under the "Make
    Every Drive Bootable Section".

    1. Essentially boot the server CD again and choose "Rescue a broken system"
    2. Follow the system prompts until you see the "Device to use as root filesystem" prompt. STOP!
    3. Press
      Alt-F2 to go to the second console (TTY2) and hit enter. Here you are
      going to enter the follow command to mount the second drive

      mount /dev/md0 /mnt
      chroot /mnt
      grub
      device (hd0) /dev/sda
      root (hd0,0)
      setup (hd0)
      device (hd1) /dev/sdb
      root (hd1,0)
      setup (hd1)
      quit

    4. Now
      reboot your server. Don’t know how??? "shutdown -r now" (This tells the
      system shutdown. The "-r" says restart after the shutdown and the "now"
      means do it now instead of in 10 minutes or whatever else you might
      want to include there.)
  7. Login as administrator or whatever you choose for the username and password in the installation sequence.
  8. Perform
    "sudo apt-get update" to have apt-get update the list of packages and
    the "sudo apt-get upgrade" to ensure latest versions of all packages
    are applied.
  9. Finally I always like
    to install an SSH server right away so I can finish the system
    configuration form the comfort of my desk, a couch or some other comfy
    place. So run the "sudo apt-get install openssh-server" command.

A big thanks to the Ubuntu community and especially to Derrick Webber whose post was the basis for our successful installation.

Now
in our future new production hardware we will further distribute the
"/" root, "/var" and "/usr" mount points to individual partitions.

Blessings

Popularity: 9% [?]

Whew….this is a bit of an enigma right now. I know I read about some potential issues with this controller card but it is what we have to use. I thought those issue were primarily around driver support and bit write issues. What I did not expect was the difficulty in installing Ubuntu 6.06 LTS onto a mirror array created with the controller. Perhaps this is a symptom of the “poor driver support” issue?



Others seem to have similar issues. This one with no response as of today. This one without the expertise to resolve. A hopeful possibility is this one which I will try next if need be.



When the installer gets to the partitioner section instead of seeing a single array to install on as I would expect, it see’s the two physical drives. Of course that isn’t really going to work now is it. (or….maybe I am missing something fundamental with Linux and hardware raid controllers?)



So, now I am starting from scratch since this is a temporary production rebuild. As I write this I deleted the old array, created a new mirror RAID 1 array from the two disks, select one as the primary image and the controller is copying the image. Once that finishes, I will attempt to do one more installation of Ubuntu Server 6.06 LTS and see what happens.



If anyone has any ideas or thoughts, I welcome them.



UPDATE:



Finally realized that this discontinued controller is the cause of the issue and since we have to use the hardware available for this project, decided to go with software raid. Really not much performance difference since the controller wasn’t offloading the array needs anyhow.



Found this post describing how to perform the manually partitioning for the installation although I disagree with a 10 GB root volume and a 100+ GB swap volume. So I flipped them around as we are going to be using this machine as a VMWare Server host. (Small installation).



Worked like a charm and I’m ready to start updating the system and getting the VMWare server installation cooking. We’ve already done this numerous times in our test environment. Too bad we didn’t have this controller card in the test environment to had spotted this issue sooner. No harm, no foul. Time to move on.



Blessings!

Popularity: 27% [?]