Verifique as gravações do SSD em algum período

0

Eu gostaria de instalar o Ubuntu no SSD (eu sei que eu tenho que definir TRIM, noatime, etc.) Mas eu gostaria de saber se eu posso verificar quantos GB foi escrito no último dia / semana / mês.

Porque eu gostaria de medir quantos GB são escritos todos os dias no SSD se as pastas / var e / tmp estiverem no SSD. Se houver menos de 10GB de gravação por dia, acho que é legal e não prejudicará muito o SSD.

E não, eu não quero usar o ramdisk:)

    
por tomsk 04.03.2017 / 22:34

1 resposta

1

Como muitas vezes acontece, eu pulei na frente para reinventar a roda que já existe em smartmontools package. Este pacote oferece muitas ferramentas de diagnóstico para discos rígidos e SSDs (ou, em termos mais técnicos, dispositivos SCSI). Em particular, o comando smartctl é o que procuramos:

$ sudo smartctl -A /dev/sda
[sudo] password for xieerqi: 
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-65-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 18
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Runtime_Bad_Block       0x0000   000   000   000    Old_age   Offline      -       0
  9 Power_On_Hours          0x0000   100   100   000    Old_age   Offline      -       8080
 12 Power_Cycle_Count       0x0000   100   100   000    Old_age   Offline      -       1419
171 Avail_OP_Block_Count    0x0000   100   100   000    Old_age   Offline      -       40907856
174 Pwr_Cycle_Ct_Unplanned  0x0000   100   100   000    Old_age   Offline      -       78
195 Total_Prog_Failures     0x0000   100   100   000    Old_age   Offline      -       0
196 Total_Erase_Failures    0x0000   100   100   000    Old_age   Offline      -       0
197 Total_Unc_Read_Failures 0x0000   100   100   000    Old_age   Offline      -       0
208 Average_Erase_Count     0x0000   100   100   000    Old_age   Offline      -       179
210 SATA_CRC_Error_Count    0x0000   100   100   000    Old_age   Offline      -       0
224 In_Warranty             0x0000   100   100   000    Old_age   Offline      -       1
233 Remaining_Lifetime_Perc 0x0000   095   095   000    Old_age   Offline      -       95
241 Host_Writes_GiB         0x0000   100   100   000    Old_age   Offline      -       3133
242 Host_Reads_GiB          0x0000   100   100   000    Old_age   Offline      -       2745
249 Total_NAND_Prog_Ct_GiB  0x0000   100   100   000    Old_age   Offline      -       301548705

O que você vê acima é uma lista de atributos para meu SSD. De particular interesse é o atributo 241 (Host_Writes_GiB) e 242 (Host_Reads_GiB). Estes valores estão em GiB (que é uma unidade de medida clássica em ciência da computação em potências de 1024 bytes, neste caso 1024 ^ 3, em vez de unidades SI de potências de 10).

No nível mais baixo, tanto quanto eu entendo, este utilitário analisa o arquivo lifetime_write_kbytes real na pasta /sys/fs . Particularmente, no meu exemplo:

$ cat /sys/fs/ext4/sda1/lifetime_write_kbytes              
4793857835

Claro, esse é um utilitário de linha de comando. Se você não tiver instalado (verifique via apt-cache policy smartmontools ), instale-o via sudo apt-get install smartmontools . Existe o Gnome Disks Utility como alternativa de GUI e vem com o Ubuntu.

No entanto, existem algumas advertências:

  • As informações SMART devem ser fornecidas pelo dispositivo. Se o dispositivo for bastante barato e não tiver essas informações, será necessário reinventar a roda como quisesse originalmente por meio do monitoramento do arquivo /proc/diskstats .
  • Os atributos específicos devem ser fornecidos pelo dispositivo. Por exemplo, informações sobre o tnfd22 ssd encontradas no site smartmontools não fornecem essas informações.

Existe também um pequeno problema: as informações resultantes mostradas são o histórico total de leituras / gravações. Portanto, você não pode extrair leituras / gravações no último x número de dias. Pelo menos não é possível com smartctl ou nenhuma das ferramentas que encontrei até agora. No entanto, o que você pode fazer é agendar uma tarefa diária cron que lerá /sys/fs/ext4/sda1/lifetime_write_kbytes e anexará os dados com carimbo de hora a um arquivo. Mais tarde, você pode subtrair diferenças para ver quanto foi escrito em cada dia. Por exemplo, o conteúdo de tal comando seria:

30 08 * * * bash -c '{ date; cat /sys/fs/ext4/sda1/lifetime_write_kbytes; echo ;} >> /home/user/my_disk_log.txt'
    
por Sergiy Kolodyazhnyy 05.03.2017 / 18:27