首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“`fstrim`”是否导致每次写入所有空闲块?

“`fstrim`”是否导致每次写入所有空闲块?
EN

Unix & Linux用户
提问于 2019-06-18 00:45:18
回答 1查看 1.3K关注 0票数 1

我有Ubuntu18.04服务器与500克SSD磁盘,其中有LVM和dm-密码在它上。我最近注意到写入磁盘的字节数(如vmstat -diostat所报告的)是不切实际的。在监视系统I/O之后,我发现当fstrim.service运行时,磁盘写入量每周发生一次。

从日志中看,似乎每周fstrim运行时都报告说,基本上所有空闲空间都被写入磁盘,尽管系统几乎处于空闲状态,最多一周内写入的内存不到10 is。

这是一种预期的行为吗?我一直认为,自上次fstrim运行以来,只应该丢弃新的空闲块,而不是每次都丢弃整个空闲空间。这使得SSD的磨损量过高(根据磁盘报告的媒体磨损值来判断)。或者它与dm-crypt的存在有某种关系?

磁盘确实支持TRIM:

代码语言:javascript
复制
hdparm -I /dev/sda | grep TRIM
  *    Data Set Management TRIM supported (limit 8 blocks)
  *    Deterministic read ZEROs after TRIM

并且在dm-crypt中也启用了丢弃传递:

代码语言:javascript
复制
dmsetup table
  silverbox--vg-swap: 0 19529728 linear 253:0 917964800
  silverbox--vg-root: 0 917962752 linear 253:0 2048
  sda3_crypt: 0 937496576 crypt aes-xts-plain64 00...0 0 8:3 4096 1 allow_discards
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-09-08 13:58:55

ATA trim命令只更改磁盘驱动器中的元数据,它绝对不对内存单元进行任何低级别的写入。如果磁盘支持deterministic trim,则返回带有零的裁剪块,但这是由控制器根据新的元数据状态执行的,而不是因为在trim命令执行时实际删除了单元格。

不幸的是,trim命令在我所知道的所有内核统计信息中都被计算为写操作。因此,iostatsar/sys/fs/ext4/*/lifetime_write_kbytes给出了真正的写入和trims之和。另见关于超级用户的问题

fstrim每周运行一次,似乎释放了所有未使用的磁盘空间。例如,如果您有一个使用了50%的1TB磁盘,默认的fstrim活动将出现在统计数据中,即每周写入500 GB或每天70 GB。

底线是:写统计数据很容易被记为写的trims所主导,特别是对于中等填充的文件系统。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/525530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档