Monday 16 April 2012

A few Bumps On The Road

As most people who set out to do anything will know, things never turn out exactly according to plan.

WARNING
this post gets fairly deep into computer science subjects and may not be interesting to all audiences. 


In this case, we ran into problems getting the McMyAdmin panel working on CentOS 6.2 64 bit. Why is 64 bit important? Because according to reports online, it works perfectly with 32 bit - that might not seem like a big difference, except that normally 32 bit OS's can't handle more than 4gb of ram. Problem? Our server has 16gb, four times more than the standard 32 bit build can handle. Which means that if we want to make use of all 16gb, we will need a special kernel with a special option enabled, and that special option is PAE or physical address extension. basically, it uses two 32 bit words and joins them to address memory and storage in 64 bit.

So, the solution we have come up with is to wipe the drives clean and install CentOS 6.2 32 bit. Yes, it does slightly delay the server (very slightly) but in the long run, this change will actually make setting up the server easier since it makes it more compatible.

What else could we have done? We could have run a 32 bit copy of the OS in a virtual machine such as XEN or KVM - but it would have had reduced performance. We could have chosen a different 64 bit OS to use, but they all seemed to have similar issues, so it really would have just wasted our time and you would have had to wait longer before the server got delivered (not THAT much longer, but we sense that you guys are eager to get playing!)

One other thing that we would like to mention while we still have your attention, is that since Joel and I both have exams coming up, we won't be posting quite as much or working on the server quite as much in the next two weeks. We will try to keep you updated as we go along.

Saturday 14 April 2012

Meet The Operating System


For this server, we chose CentOS 6.2 - a version of Linux. We specifically chose CentOS for a few different reasons. We have used it before for other servers and found it to be easy to set up, easy to add programs (and remove them - even remotely), it was very slim on resources (it only uses 400mb of ram after first boot, before the Minecraft server is started), it's very fast and very reliable. CentOS is very secure because of it's built in firewall, permissions systems, intrusion detection systems, and it's Kernel. In simple terms, CentOS was the right choice, it is Open source, and it was free of charge.

Kienan's main desktop is based on Fedora, which uses the same packages and tools for making programs, which makes developing updates and testing changes very easy for us since we already have the development infrastructure in place and ready to go.

One caveat is we knew we would have to install extra repos for our automatic updates to work (which will be using cron to schedule updates and reboots nightly) - specifically the rpmfusion repos. In order for that to work, we had to first enable EPEL from the official CentOS repos.

More information to come! Comment below with any questions you have!

Friday 13 April 2012

Configuring the server

After the hardware is all assembled, the next step is to configure the BIOS - or in this instance (because the board is one of the newer Intel boards) the UEFI firmware. Since our setup uses the two SSD's in a RAID1 configuration, part of the UEFI configuration is setting up the RAID array. We decided to use RAID1 because it offers data redundancy and guards against catastrophic hardware failure - basically, if one of the drives goes down, the server will continue to run - as long as the other drive continues to operate. We are using SSD's in the build because they are more resistant to failure, much better performing, and allow us to have very fast boot/login/shutdown times to minimize any downtime for updates (which would be performed at night when almost nobody would be on the server). SSD's also happen to be very shock tolerant. Basically the whole server could be dropped off a shelf while it's running without any data loss - and with long enough cables, without any interruption in services.

We set up the server to not configure any unnecessary components. In this case, the on board High Definition audio is not really necessary, but it takes up time in the boot sequence - which is why it was disabled. We optimized the available RAM by turning the amount of video memory for the onboard Intel HD 3000 video down to 128mb. If this server was also to be used as a media center, we would have left it at 1gb, but most servers have 8mb of video memory or less (most servers don't even have monitors hooked up to them).

Many of the other settings were left as they were, but the one other setting we changed was a special fast-boot setting that also happened to increase the security of the server many times over. This specific setting both disabled the ability to boot the server from USB keys (which would permit tampering with the server) and it also makes the server boot silently (no boot logo or messages displayed during boot) which makes BIOS tampering more difficult while allowing the server to boot much quicker.

That's all for this post, but expect more soon as we set up and configure the server. Next up: installing CentOS

Hello world!

In true programmer fashion, we are kicking off the new blog with an obligatory 'hello world' post.
follow us here and on twitter (@EduCrafting) as we set up a Minecraft server!

Pictures of the build can be seen on twitter, and we hope to have them posted here soon as well. We'll have some info about the software configuration in a few hours.