So weit weiß ich, dass cat /sys/block/<devicename>/queue/rotational
ich damit herausfinden kann, ob mein Laufwerk eine SSD oder eine HDD ist. Gibt es etwas Ähnliches, um herauszufinden, ob es SMR (Shingled Magnetic Recording) verwendet?
Antwort1
Die einzige Möglichkeit, sich sicher zu sein, besteht darin, das Laufwerk mit ausreichend wahlfreiem Schreibzugriff zu benchmarken. „Laufwerksverwaltetes“ SMR soll für den Hostcomputer vollkommen transparent sein, und manchmal erwähnen Hersteller SMR nicht. Bei „transparent“ geht es jedoch nur um logisches Verhalten, nicht um Leistung (oder Latenz).
Ich würde Folgendes vorschlagen. Führen Sie es fio
wie folgt aus (zuerst cd
in das Verzeichnis auf der zu testenden Festplatte, da im Folgenden eine Benchmark-Testdatei im aktuellen Arbeitsverzeichnis erstellt wird):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randwrite --size=500g --io_size=1500g --blocksize=10m --ioengine=libaio --iodepth=1 --direct=1 --numjobs=1 --runtime=3600 --group_reporting
Dieses Beispiel erstellt eine 500 GB große Datei mit pseudozufälligen Daten, wählt dann einen zufälligen Speicherort darin aus und schreibt 10 MB pseudozufällige Daten in die Datei. Anschließend wird die Auswahl des zufälligen Speicherorts und das Schreiben bis zu 1 Stunde lang wiederholt oder bis 1,5 TB geschrieben wurden. Achten Sie auf die ETA-Zeilen, die ungefähr so aussehen:
Jobs: 1 (f=1): [w(1)] [20.0% done] [0KB/40960KB/0KB /s] [0/4/0 iops] [eta 00m:28s]
Der obige Befehl gibt alle 5 Sekunden eine neue ETA-Zeile aus. Sehen Sie sich den aktuellen Durchsatz und die IOPS zwischen den Schrägstrichen ( 40960KB
und 4
) oben an. Für das SMR-Laufwerk sollten Sie zunächst gute Werte erhalten (100 MB+/s und 10+ IOPS), aber im weiteren Verlauf des Tests und wenn sich der interne Cache des SMR-Laufwerks füllt (normalerweise etwa 20 GB), schwankt die Leistung. Manchmal liegt sie nahe der Startgeschwindigkeit, manchmal liegt sie für längere Zeit bei etwa 0 MB/s und 0-1 IOPS. Es sollten jedoch nie Fehler auftreten.
Beachten Sie, dass SMR-Laufwerke bei Gebrauch oder Benchmarking langsamer werden! Einige Laufwerke unterstützen den TRIM-Befehl und fstrim
können dabei helfen, die Laufwerksgeschwindigkeit wieder auf den Originalwert zu bringen.
Auch ohne TRIM erreicht ein gut gemachter „laufwerksgesteuerter“ SMR seine ursprüngliche Geschwindigkeit, wenn er lange genug im Leerlauf mit Strom versorgt wird. Möglicherweise müssen Sie das Herunterfahren der Festplatte (Energieverwaltung) deaktivieren, wenn sie in den Ruhezustand wechselt, bevor der interne Cache vollständig in den SMR-Bereich geleert wurde. Alternativ können Sie einen Look einrichten, der ab und zu ein wenig schreibt. Sogar ein Einzeiler wie
while true; do date >> timestamps.txt; sleep 5m; done
in einem Verzeichnis, das auf dem zu testenden Gerät gespeichert ist, reicht völlig aus und Sie müssen es nur mit Strg+C beenden, wenn Sie fertig sind. Bei den von mir verwendeten Seagate SMR-Laufwerken scheint das vollständige Leeren des Caches etwa eine halbe Stunde zu dauern. Während dieser Zeit klingt das Laufwerk, als würde es Daten schreiben, obwohl vom Computer nichts auf das Laufwerk geschrieben wird. Leider kenne ich keine Möglichkeit, den Status des Leerens vom Laufwerk abzufragen. Hören Sie entweder auf die Laufwerksgeräusche oder warten Sie einfach lange genug.
Beispiel: Das Seagate SMR-Laufwerk scheint während des SMR-Flushs problemlos in den Ruhezustand zu wechseln (wahrscheinlich um vorzutäuschen, für den Benutzer völlig transparent zu sein) und den Flush nach dem nächsten Aufwachen fortzusetzen. Dies ist insofern transparent, als dass selbst bei einem Stromausfall keine Daten beschädigt werden. Dies führt jedoch zu einer sehr schlechten Leistung, wenn Sie ab und zu große Mengen schreiben und das Laufwerk danach sofort in den Ruhezustand versetzen (z. B. wenn Sie ein solches Laufwerk als Backup-Laufwerk verwenden, das sofort ausgehängt und getrennt wird, nachdem das Backup logisch abgeschlossen ist). Wenn Sie das nächste Mal ein weiteres Backup erstellen, konkurriert das neue Backup mit dem SMR-Flush des vorherigen Backups und die Leistung wird sehr gering sein. Wenn Sie ein solches Laufwerk immer eingeschaltet lassen und nur bis zu 10 GB auf einmal schreiben, ist es genauso schnell oder schneller als ein normales PMR-HDD-Laufwerk.
Antwort2
Moderne Versionen vonsg3_utilshaben einen Befehl sg_rep_zones, der das Laufwerk abfragt und nach seiner SMR-Konfiguration fragt. Möglicherweise müssen Sie dies manuell erstellen, wenn Ihre Distribution keine aktuelle Version hat.
Damit können Sie definitiv feststellen, ob das LaufwerkIstSMR.
Aber selbst wenn der Befehl meldet Report zones command not supported
, bedeutet das nicht, dass das Laufwerkist nichtSMR. Einige SMR-Laufwerke verwenden „laufwerksverwaltetes“ SMR, was bedeutet, dass das Laufwerk alles wie von Zauberhand erledigt und Sie sich angeblich nicht darum kümmern müssen. In diesem Fall würde es den Befehl „Zonen melden“ nicht unbedingt unterstützen.
Sie können auch versuchen, zu prüfen, ob das Laufwerk die Befehle „unmap“ oder „trim“ unterstützt – sg_unmap, ebenfalls Teil von sg3_utils. Ein Nicht-SMR-Laufwerk unterstützt diesen Befehl wahrscheinlich nicht (aber auch hier gilt, dass nicht alle SMR-Laufwerke ihn unterstützen).