Dodatki do kontroli stanu ssd lub hdd, oraz prosty benchmark

Są to nieoficjalne dodatki i każdy używa ich na własne ryzyko (sam tak “ryzykuję” od dawien dawna), swoją drogą wspominałem już o nich w innych wątkach, ale chyba na tyle są warte uwagi, że poświęcę osobny…

HDD tools dodatek do monitorowania SMART (w tym temperatury dla konstrukcji wyposażonych w odpowiedni sensor - tanie ssd często są go pozbawione!), oraz umożliwiający uruchomienie prostego benchmarka, którego wyniki zobaczymy w logu po uruchomieniu addona z ustawioną opcją “Performance check” (niestety po zmianach w HA nie wykonywanego już w całości), niestety ten dodatek poza gadżetem w postaci benchmarku ma kilka istotnych niedoróbek, np. robi śmietnik w konsoli CLI (więc jeśli jest ktoś w stanie pomóc jego autorowi, to zachęcam), wymaga uprawnień roota.

wymaga dodania w Sklepie repozytorium
https://github.com/Draggon/hassio-hdd-tools

przykładowa konfiguracja dodatku (w trybie YAML, można ją zmodyfikować oczywiście w GUI - należy przede wszystkim wskazać faktyczną ścieżkę dla całego dysku) dla dysku SATA

sensor_state_type: temperature
sensor_name: sensor.hdd_temp
friendly_name: 2,5in sata ssd Temp
hdd_path: /dev/disk/by-id/ata-GOODRAM_2FA6078207F123456789
attributes_format: list
attributes_property: ata_smart_attributes.table
check_period: 6
database_update: true
database_update_period: 168
performance_check: false
debug: false
output_file: temp.log

przykładowa konfiguracja dodatku dla ssd SATA nie posiadającego sensora temperatury - tworzymy sobie wtedy sensor binarny

sensor_state_type: smart_state
sensor_name: binary_sensor.hdd_smart
friendly_name: Ssd SMART
hdd_path: /dev/disk/by-id/ata-64GB_SATA_Flash_Drive_0F5307750BAE12345678
attributes_format: list
attributes_property: ata_smart_attributes.table
check_period: 15
database_update: false
database_update_period: 168
performance_check: false
debug: false
output_file: temp.log

