Assuming you have enough free HD space, the linux filesystems will usually "defrag" in the background during non I/O times and will reallocate blocks of data to make the files in the filesystem contiguous. It is only when it is running out of space that it will fragment a file into non-contiguous pieces. Thus a defrag for linux filesystems is practically unnecessary and for most linux filesystems can not actually be done.
Some starting points in investigating linux performance ... dmesg, iostat, vmstat, hdparm, bonnie, sar.