• FQQD
    link
    fedilink
    English
    199 months ago

    and what does that achieve?

      • FQQD
        link
        fedilink
        English
        -349 months ago

        wow such a great, short and understandable explanation that doesn’t link to a wiki article that no one will voluntarily read

        • subignition
          link
          fedilink
          529 months ago

          I would ask whether you realize you’re on a linux community, but you referred to a man page as a wiki article so you are clearly lost.

          The first paragraph past the link is a summary of the function of the program.

          fstrim is used on a mounted filesystem to discard (or “trim”) blocks which are not in use by the filesystem. This is useful for solid-state drives (SSDs) and thinly-provisioned storage.

    • @9point6@lemmy.world
      link
      fedilink
      9
      edit-2
      9 months ago

      Good for performance. It lets the SSD know when something isn’t needed anymore and means when something comes to write to the same area it doesn’t have to do a load of internal faffing (garbage collection) before it can actually write

    • @drdiddlybadger
      link
      59 months ago

      It appearantly helps with SSDs so unused blocks aren’t clogging things up. Not sure I fully understand what dropping unused blocks does but I guess it could help with performance?

      • Ooops
        link
        fedilink
        27
        edit-2
        9 months ago

        Simplified version: SSDs or more precisely NAND flash memory has some technical quirks. You can’t just overwrite stuff like you do with magnetic hard drives. You have to actually delete things. Also you can usually only delete full physical blocks.

        But data rarely fits neatly into physical blocks, so instantly deleting data would mean every time you delete something that partly resides in one block, you would need to save the data in that block you want to keep, wipe the whole thing then rewrite parts of it. That’s a lot of unnecessary stress on the hardware and also more work in teh writing and rewriting process.

        So SSDs use a similiar approach as old magnetic hard drives. Blocks aren’t physical deleted but marked as no longer used. Which works well for hard drives where you can just overwrite data, but for SSDs this is also far from optimal as with every new write you want to commit you have to pre-check if this unused part of a block is already deleted and usuable or not? In the latter case you either need to do the “save some of it, wipe the block, rewrite” oparation you tried to avoid before or simply go on and try to find another actual free block to use. Which decreases performance obviously. And at some time you would have a lot of wasted half-full blocks and would need to organize your data to reclaim these

        Enter TRIM… where periodically (usually when the system is idle anyway) the blocks that are marked as deleted are checked if there’s still used data in it (those are then copied to a completely free block and the whole block is wiped to free it up for the next write.

        In layman’s terms it’s basically anolog to defragmenting a hard drive in the brackground. When the drive isn’t doing anything important it spends time rearranging data only partly using a physical block to wipe the whole thing and also to wipe blocks that are completely marked as deleted to keep everything neat and organized with fully used blocks and wiped blocks available for re-use.

        PS: so-called continues TRIM is available also. That will basically do the whole “everytime a part in a block is marked as deleted write the other data to a new block an wipe the whole block”-routine in real-time… but after the regular writes are done to not clog up the system. But periodic TRIM is easier on the drive and usually sufficient.

        PPS: TRIM is part of the drive’s set of commands. So all the data handling involved doesn’t need to be handled by the file system. You just issue the TRIM command to the drive and it handles everything internally.

    • @treadful@lemmy.zip
      link
      fedilink
      English
      28 months ago

      Yeah, the man page doesn’t really help me out.

         fstrim is used on a mounted filesystem to discard (or "trim")
         blocks which are not in use by the filesystem. This is useful for
         solid-state drives (SSDs) and thinly-provisioned storage.
      
         By default, fstrim will discard all unused blocks in the
         filesystem. Options may be used to modify this behavior based on
         range or size, as explained below.
      
         The mountpoint argument is the pathname of the directory where
         the filesystem is mounted and is required when -A, -a, --fstab,
         or --all are unspecified.
      
         Running fstrim frequently, or even using mount -o discard, might
         negatively affect the lifetime of poor-quality SSD devices. For
         most desktop and server systems a sufficient trimming frequency
         is once a week. Note that not all devices support a queued trim,
         so each trim command incurs a performance penalty on whatever
         else might be trying to use the disk at the time.
      

      For instance, why would unused blocks not be discarded? And what does “discarded” even mean in this context? But it does recommend against using it for SSDs so I think I’ll skip it.

      • @naeap@sopuli.xyz
        link
        fedilink
        18 months ago

        “this is useful for solid-state drives”
        Where is it not recommended?

        Or did I just miss something?

        • @treadful@lemmy.zip
          link
          fedilink
          English
          28 months ago

          Running fstrim frequently, or even using mount -o discard, might negatively affect the lifetime of poor-quality SSD devices.

          I guess it was recommending against frequent runs.