标签: fstrim

独立验证TRIM确实适用于SSD

我有一个luksOpen的LUKS分区:/dev/sda1--allow-discards

cryptsetup --allow-discards luksOpen /dev/sda1 root
Run Code Online (Sandbox Code Playgroud)

然后我ext4使用discard选项挂载文件系统:

grep /dev/mapper/root /proc/mounts
/dev/mapper/root / ext4 ro,relatime,block_validity,discard,delalloc,barrier,user_xattr,acl 0 0
Run Code Online (Sandbox Code Playgroud)

然后我修剪已安装分区上的可用空间:

fstrim -v /
Run Code Online (Sandbox Code Playgroud)

df,我看到/有80%的可用空间。这意味着在 上/dev/sda1,磁盘的 80% 是二进制零。

如果我克隆图像 cat

cat /dev/sda1 > sda1.img
Run Code Online (Sandbox Code Playgroud)

并使用 压缩图像xz,我希望磁盘上的所有零都被压缩。由于磁盘上 20% 的数据是加密的,因此它看起来应该是随机的并且是不可压缩的。因此,xz 压缩的图像应该是近似的。原始尺寸的 20%。

但是,生成的 xz 压缩图像与原始原始图像的大小大致相同。

我的推理正确吗?

为什么我的理论没有转化为实践?

ssd ext4 cryptsetup trim fstrim

13
推荐指数
2
解决办法
2832
查看次数

fstrim 似乎没有修剪使用 lvm 和 dm-crypt 的分区

我尝试使用 dm-crypt 和 LVM 设置 Fedora 25,但很难使 TRIM 工作。

$ sudo fstrim -av                                                                            
/boot: 28.6 MiB (30003200 bytes) trimmed
/: 56.5 GiB (60672704512 bytes) trimmed

$ sudo fstrim -av                                                                            
/boot: 0 B (0 bytes) trimmed
/: 56.5 GiB (60671877120 bytes) trimmed
Run Code Online (Sandbox Code Playgroud)

从上面的输出中可以看出,重复运行fstrim在未加密的ext4 上有效 /boot,但似乎对/(在同一磁盘上)没有影响。

设置是 SSD -> dm-crypt -> LVM -> XFS

$ lsblk -D                                                                                                                                                                                     
NAME                                          DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda                                                  0      512B       2G         0
??sda2                                               0      512B       2G         0
? ??luks-dd5ce54a-34c9-540c-a4cf-2a712b8a3a5e        0      512B …
Run Code Online (Sandbox Code Playgroud)

ssd lvm dm-crypt xfs fstrim

10
推荐指数
1
解决办法
4726
查看次数

VirtIO 存储是否支持丢弃 (fstrim)?

$ uname -r
5.0.9-301.fc30.x86_64
$ findmnt /
TARGET SOURCE    FSTYPE OPTIONS
/      /dev/vda3 ext4   rw,relatime,seclabel
$ sudo fstrim -v /
fstrim: /: the discard operation is not supported
Run Code Online (Sandbox Code Playgroud)

相同的 VM,但在将磁盘从 VirtIO 切换到 SATA 之后:

$ findmnt /
TARGET SOURCE    FSTYPE OPTIONS
/      /dev/sda3 ext4   rw,relatime,seclabel
$ sudo fstrim -v /
/: 5.3 GiB (5699264512 bytes) trimmed
Run Code Online (Sandbox Code Playgroud)

虚拟磁盘由 QCOW2 文件支持。我正在使用 virt-manager/libvirt。libvirt-daemon 版本为 4.7.0-2.fc29.x86_64。我的主机当前运行的是 vanilla 内核构建 5.1 (ish),所以目前它有点“定制”,但我从一个库存的 Fedora 内核配置开始构建它。

有没有办法以某种方式在 VirtIO 上启用丢弃支持?或者代码只是不支持它?我不一定需要如何启用它的确切说明,但我感到惊讶和好奇,我想要一个可靠的答案:-)。

virtio fstrim libvirt

7
推荐指数
1
解决办法
4583
查看次数

如何检查我的 SSD 是否支持 fstrim?

我正在使用 Linux 服务器,想知道是否有办法可以确定我的 SSD 是否支持 fstrim。我尝试过hdparm -I /dev/sda,但它不可用,我无法安装它。我还有其他方法可以做到吗?任何帮助表示赞赏。谢谢!

