新しいノートブックに新しいsamsungssdがあります。ディスク(Firefoxプロファイルとメモリ内の/var/log
)への書き込みを回避するためにすべてを調整しました。relatime
でext4
fsを使用し、fstrim
を使用しています。私のssdをTRIMするために1日1回。
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
の測定値は不正確です。
MB_wrtnは102574MB増加しました。これは、fstrimが102574 MB = 100.2 GBをディスクに書き込んでいることを意味しますか?
はい、それはまさにそれを意味します。 fstrim
は基本的に、ブロックデバイスのすべてのブロックを調べ、そのブロックがファイルシステムによって使用されているかどうか(つまり、重要なデータが含まれているかどうか)を判断します。
完了すると、トリミングされたブロックの量は常にファイルシステムの空き領域と同じになります。 fstrim
過去にすでにTRIMされているかどうかに関係なく、実行するたびに各空きブロックをTRIMするため、頻繁に実行しても高速になることはありません。
カーネルはおそらくTRIMコマンドを書き込みコマンドと見なすため、実行されたすべてのTRIMコマンドは4k書き込みコマンドとしてカウントされます。
Trimは、有効なデータを含まないページを「マーク」し、書き込みを行わないことになっています。
ブロックをトリミングとして「マーク」することは、内容が変わるため、ブロックを「書き込む」ことと同じです。誤って間違ったブロックをTRIMすると、データが失われます。間違ったブロックにゼロを書き込むとデータが失われるのと同じです。