Io

fstrim 和 iostat

  • September 14, 2013

我的新筆記本中有一個新的三星固態硬碟。我調整了所有內容以避免寫入磁碟(firefox 配置文件和/var/log記憶體),我使用的是ext4fs,relatime並且我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

修剪後/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我的磁碟?

修剪應該“標記”不包含有效數據的頁面,而不是寫入它們。

我猜想iostat將 by 的操作fstrim視為寫作(即使它不是寫作)。你怎麼看?有沒有更好的方法來監控我的磁碟?

注意:使用iotop不是答案,因為它不顯示被殺死的程序的數據量。因此,iotop測量是不精確的。

MB_wrtn 增加了 102574 MB。這是否意味著 fstrim 正在將 102574 MB = 100.2 GB 寫入我的磁碟?

是的,就是這個意思。fstrim本質上查看塊設備的每個塊並確定文件系統是否正在使用該塊(即包含重要數據):

  • 塊正在使用中:忽略它。
  • 塊未使用:向底層塊設備發送此塊的 ATA TRIM 命令。

完成後,修剪塊的數量應始終等於文件系統上的可用空間。fstrim每次執行時都會修剪每個空閒塊,無論它過去是否已經被修剪過,所以如果你更頻繁地執行它,它不會變得更快。

核心可能將 TRIM 命令視為寫入命令,因此每個執行的 TRIM 命令都算作 4k 寫入命令。

修剪應該“標記”不包含有效數據的頁面,而不是寫入它們。

將塊“標記”為修剪等同於“寫入”它們,因為它們的內容會發生變化。如果您不小心修剪了錯誤的塊,您將失去數據 - 就像將零寫入錯誤的塊會導致您失去數據一樣。

引用自:https://unix.stackexchange.com/questions/88783