fstrim 和 iostat

fstrim 和 iostat

我的新笔记本里有一块新的三星固态硬盘。我调整了所有内容以避免在磁盘上写入数据(firefox 配置文件和/var/log内存),我正在使用ext4fs,并且每天relatime使用一次来修剪我的固态硬盘。fstrim

我用 监控磁盘负载iostat -dhm。在运行所示fstrim命令之前iostat

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda
              4.97         0.05         0.59       1856      20924

修剪后/home

# fstrim -v /home
/home: 100.2 GiB (107555401728 bytes) trimmed

ìostat节目

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda
              5.91         0.05         3.51       1859     123498

MB_wrtn增加102574 MB。这是否意味着fstrim正在写入102574 MB = 100.2 GB我的磁盘?

Trim 应该“标记”不包含有效数据的页面,而不是写入它们。

我猜想iostat看到了由编写的操作fstrim(即使它不是一种写作)。你怎么认为?有更好的方法来监控我的磁盘吗?

注意:使用iotop并不是一个答案,因为它不显示被杀死的进程的数据量。因此,iotop测量是不精确的。

答案1

MB_wrtn 增加了 102574 MB。这是否意味着 fstrim 正在将 102574 MB = 100.2 GB 写入我的磁盘?

是的,就是这个意思。fstrim本质上查看块设备的每个块并确定该块是否正在被文件系统使用(即包含重要数据):

  • 块正在使用中:忽略它。
  • 块未使用:将此块的 ATA TRIM 命令发送到底层块设备。

完成后,修剪的块的数量应始终等于文件系统上的可用空间。fstrim每次运行时都会修剪每个空闲块,无论它过去是否已经被修剪过,因此如果您更频繁地运行它,它不会变得更快。

内核可能将 TRIM 命令视为写入命令,因此每个执行的 TRIM 命令都算作 4k 写入命令。

Trim 应该“标记”不包含有效数据的页面,而不是写入它们。

将块“标记”为已修剪相当于“写入”它们,因为它们的内容会发生变化。如果您不小心修剪了错误的块,您将丢失数据 - 就像将零写入错误的块会导致您丢失数据一样。

相关内容