Once developers came to me asking for help tracking unknown disk activity on CentOS 5.2 - based development server. (Disk activity was there for ~20 minutes so everybody noticed a slowdown)
I thought it wouldn't be difficult using
iotop
command however it is not available from native repositories.
Then I tried
dstat -M topbio
and got
Module topbio failed to load.(Kernel has no I/O accounting, use at least 2.6.20) None of the stats you selected are available.That's right - recent release of CentOS 5.2 came with kernel (2.6.18) too old for using file IO monitoring. Of course no newer kernels available in repository. (If I'm not mistaken latest kernel at the moment of CentOS 5.2 release was 2.6.30.)
Too bad I have to work mostly with CentOS and RedHat instead of Debian.
The problem with CentOS and also with RedHat is not only that they are being released with outdated software packages but also with their release model. While targeted for servers and corporate environment it is surprisingly common to see a production RedHat server not being updated for several years because it is completely worthless trying to update it within its release and too risky trying to upgrade the whole box. Software in their repositories quickly becoming obsolete and installing something is a pain because it's
- either too old or not in repository.
- package need dependency which are not in repository (if you're lucky enough to get a package)
- build environment is out of date so you cannot compile without installing an update and of course dependency required not in repository
That's it, the server has been configured once and forever ignoring all the security risks etc.
It is not completely hopeless though. One guy figured out how to install software into Debian chroot on Red Hat. Brilliant! Largest software repository in the world now can be used to improve hopeless servers. No more problems installing. Thanks so much for the idea!
His original instructions as of 2003 can be improved a little:
First we need to get current deboorstrap from http://packages.debian.org/testing/debootstrap
Then extract (first archive then application):
ar x debootstrap_1.0.20_all.deb data.tar.gz tar -td data.tar.gz ##(optional, to list archive content) sudo tar zxvf data.tar.gz -C / #That's a bit rude way to install.
We should have use alien (which unfortunately not in native repository) to convert package from .deb to .rpm or get ready to use .rpm package somewhere. But for this purpose it might be acceptable and this is the easiest way.
Now we're going to create a Debian squeeze (current testing release) chroot in /opt/debian32 from Australian mirror.
Note: CentOS sudo has a notorious problem not appending proper PATHs for root commands. To overcome it we either need to specify missing PATHs for every sudo command either run the following commands as root.
sudo PATH=$PATH:/sbin:/usr/sbin /usr/sbin/debootstrap --arch=i386 squeeze /opt/debian32 http://mirror.optus.net/debian
(If being run as root 'sudo PATH=$PATH:/sbin:/usr/sbin ' part may be omitted)
Next logical stage might be a configuring mount points for chroot. Let's add the following lines to /etc/fstab.
proc /opt/debian32/proc proc defaults 0 0 /tmp /opt/debian32/tmp none bind 0 0
We can mount new mount points without reboot with
sudo mount -a
Lats thing to do is to find default locale on host system by
locale | grep LANG
and then create the same locale in Debian chroot:
apt-get install locales dpkg-reconfigure locales #if necessary
That's it - feel free to dive into Debian (chroot) and use your favourite
applications easily even if it is too hard or impossible to install them
on poor host distributions.