Best Disk Partitioning Scheme for a Linux-based Developer Machine

Partitioning doesn't affect performance so much, but yes, file systems and their configuration affect performance. Look at this benchmark. For a little information about mounting options, see fstab at the ArchWili; especially look at atime options.

Partitioning has nothing with organization files in Linux, because in Linux everything is mounted into one tree.

I recommend one partition for the root filesystem, /, and separate partitions for folders where you place your work and personal data: /home and /var/www if you put your websites here, because if you change distro you will no need to do backup.

You may make partitions/disks based on files organization and their importance.

For example, you have got projects and documents which are very precious, then you can have them on RAID-ed disks. Also you may have remote disk mounted with ssh/ftp.

Mounting scheme:

/                      -> SSD disk, partition 1
/home                  -> SSD disk, partition 2
/tmp                   -> tmpfs
/media/data            -> RAID-ed disk, partition 2 (ie. shared photos with family)

user mounts:
/home/miroslav/secure  -> RAID-ed disk, partition 1 (encrypted)
/home/miroslav/remote  -> sshfs/curlftpfs

To mount remote and secure directories you will probably need some script that asks you for password(s).

Directory sym-links pwd=/home/miroslav:

projects       ->  secure/projects
documents      ->  secure/documents
mails-dir      ->  secure/mails

On our internal developement virtual machines we use three partitions:

  1. /root partition - housing mostly static operating system stuff

  2. /var partition - for all dynamic data

  3. /home partition - this is where development takes place with the user accounts of the developers

The reason to separate the partitions is to avoid a system halt due to full filesystem. If /home is full - does not matter. No running processes are affected. Delete something, enlarge online and continue.

/ should not change much (the only exception is /tmp - but files there are usually never big).

/var is the place where /var/tmp and all other "live" data resides (including /var/log). A full /var/log is still the number one reason for system/application failures, so /var has to be big enough and there has to be a warning in time when space is becoming sparse there...

On physical machines, where disk space does not matter that much, we divide up additional "partitions" (mostly LVs), including: /var, /var/tmp, /var/log, /tmp, /boot, ... but these are production machines, where uptime matters.