我也很想知道如果我在不支持修剪的设备上运行 fstrim 会发生什么?它会导致无操作吗?

linux ssd trim fstrim

7
推荐指数
2
解决办法
4468
查看次数

如何检查TRIM?

我在带有三星 PM851 SSD 的戴尔 XPS 9343 上安装了 Linux。
我最近读到许多 SSD 不支持 TRIM 操作。
所以我想检查discard选项是否在我的系统上有效。

第一步,我尝试简单地运行sudo fstrim --verbose --all并报告41GB trimmed;这让我感到害怕,因为我一直期待一个很小的价值,因为我一直启用 TRIM(见上文);事实上,如果我再次重新运行该命令,我会得到O bytes trimmed. 正常吗? 即使我在 /etc/fstab 中有丢弃选项?

PS:我尝试遵循此处提出的解决方案但由于trim.test: FIBMAP unsupported.
PS2:它是带有 GPT 和 EXT4 文件系统的平面SSD(无 LVM 或 RAID)

storage ssd ext4 trim fstrim

5
推荐指数
2
解决办法
2万
查看次数

为什么 fstrim 似乎不修剪 btrfs (+ecrypts) 上的数据块?

我有一个带有多个分区的 SSD 磁盘。其中之一是有一个 btrfs 卷,安装为/home,其中包含一个 ecryptfs 主目录。

当我修剪卷时,似乎 fstrim 不会修剪此类卷上的数据块 - 为什么?您可以在下面看到有关设置的所有信息,以及我遵循的步骤,以及注释。

$ cat /etc/fstab

UUID=xxx /               ext4    errors=remount-ro 0       1
UUID=yyy /media/vfio     ext4    defaults          0       2
UUID=zzz /home           btrfs   defaults          0       2
Run Code Online (Sandbox Code Playgroud)

$ mount | grep sda

/dev/sda5 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/sda1 on /media/vfio type ext4 (rw,relatime,stripe=32721,data=ordered)
/dev/sda2 on /home type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)
Run Code Online (Sandbox Code Playgroud)

$ ls -la /home /home/myuser/.Private # summary

/home:
.ecryptfs
myuser

/home/myuser/.Private -> /home/.ecryptfs/myuser/.Private
Run Code Online (Sandbox Code Playgroud)

$ df -h

Filesystem              Size …
Run Code Online (Sandbox Code Playgroud)

filesystems btrfs ecryptfs trim fstrim

4
推荐指数
1
解决办法
1586
查看次数

fstrim 如何与 dd 交互

我想了解fstrim和文件系统驱动程序(例如 ext4)之间的交互。更准确地说,我想了解dd是否会干扰这一点。

我在别处询问过文件系统如何在未使用块时通知 SSD。这很重要,因为它可以帮助平衡磨损。 这是我之前的问题

当一个分区被复制dd或等效时,每个块的每个字节都会被复制,无论它是否被文件系统使用。除了在大部分空文件系统上速度较慢之外,这还告诉磁盘将数据存储在文件系统的未使用区域。

fstrim从中恢复还是增量,只有在删除文件后才丢弃?

(元问题)现在是否建议用户fstrim在使用后调用或类似的方法dd来复制磁盘?

filesystems dd fstrim

4
推荐指数
1
解决办法
294
查看次数

在 LVM 上使用 ext4 的 fstrim“不支持丢弃操作”

尝试在我的根分区(LVM 逻辑卷上的 ext4,单个物理卷 - 支持 TRIM 的 SSD)上运行 fstrim 会产生错误:

fstrim -v /
fstrim: /: the discard operation is not supported
Run Code Online (Sandbox Code Playgroud)

但是,在同一个单 PV 卷组中的不同 LV 上运行它可以正常工作。两者的挂载选项(根据/proc/mounts)是相同的:rw,relatime,errors=remount-ro,data=ordered.

issue_discards = 1设置在 中lvm.conf,如果这很重要。

为什么只有其中之一支持修剪?

linux lvm fstrim

2
推荐指数
1
解决办法
5134
查看次数

标签 统计

fstrim ×8

ssd ×4

trim ×4

ext4 ×2

filesystems ×2

linux ×2

lvm ×2

btrfs ×1

cryptsetup ×1

dd ×1

dm-crypt ×1

ecryptfs ×1

libvirt ×1

storage ×1

virtio ×1

xfs ×1