Do you have a kernel that has PREEMPT turned on? There are various kernel PREEMPT settings that can be turned on that will avoid lockups, such as during heavy disk load (perhaps at some cost of performance of server apps). It depends on your distribution how much is turned on by default.
In Debian backports there now is for example linux-image-rt-amd64 which includes the PREEMPT_RT realtime patch set. This patch set may help even more, however it may have its own problems...
Run something like this to see what is set:
# grep PREEMPT /boot/config-2.6.32-5-amd64 <-- in case of a Debian stable amd64 kernel
# CONFIG_TREE_PREEMPT_RCU is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT is not set
You may want to have it set to something more aggressive. Look around in the kernel documentation that comes with the source of your kernel to see what would work for you. And check what kernels your distribution provides that may have more aggressive PREEMPT settings. Those could be meant for desktop usage and/or real time usage. But that doesn't mean it won't work on a server. Provided they're part of the standard distro those should get the usual security fixes.