fstrim e iostat

5

Eu tenho um novo samsung ssd no meu novo notebook. Eu ajustei tudo para evitar escritas no disco (perfis firefox e /var/log na memória), estou usando um ext4 fs com relatime e eu uso fstrim uma vez por dia para TRIM my ssd.

Eu monitora a carga de disco com iostat -dhm . Antes de executar fstrim , o comando iostat mostrado

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

depois de aparar /home

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

ìostat mostra

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

MB_wrtn aumentou 102574 MB . Isso significa que fstrim está escrevendo 102574 MB = 100.2 GB no meu disco?

O aparador deve "marcar" as páginas que não contêm dados válidos, não gravá-las.

Eu acho que iostat viu a operação feita por fstrim como escrita (mesmo que não seja uma escrita). O que você acha? Existe uma maneira melhor de monitorar meu disco?

Nota: O uso de iotop não é uma resposta, porque não mostra a quantidade de dados de processos que foram mortos. Assim, iotop de medição é inexato.

    
por fclad 30.08.2013 / 01:03

1 resposta

3

MB_wrtn increased 102574 MB. Does that mean fstrim is writing 102574 MB = 100.2 GB to my disk ?

Sim, isso significa exatamente isso. fstrim essencialmente olha para cada bloco do seu dispositivo de bloco e decide se o bloco está sendo usado pelo sistema de arquivos (ou seja, contém dados importantes):

    O bloco
  • está em uso: ignore-o.
  • o bloco não está em uso: envie um comando ATA TRIM para este bloco para o dispositivo de bloco subjacente.

Quando é feito, a quantidade de blocos aparados deve sempre ser equivalente ao espaço livre no sistema de arquivos. fstrim TRIMs cada bloco livre toda vez que você executá-lo, independentemente de já ter sido TRIMmed no passado, então ele não ficará mais rápido se você executá-lo com mais frequência.

O kernel provavelmente considera o comando TRIM como um comando de escrita, então cada comando TRIM executado conta como um comando write de 4k.

Trim is supposed to "mark" the pages that do not contain valid data, not writing them.

Os blocos "Marcação", conforme aparados, são equivalentes a "gravá-los", porque seu conteúdo é alterado. Se você acidentalmente TRIM o bloco errado, você perderia dados - assim como escrever zeros no bloco errado faz com que você perca dados.

    
por 14.09.2013 / 15:38

Tags