Een defecte schijf herkennen in Linux
Kort antwoord
Controleer de gezondheid van een schijf met twee tools: hdparm om de leessnelheid te benchmarken tegen het verwachte bereik voor dat schijftype, en smartmontools (smartctl) om de SMART-attributen uit te lezen. Structureel lage snelheden of falende SMART-waarden wijzen op een schijf die nader bekeken moet worden. NVMe-schijven gebruiken hun eigen commando’s, die komen aan het eind aan bod.
De commando’s in de eerste vier onderdelen gelden voor SATA-schijven, zowel draaiende schijven als SSD’s. Je vergelijkt de leessnelheid met het gangbare bereik voor dat schijftype en bekijkt daarna de SMART-attributen van de schijf. NVMe-schijven rapporteren hun gezondheid anders en hebben eigen commando’s nodig, die komen in het laatste onderdeel aan bod. Gebruik de resultaten om te bepalen of een schijf beoordeeld moet worden.
Je schijven identificeren
Gebruik het commando lsblk om de schijven in je systeem weer te geven:
lsblkAfhankelijk van je schijfindeling toont dit de beschikbare schijven, bijvoorbeeld sda, sdb, sdc en sdd.
Schijfsnelheid testen
Benchmark de schijfsnelheid met hdparm. Installeer het eerst:
# Ubuntu / Debian
apt-get install -y hdparm
# AlmaLinux / Rocky Linux
yum install -y hdparmhdparm is alleen voor Linux: het maakt gebruik van Linux-specifieke ATA/SCSI-ioctls en is niet beschikbaar als package voor FreeBSD. Gebruik op FreeBSD in plaats daarvan camcontrol of diskinfo voor dezelfde controles.
Voer daarna hdparm uit tegen de schijf die je wilt testen, bijvoorbeeld:
hdparm -t /dev/sdaVoor betrouwbaardere resultaten:
- Voer de test uit op een inactief systeem, idealiter na een reboot, zodat een minimaal deel van de systeembronnen in gebruik is.
- Voer het commando twee of drie keer uit en neem het gemiddelde van de resultaten.
| Type | Typisch minimum | Typisch maximum |
|---|---|---|
| HDD | 150 MB/sec | 250 MB/sec |
| SATA SSD | 400 MB/sec | 500 MB/sec |
| Enterprise SSD | 500 MB/sec | 550 MB/sec |
Dit zijn algemene, voor de branche typische bereiken per schijfklasse, geen Worldstream-specifieke benchmarks. Ze gelden alleen voor SATA-schijven, zie NVMe-schijven voor de reden dat hdparm-cijfers niets zeggen op NVMe.
De daadwerkelijke snelheid varieert per configuratie. Neem contact op met support om te controleren of de snelheid die je ziet normaal is voor jouw setup, en voeg de testuitvoer daarbij.
Schijfstatus controleren (SMART)
Gebruik smartmontools om de S.M.A.R.T.-gegevens (Self-Monitoring, Analysis, and Reporting Technology) van een schijf uit te lezen. Installeer het eerst:
# Ubuntu / Debian
apt-get install -y smartmontools
# AlmaLinux / Rocky Linux
yum install -y smartmontools
# FreeBSD
pkg install -y smartmontoolsDe voorbeelden hieronder gebruiken /dev/sdb; vervang dit door de schijf die je controleert.
Basisinformatie van de schijf controleren
smartctl -i /dev/sdbSMART-ondersteuning inschakelen als die is uitgeschakeld
smartctl -s on /dev/sdbEen korte zelftest uitvoeren
smartctl -t short /dev/sdbDit duurt ongeveer één tot twee minuten.
Het resultaat van de zelftest lezen
smartctl -l selftest /dev/sdbDe SMART-attributen controleren
smartctl -A /dev/sdbLet op de onderstaande waarden:
| Attribuut | Omschrijving | Verwachte waarde |
|---|---|---|
| SMART overall-health | De algemene gezondheid van de schijf volgens de eigen standaard van de fabrikant. | PASSED |
| Reallocated_Sector_Ct | Aantal sectoren dat al opnieuw is toegewezen op de schijf. | 0 |
| Current_Pending_Sector | Aantal sectoren dat wacht op hertoewijzing. | 0 |
| Reported_Uncorrect | Aantal onherstelbare fouten dat is gerapporteerd aan de SMART-controller van de schijf. | 0 |
Elke waarde boven 0 op de drie tellers verdient onderzoek, ook als het er maar één is: het betekent dat de schijf data teruggaf, of bijna teruggaf, die hij niet kon corrigeren. Ligt een van deze waarden buiten het verwachte bereik, open dan een supportticket met de smartctl-uitvoer, zodat de schijf beoordeeld kan worden.
Controleren op ATA-fouten
SMART-attributen dekken geen fouten op ATA-niveau. Controleer daarvoor de kernellog:
dmesg | grep -i ataNVMe-schijven
NVMe-schijven hebben overal andere commando’s nodig. Het zijn geen ATA-apparaten, dus lsblk toont ze als nvme0n1 in plaats van sda, en de SMART-attributen hierboven (Reallocated_Sector_Ct, Current_Pending_Sector, Reported_Uncorrect) bestaan er niet op.
hdparm -t onderschat NVMe bovendien flink. Het meet gebufferde sequentiële reads, één request tegelijk, en dat komt niet in de buurt van wat een NVMe-schijf parallel levert. Een gezonde schijf lijkt daardoor te zakken voor de test. Behandel een hdparm-cijfer op NVMe altijd als vergelijking met eerdere resultaten van diezelfde schijf, nooit als geslaagd of gezakt. Gebruik voor een echte throughputmeting fio met meerdere jobs en een queue depth boven 1.
Lees de gezondheid van NVMe uit via het controller-device:
smartctl -a /dev/nvme0| Veld | Omschrijving | Verwachte waarde |
|---|---|---|
| Critical Warning | Waarschuwingsvlaggen op controllerniveau, bijvoorbeeld read-only modus of oververhitting. | 0x00 |
| Available Spare | Resterende reservecapaciteit, als percentage. | Ruim boven de eigen Available Spare Threshold van de schijf |
| Percentage Used | Schatting van de fabrikant van de verbruikte schrijfduurzaamheid. Dit kan boven 100 uitkomen zonder dat de schijf meteen uitvalt, maar de schijf is dan voorbij zijn opgegeven levensduur. | Ruim onder 100 |
| Media and Data Integrity Errors | Onherstelde fouten in de data-integriteit. | 0 |
NVMe-fouten op kernelniveau verschijnen onder een andere tag dan ATA-fouten:
dmesg | grep -i nvmeNet als bij SATA-schijven: open een supportticket met de smartctl-uitvoer als er iets niet klopt.