Tim Woodall <debianu...@woodall.me.uk> writes:

> In the default, iscsi, md, lvm, ext2 do not keep this information. Don't
> know if it's configurable sonewhere but I suspect not. Don't know about
> btrfs.
>
> Some of this data is cached, but not between reboots.

I have played a bit and it seems for ext4 and btrfs they keep
information on already trimmed blocks but only as long as the file
system is mounted:

    # lvcreate -n foo -L1G vg0
      Logical volume "foo" created.
    # mkfs.ext4 /dev/vg0/foo
    mke2fs 1.47.0 (5-Feb-2023)
    [...]
    # mount /dev/vg0/foo /mnt
    # fstrim -v /mnt
    /mnt: 973.4 MiB (1020678144 bytes) trimmed
    # fstrim -v /mnt
    /mnt: 0 B (0 bytes) trimmed
    # umount /mnt
    # mount /dev/vg0/foo /mnt
    # fstrim -v /mnt
    /mnt: 973.4 MiB (1020678144 bytes) trimmed
    # fstrim -v /mnt
    /mnt: 0 B (0 bytes) trimmed
    # umount /mnt
    # mkfs.btrfs -f /dev/vg0/foo
    btrfs-progs v6.2
    See http://btrfs.wiki.kernel.org for more information.

    Performing full device TRIM /dev/vg0/foo (1.00GiB) ...
    [...]
    # mount /dev/vg0/foo /mnt
    # fstrim -v /mnt
    /mnt: 1022.6 MiB (1072267264 bytes) trimmed
    # fstrim -v /mnt
    /mnt: 126 MiB (132087808 bytes) trimmed
    # fstrim -v /mnt
    /mnt: 126 MiB (132087808 bytes) trimmed
    # fstrim -v /mnt
    /mnt: 126 MiB (132087808 bytes) trimmed
    # umount /mnt
    # mount /dev/vg0/foo /mnt
    # fstrim -v /mnt
    /mnt: 1022.6 MiB (1072267264 bytes) trimmed
    # fstrim -v /mnt
    /mnt: 126 MiB (132087808 bytes) trimmed
    # fstrim -v /mnt
    /mnt: 126 MiB (132087808 bytes) trimmed
    # umount /mnt

I also currently play with ext4 and btrfs on QCOW2 with discard
support.  Looks nice.

> The raid rebuild is a particular pain point IMO. It's important to do a
> discard after a failed disk rebuild otherwise every block is 'in use' on
> the underlying storage.

Hmm, does a RAID rebuild really always copy the whole new disk, even
the unused space?  But what kind of info is then kept in the first
128 MiB of /dev/md0, if not a flag for every block telling whether it's
used or not?

> After a rebuild I always create a LV with all the free space and then
> discard it.

:(

I currently have RAID only on a server with HDDs which don't support
TRIM anyway.  I have only needed twice to rebuild the RAID-1 with 2
disks and I seem to remember that not the whole disk was copied, but I
might be wrong on that.

Steve

Reply via email to