przykładowa konfiguracja dodatku dla ssd nvme`(ten akurat jak widać w obudowie na USB, ale konfiguracja jest natywnie dla nvme)

sensor_state_type: temperature
sensor_name: sensor.hdd_temp
friendly_name: nvme m.2 ssd na USB3 Temp
hdd_path: /dev/disk/by-id/usb-Realtek_RTL9210_NVME_012345678902-0:0
attributes_format: object
attributes_property: nvme_smart_health_information_log
check_period: 11
database_update: false
database_update_period: 168
performance_check: true
debug: false
output_file: temp.log

Oba poniższe służą tylko do jednego - długookresowego monitorowania parametrów S.M.A.R.T. oraz temperatury (jeśli obsługiwana przez hdd/ssd).

Scrutiny

lub
Scrutiny (Full Access)

każdy z nich wymaga dodania w Sklepie repozytorium
https://github.com/alexbelgium/hassio-addons
w danym momencie może pracować tylko jeden z nich (ten drugi jest dedykowany dla instalacji, gdzie pierwszy nie daje się uruchomić, ale wymaga uprawnień roota).

Konfiguracja dodatku w trybie YAML (nadaje się dla obu wersji)

PGID: 1000
PUID: 1000
Updates: Daily
certfile: fullchain.pem
keyfile: privkey.pem
ssl: false
TZ: Europe/Warsaw

Natomiast możliwe jest używanie równocześnie HDD Tools wraz z jedną z wersji Scrutiny.

Niestety w przypadku obu dodatków czasem tak trzeba ręcznie sobie nazwać nierozpoznane parametry (np. posługując się dokumentacją producenta - tak musiałem zrobić w przypadku starego ssd Apacer, ale wiele ich konstrukcji wciąż pozostaje nieznanych dla linuksowych narzędzi…), podobna sytuacja może wystąpić gdy dany parametr zostaje niepoprawnie nazwany (czasem widać, że jest coś nie tak z powodu wartości zupełnie “od czapy”), więc kopanie po dokumentacji ssd czy zastosowanego w nim kontrolera bywa czasem potrzebne (niestety póki co zabrakło mi pary na dotarcie do pierwotnych autorów wykorzystanych projektów, by dało się wprowadzić potrezbne poprawki).


parę wyników z różnych okresów (więc i z różnych wersji HA, jak i HDD tools, stąd zestawy wyników benchmarka się różnią)

NUC 6CAYH PNY CS900 240GB sata600 2,5’

HDParm                    Cached Disk Read          251.80 MB/s              
DD                        Disk Write                225 MB/s                 
FIO                       4k random read             IOPS ( KB/s)            
FIO                       4k random write            IOPS ( KB/s)            
IOZone                    4k read                   95213 KB/s               
IOZone                    4k write                  55326 KB/s               
IOZone                    4k random read            32662 KB/s               
IOZone                    4k random write           76713 KB/s               
                          Score:                                             
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Thu Feb  4 03:03:56 CET 2021][Info] Performance test end

[Thu Feb 25 22:34:16 CET 2021][Info] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                  MB/s                    
HDParm                    Cached Disk Read           MB/s                    
DD                        Disk Write                200 MB/s                 
FIO                       4k random read             IOPS ( KB/s)            
FIO                       4k random write            IOPS ( KB/s)            
IOZone                    4k read                   96411 KB/s               
IOZone                    4k write                  63102 KB/s               
IOZone                    4k random read            32686 KB/s               
IOZone                    4k random write           80199 KB/s               
                          Score:                                             
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Thu Feb 25 22:34:30 CET 2021][Info] Performance test end

NUC 6CAYS IRDM PRO 240GB “v1” IRP-SSDPR-S25B-240 sata600 2,5’

[Mon Aug  1 23:22:20 CEST 2022][INFO] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                  MB/s                    
HDParm                    Cached Disk Read           MB/s                    
DD                        Disk Write                202 MB/s                 
FIO                       4k random read            51457 IOPS (205829 KB/s) 
FIO                       4k random write           3979 IOPS (15916 KB/s)   
IOZone                    4k read                   106839 KB/s              
IOZone                    4k write                  61022 KB/s               
IOZone                    4k random read            35809 KB/s               
IOZone                    4k random write           97641 KB/s               
                          Score: 17399                                       
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Mon Aug  1 23:22:44 CEST 2022][INFO] Performance test end

[Mon Aug  1 23:56:35 CEST 2022][INFO] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                  MB/s                    
HDParm                    Cached Disk Read           MB/s                    
DD                        Disk Write                263 MB/s                 
FIO                       4k random read            71358 IOPS (285435 KB/s) 
FIO                       4k random write           21810 IOPS (87241 KB/s)  
IOZone                    4k read                   109256 KB/s              
IOZone                    4k write                  55377 KB/s               
IOZone                    4k random read            22676 KB/s               
IOZone                    4k random write           74612 KB/s               
                          Score: 17743                                       
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Mon Aug  1 23:57:02 CEST 2022][INFO] Performance test end

NUC 6CAYH Crucial BX500 120GB sata600 2,5’

[Thu Feb  4 03:02:41 CET 2021][Info] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                 211.83 MB/s              
HDParm                    Cached Disk Read          349.18 MB/s              
DD                        Disk Write                222 MB/s                 
FIO                       4k random read             IOPS ( KB/s)            
FIO                       4k random write            IOPS ( KB/s)            
IOZone                    4k read                   110417 KB/s              
IOZone                    4k write                  62809 KB/s               
IOZone                    4k random read            37805 KB/s               
IOZone                    4k random write           99595 KB/s               
                          Score:                                             
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Thu Feb  4 03:03:44 CET 2021][Info] Performance test end

[Thu Feb 25 22:13:39 CET 2021][Info] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                  MB/s                    
HDParm                    Cached Disk Read           MB/s                    
DD                        Disk Write                229 MB/s                 
FIO                       4k random read             IOPS ( KB/s)            
FIO                       4k random write            IOPS ( KB/s)            
IOZone                    4k read                   110007 KB/s              
IOZone                    4k write                  20145 KB/s               
IOZone                    4k random read            36123 KB/s               
IOZone                    4k random write           89604 KB/s               
                          Score:                                             
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Thu Feb 25 22:13:55 CET 2021][Info] Performance test end

RPi4B SKHynix HFS256GD9TNG-L3A0B 256GB nvme @USB2 (RPi4 nie bootowało z USB3, przy użyciu tej obudowy na mostku JMicron JMS583, a nie miałem wtedy cierpliwości do szukania firmware, które by działało umożliwiając bootowanie i do dziś nie wiem czy takie istnieje… ostatecznie można zabootować z karty TF, a tylko partycję danych przenieść na ssd w obudowie zewnętrznej, ale tak czy inaczej i tak wydajność jest dramatycznie niska nawet z użyciem dość przyzwoitego mostka, co widać w kolejnym teście na innym mostku), podobne wyniki są osiągalne na RPi3B/3B+ (z powodu dostępnych jedynie portów USB2)

[Thu Feb  4 23:27:44 UTC 2021][Info] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                 29.38 MB/s               
HDParm                    Cached Disk Read          29.10 MB/s               
DD                        Disk Write                23.0 MB/s                
FIO                       4k random read            2723 IOPS (10893 KB/s)   
FIO                       4k random write           3223 IOPS (12892 KB/s)   
IOZone                    4k read                   10110 KB/s               
IOZone                    4k write                  10222 KB/s               
IOZone                    4k random read            8578 KB/s                
IOZone                    4k random write           11280 KB/s               
                          Score: 2341                                        
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Thu Feb  4 23:29:27 UTC 2021][Info] Performance test end

RPi4B SKHynix HFS256GD9TNG-L3A0B 256GB nvme @USB3 RTL9210

[Sun Feb 21 01:02:22 UTC 2021][Info] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                  MB/s                    
HDParm                    Cached Disk Read           MB/s                    
DD                        Disk Write                123 MB/s                 
FIO                       4k random read            20117 IOPS (80471 KB/s)  
FIO                       4k random write           9701 IOPS (38806 KB/s)   
IOZone                    4k read                   29958 KB/s               
IOZone                    4k write                  23656 KB/s               
IOZone                    4k random read            19212 KB/s               
IOZone                    4k random write           29185 KB/s               
                          Score: 7257                                        
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 

[Thu Feb 25 21:34:53 UTC 2021][Info] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                  MB/s                    
HDParm                    Cached Disk Read           MB/s                    
DD                        Disk Write                123 MB/s                 
FIO                       4k random read            19654 IOPS (78618 KB/s)  
FIO                       4k random write           9719 IOPS (38879 KB/s)   
IOZone                    4k read                   30066 KB/s               
IOZone                    4k write                  23674 KB/s               
IOZone                    4k random read            20729 KB/s               
IOZone                    4k random write           28573 KB/s               
                          Score: 7241                                        
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Thu Feb 25 21:35:24 UTC 2021][Info] Performance test end

Jeszcze parę słów komentarza, do powyższych kiepskich wyników RPi4B - to są skutki uboczne podpinania ssd przez mostek USB - wyniki są jednakowo złe dla konstrukcji nvme i sata (niestety nie skopiowałem sobie wyników z konstrukcji sata, ale i taką miałem wśród dawnych eksperymentów).
Dopiero natywne podpięcie ssd nvme do magistrali pcie daje sensowne wyniki (i jest to możliwe np. na platformie HA Yellow bazującej na RPi CM4, a w jej cenie można kupić znacznie wydajniejszego pececika z gniazdami m.2 nvme), ale są one w sumie i tak zaledwie porównywalne do tego co można wydajnościowo uzyskać na platformie x86-64 z przyzwoicie działającym kontrolerem sata bez żadnego kombinowania…

TC241 Apacer mSATA 64GB (dość mocno archaicznej generacji)

[Tue Aug  2 00:27:18 CEST 2022][INFO] Run performance test
     Category                  Test                      Result              
HDParm                    Disk Read                  MB/s                    
HDParm                    Cached Disk Read           MB/s                    
DD                        Disk Write                65.1 MB/s                
FIO                       4k random read            21787 IOPS (87148 KB/s)  
FIO                       4k random write           8522 IOPS (34090 KB/s)   
IOZone                    4k read                   22746 KB/s               
IOZone                    4k write                  22945 KB/s               
IOZone                    4k random read            22325 KB/s               
IOZone                    4k random write           34841 KB/s               
                          Score: 7224                                        
Compare with previous benchmark results at:
https://storage.jamesachambers.com/ 
[Tue Aug  2 00:28:03 CEST 2022][INFO] Performance test end

W powyższym wypadku sam ssd na wyjątkowo słabą wydajność, co widać np. po zapisie sekwencyjnym, a mimo to wyniki ogólne są mocno zbliżone do nvme @USB3 i RPi4B.

1 Like

Więc tak:

Zainstalowałem hdd-tools ale nie wiem gdzie i co mam wyświetlić, w Dashboard pokazuje tylko temperaturę 50stopni.

Zainstalowałem Scrutiny, nie zmieniałem konfiguracji, a w logach wszystko poprawnie się pokazało z wyjątkiem jednego paska na czerwono:

2022/08/02 11:16:31 /app/scrutiny/webapp/backend/pkg/web/handler/upload_device_metrics.go:31 WHERE conditions required
Jedynie co mi się pojawia to po załadowaniu wszystko bez danych

Zainstalowałem Scruity FA i tylko w kółko ładuje się interfejs.

Jak już poruszamy temat parametrów to zadam kilka pytań. Jak wiadomo wpływ na parametry ma również kernel który HA bazuje na kernelu od linux. Czemu nie da się zmienić? A może się da tylko nie wiem jak? Pytam bo czasem myślę o zmianie kernela na ten od netext73 który ma większą responsywność oraz wydajność jednocześnie większą energooszczędność chociaż to też zależy jak się ustawi.

Nie widać pozostałych parametrów, bo są to atrybuty encji - aby poznać ich nazwy trzeba zajrzeć do Narzędzia deweloperskie → Stany → nasza interesująca encja

Moja karta uwzględniająca nazwy “wpisane z palca” i ręcznie posortowane tak jak pragnę je widzieć z użyciem komponentu niestandardowegp “Entity attributes card” (jest w HACS)

Niestety każdy dysk raportuje praktycznie inne parametry, więc nie da się wymyślić uniwersalnego szablonu (i oczywiście moim zdaniem nazwy niektórych atrybutów mogą być złe, ale tu nie miałem czasu na kopanie po dokumentacji, jakkolwiek “na przyszłość” dodałem sobie nazwy - póki co w miarę zgodne z tym co raportuje integracja, a jeśli się dowiem prawidłowych to je po prostu zmienię, dysk był używany, być może w nieprawidłowy sposób? (bo nie ja go używałem, więc nie znam jego realnej historii) zanim wrzuciłem go do instalacji HA, ale niektóre parametry wyglądają dość podejrzanie ;D )

type: entities
title: Goodram IRDM Pro 240 GB
entities:
  - type: custom:entity-attributes-card
    heading_name: Atrybut
    heading_state: Stan
    filter:
      include:
        - key: sensor.hdd_temp.ssd_life_left
          name: Ssd life left
        - key: sensor.hdd_temp.lifetime_writes_gib
          name: Lifetime writes GiB
        - key: sensor.hdd_temp.maxavgerase_ct
          name: SSD Wear Leveling Count
        - key: sensor.hdd_temp.power_on_hours
          name: Power-On Hours
        - key: sensor.hdd_temp.power_cycle_count
          name: Power Cycle Count
        - key: sensor.hdd_temp.unsafe_shutdown_count
          name: Power-off Retract Count
        - key: sensor.hdd_temp.temperature_celsius
          name: Temperature °C
        - key: sensor.hdd_temp.raw_read_error_rate
          name: Read Error Rate
        - key: sensor.hdd_temp.bad_blk_ct_erl/lat
          name: Available Reserved Space
        - key: sensor.hdd_temp.crc_error_count
          name: CRC Error Count
        - key: sensor.hdd_temp.sata_phy_error_count
          name: SATA Phy Error Count
    exclude:
      - key: sensor.hdd_temp.unit_of_measurement
      - key: sensor.hdd_temp.friendly_name
      - key: sensor.hdd_temp.device_class
      - key: sensor.hdd_temp.state_class
show_header_toggle: false

można ją przekształcić do takiej postaci (to przykład z wyświetlaniem temperatury na górze karty, uprościłem nieco, bo u siebie mam posortowane ręcznie)

type: entities
title: Crucial BX500 120GB
entities:
  - entity: sensor.hdd_temp
  - type: custom:entity-attributes-card
    heading_name: Atrybut
    heading_state: Stan
    filter:
      include:
        - key: sensor.hdd_temp.*
      exclude:
        - key: sensor.hdd_temp.fri*
        - key: sensor.hdd_temp.uni*
        - key: sensor.hdd_temp.*class

przykłąd dla dysków Apacer, gdzie część prawdziwych nazw atrybutów wygrzebałem w dokumentacji - jak widać nie pokrywają się z tymi, które widać w encji

type: entities
title: Apacer mSATA Flash Drive 64GB
entities:
  - type: custom:entity-attributes-card
    heading_name: Atrybut
    heading_state: Stan
    filter:
      include:
        - key: binary_sensor.hdd_smart.unknown_ssd_attribute
          name: Life Left (???)
        - key: binary_sensor.hdd_smart.power_on_hours
          name: Power-on hours
        - key: binary_sensor.hdd_smart.power_cycle_count
          name: Power cycle count
        - key: binary_sensor.hdd_smart.power-off_retract_count
          name: Unexpected Power Loss Count
        - key: binary_sensor.hdd_smart.unknown_attribute_163
          name: Max. erase count
        - key: binary_sensor.hdd_smart.unknown_attribute_164
          name: Avg. erase count
        - key: binary_sensor.hdd_smart.unknown_attribute_166
          name: Total later bad block count
        - key: binary_sensor.hdd_smart.unknown_attribute_167
          name: SSD Protect Mode (vendor specific)
        - key: binary_sensor.hdd_smart.unknown_attribute_168
          name: SATA PHY Error Count
        - key: binary_sensor.hdd_smart.program_fail_count_chip
          name: Bad Cluster Table Count
        - key: binary_sensor.hdd_smart.tot*
          name: Total sectors of write
      exclude:
        - key: binary_sensor.hdd_smart.uni*
        - key: binary_sensor.hdd_smart.*class
show_header_toggle: false

Dla wersji FA musisz wyłączyć tryb ochrony (to daje prawa roota), niestety nie znalazłem żadnej logiki i powiązania, która wersja Scrutiny na jakiej konfiguracji zadziała, więc jeśli to nie pomoże użyj zwykłej wersji Scrutiny.

PS dopiero teraz miałem czas na uzupełnienie informacji w pierwszym poście, ale generalnie czytanie dokumentacji jest zawsze obowiązkowe :stuck_out_tongue: (Scrutiny prawdopodobnie się nie uruchomi bez skonfigurowania, HDD tools też się kiedyś nie uruchamiał bez prawidłowej konfiguracji).


Nie da się zmienić, a dlaczego? no ja nie czuję się na siłach by odpowiadać w imieniu developerów, ale z pewnością istotne są względy bezpieczeństwa i standaryzacji.
Wszelkie nurtujące Cię sprawy możesz zawsze przegadać na oficjalnym forum HA (tam bywają developerzy backendu).

W kwestii samego benchmarka - warto pamiętać, że pracuje on wewnątrz kontenera (więc zasoby sprzętowe mogą być równocześnie używane przez inne kontenery, a w typowych “benchmarkowych konfiguracjach” użytkownicy zwykle oddają całość sprzętu “we władzę” benchmarków by uzyskać najwyższy możliwy wynik).