I have noticed that when installing Ubuntu some people create multiple partitions for directories. Like one for root, one for home, one for boot. What is the advantage to doing this over installing them all on one partition, assuming there is only one hard drive?
There are several reasons:
- System robustness. If you have /home on a separate partition from /, then a regualr user can't fill up the / filesystyem, making it unusable for the rest of the system.
- Backups. It makes it easier to back up entire partitions, and to back up on different schedules. For instance, you might only need to do weekly backups of the system partition, but nightly backups of the /home filesystem
- System installs. You can have the same /home filesystem mounted by several different system images. And you can delete and rebuild / with out doing a backup/restore of /home or /local
- Disk optimization. Not as much of an issue with todays fast drives, but it used to be common practice to put the system filesystem on the inside tracks of the disk to speed up access
- Using multiple drives. Before the common availability of large drives, it was common to have little room on the system drive. So a separate drive was used for /home.
- NFS. When sharing data across multiple systems, it is common to do it on a filesystem basis.
I typically create one for root, one for swap, and one for home. The advantage of this is that it allows you to leave your documents (also music, video, pictures, etc) untouched if you need to reinstall the OS. Because you can completely over write the OS partition (root) without touching the home partition, your files are safe and there is no need to perform the time consuming process of transferring them to another media and then back to your fresh machine. It makes reformatting/imaging much more elegant
Here is some more info on the benefits. Although its written about windows, the principle is the same.
I used to overdo the Partitioning thing in my good old windows days because I thought it might be more clear. One drive letter for a certain topic (e.g. Music, Pictures, Work etc.). But even there separating your data and the system already made sense: Should the system crash you can just format you system partition and reinstall without losing all your data.
Unix like systems and Ubuntu don't have drive letters, partitions just get mounted in any empty folder. So the thing that actually makes sense in my eyes is:
- Create a system partition for the actual system installation
- Create a partition for your home directory. Easy to backup and since almost all programs keep the settings there you can reinstall/upgrade your system without losing much in a short time.
- Create a swap partition (usually works better than a swap file)
- As Babu already said create a boot partition if the Bootloader doesn't support your systems partition format.
Imho more than 4 separate partitions don't make sense in Ubuntu (4 is the maximum number of primary partitions you can create) - it's just a matter of personal preference.
A separate /boot partition allows me to boot and repair my root file system, even if the root file system is corrupt. If I put all the boot files in the root file system, and it gets corrupted, it might not boot at all. There is also more flexibility. Later, I can put a second disk in, put swap on that, and delete the swap partition from the root disk and expand the root filesystem into that space.
Creating a hard swap partition instead of one in the filesystem, is just UNIX-style sysadmin. There's no real reason not to make it just a file in the filesystem, except that some user will come alone with sudo powers and try to rm it.
As Babu and Mike said, a separate /home allows me to update or change distros without losing all my data.
Keeping the home directories on a separate partition prevents the users from accidentally filling up the root partition. This is good because if you fill up the root partition, you end up with problems (system logs, for instance, are often in the root partition).
While it's not actually possible for non-root users to use the last bits of space on a disk (the system won't let them), it is possible for them to fill it up most of the way, and then for automated system processes to finish the job, making it annoying to get everything back into operation.
Keeping a separate home partition lets you keep your files should you reinstall your linux distro.
GRUB doesn't support ext4, so if you're going to use that filesystem for the rest of your files, you'll need a separate boot partition. GRUB now supports ext4, so keeping a separate boot partition, while still an option, is no longer necessary.
Linux generally sees the disk very differently than a Windows machine. Also Windows Fat32/NTFS and even newer file systems are mostly a Windows strictly format. So you don't actually know what they do or how they behave internally. Linux uses its own file systems ext3/4 being the most widely used, the Linux file system doesn't exist in a tree like state nor does it treat data like a second class citizen residing on your disk. The reason you can create single or multiple partitions for the os is both for organization and disk speed access. Though this last part has changed over the years, most Linux users don't bother with multiple partitions because you need to slice your os data to fit evenly over the partitions you manually create. I personally find it counter intuitive to have multiple partitions. On the other hand Linux machines don't generally suffer from bad disk sectors or having an auto feature for defrag. This is just bad design by Microsoft, can't fix their internal issues so they build tools that allow you to fix your own problem 60% of the time anyway.