Filesystems and SSD's

Using ext4 journaling filesystem for SSD partions is not good for the SSD health. You should really choose a non-journalling format e.g. ext2 when preparing SSD partitions. I guess the default installation method does not do this, wheras the “something else” method gives you that control. You should also setup TRIM for the SSD, as is not done automatically, see this:

There is more about which Linux filesystem to use on a SSD here:

Note that the main issue with ext4 mentioned in that item is its constant journalling activity. Some say that ext4 with journalling disabled is better option than ext2. See last part of this thread here:

This is extremely useful info. Thanks greatly. I will study it and make changes accordingly. I had read about TRIM long ago, but completely forgotten about it. And I know next to nothing about ext2 - ext4. That is about to change. Now, I must work out a plan that will allow me to make fs changes without losing months of configuring, etc. this linux system. I can easily copy over the Windows data again. How does this sound:

  1. Make an external timeshift snapshot of system files
  2. Backup those few files I have updated in Home
  3. Reinstall Zorin OS
  4. apply the timeshift snapshot
  5. restore the files from the windows machine
  6. restore the new/edited files in the Home dirs

I have just spend a couple of hours researching ext2 vs ext4 w/journaling vs ext4 w/out journaling. I’ve also read a great deal of material on trim. There doesn’t seem to be much consensus on which is best. There does seem to be quite a bit of agreement that current generation ssd’s work best with ext4 with journaling enabled. It also seems that current thinking is that trim is no longer necessary. Some of the trim functionality is now built into the drives themselves. The rest isn’t necessary. I may run across an article tomorrow that says exactly the opposite. For now, I do not plan to change anything until/unless I find a convincing explanation of why modern ssd’s do need something other than what I have. My drive is the * Western Digital WD BLUE SN550 NVMe SSD 1TB M.2. It uses SanDisc NAND flash chips that are considered to have very long lives. Any thoughts?

I was also looking at this and found this site showing 4 SSD friendly file systems.

I’ve used ext4 in the past (and still do), XFS for work (Oracle databases) and BTFS now, until Zorin support ZFS out of the box in the installer.

@jgordon Yes I think opinions re ext2 v ext4 for SSD maybe changing.
I see from the webpage you linked to that ext4 remains the normal “go-to” filesystem for Linux, even for SSD partitions. But they also mention ability to disable journalling in ext4.

I use ext4 but that is an easy choice as I have an old spinning HDD.

Do you yourself use bog-standard ext4 with or without journalling on your system?

(I am thinking this thread may possibly need to be split, as it is now becoming a filesystem discussion, rather than the OP’s original question. Something for the Mods to ponder.)

By default I’ve used ext4 up until recently. Lately I’ve been using BTFS as it uses copy on write and would like to use ZFS for the automated snapshots and easy rollback if something goes wrong.

1 Like

I decided to look for info from Western Digital, since that is the make of my ssd. I found an article about using TRIM with their hard drives, but ssd’s were not mentioned. I then found an authoritative sounding article on Tom’s Hardware that said that TRIM is generally not needed with most newer ssd’s. The drives now recognize most major os’s which allows them to know when blocks can be freed. They then take care of it themselves. However, it also said turning on TRIM would cause no problems. Finally, I found another article that said the TRIM (fstrim) was on by default since the 18.04 kernel. So I checked my Zorin OS 15.3 system and found it was, in fact, enabled. Here is the printout:

jim@jims:~$ systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: ena
Active: active (waiting) since Mon 2020-12-21 15:20:06 CST; 23h ago
Trigger: Mon 2020-12-28 00:00:00 CST; 5 days left
Docs: man:fstrim

dic 21 15:20:06 jims systemd[1]: Started Discard unused blocks once a week.

This seems to answer it for me. However, the question of journaling remains. Until I find something that convinces me otherwise, I will continue to have journaling enabled for the security that it provides.

1 Like