I'm installing ubuntu onto a new laptop with 24gb SSD and a 500gb HDD. I wanted to put / and swap onto the SSD and /home onto the HDD. Is there anything I shouldn't use ext4 for?
I do not ever intend to dual boot. Ubuntu only.
Swap space doesn't use a filesystem at all. For regular filesystem partitions, my thoughts are:
/bootpartition or possibly a small USB flash drive), where the journal will be more of a detriment than an advantage.
ph0t0nix mentioned ZFS, but that's not really Linux-native. (It was developed by Sun, and has been ported to some of the BSDs, but licensing issues prevent moving that code into the Linux kernel.) There are two ZFS implementations for Linux, one of which can be built into the kernel and the other of which is a userspace driver accessed via FUSE. The kernel ZFS driver isn't part of the standard Linux kernel, though, which is a big drawback in my view; IMHO, a driver for your main filesystem should be a standard part of the kernel, not an add-on package that might not work if you upgrade your kernel.
Overall, then, and IMHO, the best general-purpose options at the moment are ext4fs and XFS. Of the two, I give the nod to ext4fs because it's more popular and it can be shrunk. Ext2fs is OK on small partitions (say, under 1GB or so), ReiserFS can be good if you store lots of very small files, and Btrfs is good if you need advanced bleeding-edge features and don't mind the risk. I don't happen to have benchmark data handy on these filesystems, and such data can be difficult to interpret because so many factors can influence performance (disk type, file sizes, system load, etc.). You could try looking up such data if speed or system load is particularly important to you.
There are of course non-native filesystems, too -- NTFS, FAT, HFS+, etc. You can't use these as the filesystem for your main Linux installation. (I suppose you might be able to use HFS+ for that purpose, but I've never tried it, and it certainly isn't supported by the Ubuntu installer!) You'd use these for interoperability on dual-boot computers or on removable disks.
For the setup you propose ext4 is recommended.
If you were to put
/boot as a separate partition, you could use ext2 for that. For large filesystems (e.g. > 16TB I generally use xfs, as it I had some problems with ext4 there (problems when resizing the partition). And btrfs is still not recommended for production. For a server you could consider ZFS, which has been declared stable on Linux a few months ago.
Use ext4 or XFS for your main partition. Use ext2 or non-journaled ext4 for boot.
You should use ext4 for your main partition. It provides high-performance, is quite stable, and is very resilient in the face of random corruption due to its use of a journal. You can also use XFS which is a very well-written, fast, and mature general-purpose filesystem. If you keep
/boot on the same partition as your main installation, then you will naturally have to use only one filesystem.
If your boot directory is on a separate partition, then you would either want to use ext4 with the journal disabled, or ext2 which lacks a journal in the first place. It may be a good idea to forgo the journal simply because it is unnecessary when there is not going to be a lot of frequent filesystem changes that a journal can protect from corruption, and because it uses up valuable space.
I would recommend ext4 with a disabled journal instead of ext2 simply because the former is faster and is more resistant to corruption, even without the journal, due to the excellent filesystem checker it comes with. You can format a device this way by running
mkfs.ext4 -O ^has_journal /dev/sdx1.
Some of the other general-purpose formats, described very briefly:
ext2 - A simple and fast filesystem with no journal. Good for SD cards.
ext3 - Literally ext2 with a journal duct taped to it. Not a great filesystem.
ext4 - A modern and high-performance filesystem. You should use this.
XFS - Another modern and high-performance filesystem. Good for big partitions.
JFS - The first journaling filesystem. Not the fastest, but it's low on resources.
Btrfs - An "advanced" copy-on-write filesystem that is still pretty buggy.
ReiserFS - Good for many small files, but slow. Its primary developer is still in prison.
There are also a few "specialized" filesystems that are commonly supported:
ZFS - Extremely powerful and amazingly reliable, but requires out-of-tree patches.
FAT - A very simple and widely-supported family of filesystems.
f2fs - Optimized for solid state drives to reduce wear-and-tear.
bcachefs - An upcoming very fast filesystem that makes use of an SSD cache.
For small SD cards or very small partitions, ext2, ext4 without a journal, and FAT are decent choices. For a primary installation, you can't go wrong with the popular ext4 or venerable XFS.