我的新笔记本中有一个新的三星 ssd。我调整了所有内容以避免写入磁盘(firefox 配置文件和/var/log内存中),我正在使用ext4fsrelatime并且我fstrim每天使用一次来修剪我的 ssd。
我用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
Run Code Online (Sandbox Code Playgroud)
修剪后 /home
# fstrim -v /home
/home: 100.2 GiB (107555401728 bytes) trimmed
Run Code Online (Sandbox Code Playgroud)
ìostat 显示
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda
5.91 0.05 3.51 1859 123498
Run Code Online (Sandbox Code Playgroud)
MB_wrtn增加了102574 MB。这是否意味着fstrim正在写入102574 MB = 100.2 GB我的磁盘?
Trim 应该“标记”不包含有效数据的页面,而不是写入它们。
我想iostat看到了fstrim作为写作的操作(即使它不是写作)。你怎么认为?有没有更好的方法来监控我的磁盘?
注意:使用iotop不是答案,因为它不显示被杀死的进程的数据量。因此,iotop测量是不准确的。
MB_wrtn 增加了 102574 MB。这是否意味着 fstrim 正在将 102574 MB = 100.2 GB 写入我的磁盘?
是的,就是这个意思。fstrim本质上查看块设备的每个块并确定该块是否正在被文件系统使用(即包含重要数据):
完成后,修剪的块的数量应始终等于文件系统上的可用空间。fstrim每次运行时都会修剪每个空闲块,无论它过去是否已经被修剪过,因此如果您更频繁地运行它,它不会变得更快。
内核可能将 TRIM 命令视为写入命令,因此每个执行的 TRIM 命令都算作 4k 写入命令。
Trim 应该“标记”不包含有效数据的页面,而不是写入它们。
将块“标记”为已修剪相当于“写入”它们,因为它们的内容会发生变化。如果您不小心修剪了错误的块,您将丢失数据 - 就像将零写入错误的块会导致您丢失数据一样。