We have decided to test several available distributions on our dual-opteron server (details e.g. here. One of the distributions we have chosen to test was Mandrake 10.0 Official pro AMD64.
5.10.2004 17:00 | Petr Houštěk | přečteno 29409×
Our first goal was to have minimal system with urpmi
operational
on specific (and a little exotic) disk layout. The next step we wanted to have
security updates functional, so that we could install and configure services.
First, I will describe the disk layout. We have not a hardware RAID
controller, so we use the linux software raid. We put the root partition to
the RAID-1 array created on the first partitions of two identical SCSI disks
(/dev/sda1
, /dev/sdb1
). The swap partitions follow.
Unfortunately it is not possible to put them on software RAID-1, because it
may cause a kernel deadlock (the physical memory is full, it is necessary to
swap, but to do this the MD driver needs some memory). So we use
/dev/sda2
and /dev/sdb2
for swaps.
We put /home
and /var
to special partitions.
To make backups easy and to ensure the flexibility we want to put them in the
LVM over RAID-1. So we allocate the remaining space on the SCSI disks to
partitions /dev/sda3
and /dev/sdb3
. Then we create
the RAID-1 array over them and use this array for LVM. We create one volume
group (vg0
) and inside it the logical volumes
home
and var
. We left some space in vg0
in order to create snapshots, resize existing volumes (if needed), etc. The
third disk in the system is a big IDE disk intended for the backups and
storage of large and rarely used data.
Let's see how this layout can be realized in Mandrake 10.0.
You can get Mandrake 10.0 Official for AMD64 by buying the boxed version or by downloading the official images of installation CDs, which are available for members of Mandrake club (silver and better). Thus the installation was done from the CDs. In the beginning of the installation we could choose from graphical, text and expert graphical installation methods.
We don't possess a mouse at our server, so we have chosen the text
installation method. Unfortunately it failed completely during the disk
partitioning (the text version of program DiskDrake
crashed each
time). So we had to try the expert graphical method. Now the graphical version
of DiskDrake
worked properly. However after the creation of root
partition over RAID-1 array we were notified, that no bootloader can handle
that and the special /boot
partition has to be created.
Don't be confused, this screenshot was taken on MandrakeLinux 10.0 Official, but the name Community remained.
Of course, this is not necessary, for example lilo
has an
excellent support for it. Nevertheless we have temporarily changed one
swap partition to /boot
partition. After partitioning the disk
you can have the partitions formatted. As far as you haven't got any special
requirements it is fine, otherwise you have to switch to a text virtual
console and reformat the partitions (you can do this after the first format
by DiskDrake
, because before it mkfs.*
is not loaded
into memory). Then we have selected the minimal selection of packages with
urpmi and the installator began to copy the packages. Unfortunately the
process was interrupted, so we were forced to repeat all steps.
However during the second installation DiskDrake
announced error "Illegal division by zero" while attempting to create LVM. Then
the system halted. After several unsuccessful trials we have abandoned
the idea of creating LVM during the installation and we installed the system
on the root partition.
After successful start of the new-installed system we have created LVM
manually. First we initialised /dev/md1
as a physical
volume and afterwards we founded the volume group
vg0
on it.
pvcreate -M2 /dev/md1 vgcreate -M2 vg0 /dev/md1 vgchange -a y
Finally we created sections home
and var
on
vg0
and filesystems there.
lvcreate -L 13G -n home vg0 lvcreate -L 13G -n var vg0 mkfs.xfs -L home -i size=512 /dev/vg0/home mkfs.xfs -L var -i size=512 /dev/vg0/var
Then we modified /etc/fstab
and moved the content of
/var
and /home
to LVM sections. Next problem
happened when we attempted to get rid of devfs
. (This feature
has never worked, is now obsolete and will be replaced by
udev
in future). However after switching off devfs
the LVM hasn't activated. It should have been activated by
/etc/rc.sysinit
. After a brief diagnostics we have discovered,
that without devfs
the command vgmknodes
ends with
non-zero exit code, so that the needed command to initialise the LVM
vgchange -a y
doesn't execute. After removing the useless command
vgmknodes
the LVM were initialised. However it is elusive, that
this bug wasn't discovered during the QA tests.
We have managed to install the base system, so we have started to configure
urpmi
and to make updates working. The Mandrake 10.0 Official
binary packages for AMD64 are available on no mirror and we don't want to
change CDs during the installation of additional packages, so we have copied
all packages to harddisk, where we have created a local urpmi repository with
the help of genhdlist
command. Next we have replaced the CDs by
the local repository and have added official updates (we used official czech
mirror mandrake.contactel.cz
). Update passed almost with no
problems (during the first run of urpmi --update --auto-select
an
error occurred, but we failed to reproduce it). The we have updated the kernel,
rebooted the system and shut down unneeded services (like hardware
autodetection).
Time for first more serious test :) Let's try to compile the linux kernel. We
do this mostly for curiosity, but with a bit effort we can find even some more
rational reasons -- e.g. we want to get rid of initrd
, compile MD
driver static and remove a lot of things from distribution kernel we don't
need. This test was successful -- we downloaded the up-to-date version of
distribution kernel, configured it, compiled it (make -j 4
),
installed it, created /boot
on the root partition and rebooted
the server. The boot from lilo
, RAID autodetection and other
magic connected with boot passed with no errors. There were only one accident.
We wanted to replaced 3rd-party driver bcm5700
for our Gbit
network devices with kernel driver tg3
, but the network
configuration tool (apparently with "help" of lspcidrake
)
thought, that only suitable driver for our network devices is
bcm5700
, so we had to modify /etc/modprobe.conf
.
After manual removal of this kernel module the system collapsed, so we
rebooted the system once more.
After successful recompilation of kernel, we have started to test basic network services. Some services were already configured and worked without any serious troubles, other started to work after some specific actions. Among the services we tested and were working with no problems belonged these services:
Basic configuration of these daemons were sufficient, we were pleased, that
bind
were started under non-privileged user and configuration
counted with running in chroot.
On the other hand some services weren't quite problems-proof. E.g. both tested databases - MySQL and Postgresql had some troubles. To be concrete - during the installation of Postgresql the initialisation of database ring failed. During following manual installation all went fine and the database worked perfectly. MySQL worked after installation, however there were no supplied configuration file (not even commented), which is in the least remarkable.
One of the key server services is certainly Apache http server (in Mandrake Linux masked under pathetic name Advanced extranet server or ADVX). The goal of this project is to prepare apache and connected software in a form, that can be used in all possible situations. This comes with rather specific compilation with maximal use of modules, modular configuration (many things can be affected only by presence of specific file). That is the fair-minded description. (In my personal opinion I wonder why Mandrake considers its work so important and gives a new name to Apache, when all the distributors do almost the same adjustments. Marketing is omnipresent ...)
We tested ADVX on several virtual servers with static pages, dynamic generated pages by php, mod_perl and generic cgi scripts. Unfortunately there were crashes of several workers and during one test even the whole server crashed. The crashes occurred when the server was fully loaded and the reasons were various - from configuration defects to quite grave memory leaks in ADVX. We were successful in eradicating most of the problems, however the priority of Mandrake developers is now preparing of version 10.1 and support (of actual official version) is only the secondary priority (I am not referring to the security updates. They work very well).
Owing to fact, that Mandrake Linux is designed to be a desktop oriented distribution, some server related software is missing in official resources. First one checks contrib. However it has some disadvantages - e.g. the binary contrib packages for AMD64 are not available. Then Mandrake has essentially no support for contrib and quality of packages is very various. There are more unofficial sources, but most packages from these sources are compiled only for i386. It is possible (but in certain cases with some problems) to recompile SRPM packages designed for other distributions. If one gives over the packaging system, one can use software directly from mainstream. Surprisingly it is in some cases easier and faster way than recompilation of contrib packages and their debugging.
From the software out of the official distribution we have user e.g. GNU
Arch
(the package is called tla
). We have with no problems
rebuilt it from contrib. On the other hand tomcat5
from contrib
was not usable and instead of searching its imperfections we have decided to
use mainstream version. For testing purposes we wanted to install FirebirdSQL
database. Unfortunately there are almost no packages for it and in the current
version (before project Vulcan is finished and integrated) Firebird in
SuperServer mode works only in 32bit mode and uses only one CPU. However we
managed to rebuilt it (with these limitations). This could be done because
Mandrake is so-called bi-arch (there are present utilities and libraries for
both AMD64 and x86 applications).
In distribution there is Java RE and SDK in version 1.4.2 by Blackdown, which was in the time of the distribution release only available version suitable for AMD64. Unfortunately there is not a stable release of Java yet, so it is not suitable for run of large applications (like mentioned tomcat). It works well only with various 64-bits java-applets in 64-bits mozilla. With 32-bits version of Sun Java tomcat was running with no problems.
Putting Mandrake Linux for AMD64 on server has some advantages and
disadvantages. Its indisputable advantage is quite advanced frontend for
rpm
- urpmi
, that really makes administration of
packages easier. On the other hand the short lifetime (the development is 6
months long) is a big disadvantage for server purposes. Than the support is
quite short as well (only one year, but you can buy a corporate version, which
has longer support). The figure of problems, that need manual solving, is
(comparing to server standard) quite big. It is done because Mandrakesoft
often chooses not quite debugged and tested new versions instead of older
versions. On the other hand you get a distribution with actual software and
well working security updates.