This might be a really stupid noob question, but I am looking to move to Linux from Windows/Mac, and am about to install an SSD into my very old test machine for Linux distros.
My test box still has a working HDD in it, so no action is required immediately.
But my question is: once I decide on a distro and start moving machines over to Linux, what kind of manual care do I have to put in to maintain my SSD drives, if any?
For each box with a SSD drive and Linux as the OS, do I need to do TRIM manually, do I need to turn it on for a “set and forget” type scenario, or are recent and regularly upgraded distros able to spot a SSD and do the necessary without my intervention?
I guess what I’m really asking is: is SSD TRIM support pretty much standard now across distros, or is it something I need to investigate individually for each distro I install?
I recognize I may just need to ask this again once I settle on a distro, but since I’m trying so many – and may fully install more than one – I thought I’d get a jump on it.
EDITED TO ADD: Many thanks to all who took the time to answer. Now I know exactly what to read up on, and if necessary, look up how to do manually for whatever distro(s) I settle on. I -really- appreciate the help. Thank you!
Trim support is standard. Any kernel released in the past 15 years or so will have trim support built in. So that’s not something you should worry about.
How trimming is triggered is another matter, and is distro dependent. On Arch and Debian at least there is a weekly systemd timer that runs the fstrim
command on all trimmable filesystems. You can check it if’s enabled with: systemctl list-unit-files fstrim.timer
. I can’t tell how other distributions handle that. On Debian derived ones, I imagine it’s similar, on something like Slackware, which is systemd-less and more hands-off in its approach, you may have to schedule fstrim
yourself, or run it manually occasionally.
There is also the discard
mount option that you can add in /etc/fstab
, which enables automatic synchronous trimming every time blocks are deleted, but its use is discouraged because it carries a performance penalty.
Hope that answers your question.
If I may, what’s trim?
Excellent question, and for people who have SSDs it’s worth knowing the answer.
Very simply, SSDs store data differently than HDDs, and when a file is removed, sectors on SSDs have to be explicitly cleared instead of simply waiting to be overwritten like on HDDs. Not doing so on a regular basis decreases the lifespan of the SSD. Crucial (a SSD manufacturer) explains it here much better than I can:
I have never read much about trim before. Now I’m curious about something: if an ssd was trimmed, is all deleted data lost? Is filling an ssd with random data unnecessary if we want so safely delete something?
What exactly happens when you issue a TRIM depends on the SSD and how much contiguous data was trimmed. Some drives guarantee TRIM-to-zero, but there’s still no guarantee that the data is actually erased (it could just marked as inaccessible to be erased later). In general you should think of it more as a hint to the drive that these bytes are no longer needed, and that the drive firmware can do whatever it likes with that information to improve its wear-levelling ability.
Filling an SSD with random data isn’t even guaranteed to securely erase everything, as most SSDs are overprovisioned (they have more flash cells than the drive’s reported capacity, used for wear leveling and the likes). even if you overwrite the whole drive with random bytes, there’s a pretty good chance that a number of sectors won’t be overwritten, and the random bytes would end up going to a previously unused sector.
Nowadays, if you want to wipe a drive (be it solid state or spinning rust), you should probably be using secure erase - it’s likely to be much faster than simply overwriting everything, and it’s actually guaranteed to make all the data irrecoverable.
There are some differences between distros as to whether TRIM is enabled by default or not (I’ve read Ubuntu enables it by default, but Debian does not). That said, depending on what file-system your ssd is formatted with it may be enabled by default at that level. The most-often recommended file-systems for SSDs are Btrfs and F2FS, both of which support and enable TRIM by default (as of Linux 6.2 for Btrfs, so if you are running an older kernel version you might need to manually enable it). I think most distro installers support using Btrfs as the main file-system, but F2FS is a bit more hit and miss I think. Safest bet would be to investigate once you settle on a distro, but support should be pretty standard, even if it’s not enabled by default.
The most-often recommended file-systems for SSDs are Btrfs and F2FS, both of which support and enable TRIM by default (as of Linux 6.2 for Btrfs, so if you are running an older kernel version you might need to manually enable it).
This is great to know on multiple levels because in Windows it is triggered from the OS, I think as a weekly task, and NTFS has little to do with it as far as I know.
It’s also good to know that support is pretty standard now, as a lot of what I found online was just old and the rest assumed I’d already be familiar with it. Bad assumption, lol.
I don’t know enough to have a preference one way or another for a specific file system, so I can just start with Btrfs and go forward with that. I can also read up on Btrfs further on its own, which I now know to do.
Safest bet would be to investigate once you settle on a distro
Absolutely. But this gets me started, and pointed in the right direction. Many thanks.
This is a bit of misinformation. There is no evidence other filesystems have any downsides on an SSD. Use the default choice of your distribution. Roughly nobody uses F2FS on desktops. EXT4 is entirely reasonable and supports TRIM.
XFS supports trim too, and is arguably the highest performing filesystem for NVMEs in terms of multi-theaded use-cases. BTRFs is among the slowest filesystems for NVMEs both in IOPS and sequential metrics.
not sure about manual but on ArchLinux and NixOS, TRIM can be automatically handled with BTRFS options:discard=async:
- Enables discarding of freed file blocks in large chunks before queuing for TRIM.
not sure if this helps but I’ll be open sourcing my NixOS build and configuration.nix files in a bit(after school schedule stablizes)