我有一台带有 2 个 SSD 的服务器:
Model Family: Intel 520 Series SSDs
Device Model: INTEL SSDSC2BW240A3F
Firmware Version: 400i
User Capacity: 240,057,409,536 bytes [240 GB]
Sector Size: 512 bytes logical/physical
在它们上我有 3 个 mdraid 镜像设备(md0,1,2),使用 EXT4 文件系统格式化。我使用的是 mbr(不是 gpt)分区表。所有 3 个文件系统均通过以下方式挂载丢弃安装选项。
/dev/md0 on / type ext4 (rw,discard,errors=remount-ro)
/dev/md2 on /vservers type ext4 (rw,discard)
/dev/md1 on /var type ext4 (rw,discard)
问题是每当我重新启动服务器时,fstrim -v /any_mountpoint说它需要修剪所有未使用的空间。一旦我对文件系统进行了完整的 fstrim,一切都会按预期工作,直到下次重新启动。重新启动后再次运行 fstrim 会修剪整个文件系统。
有人可以向我解释我做错了什么吗?我认为 ext4 记住了文件系统已经修剪的部分(在我的带有 1 个 SSD 的桌面上,确实如此)。这是在具有 3.13.0-23-generic 内核的 Ubuntu 14.04 上。
答案1
不久前我问了一个非常相似的问题 -即使使用丢弃挂载的分区,fstrim 也会修剪一半以上的分区大小。对于这个问题上发生的情况有更详细的解释/讨论,但基本上,已修剪的内容fstrim
(以及底层FITRIM
ioctl
)的记录保存在内核内存中,而不是写入磁盘。每次fstrim
重新启动后运行,FITRIM
ioctl
都会发出 s 的完整可能范围。