Bash-Skript zum Testen der Übertragungsgeschwindigkeit von Festplatten
Das Linux-Betriebssystem bietet uns viele Möglichkeiten, die Leistung unseres Computers zu messen, einschließlich einzelner Komponenten wie der Festplatte. Es gibt mehrere Tools für diese Aufgabe, und es ist auch möglich, integrierte Tools zu verwenden und unseren eigenen Test zu erstellen, um echte Ergebnisse zu messen. In diesem Tutorial sehen wir, wie Sie ein Bash-Skript verwenden, um die Übertragungsgeschwindigkeit einer Festplatte auf einem Linux-System zu testen. Wir werden auch einige andere Tools kennenlernen, die unser Bash-Skript ergänzen und uns zusätzliche Datenpunkte geben können, wenn es um die Übertragungsgeschwindigkeit unserer Festplatte geht, einschließlich Lese- und Schreibgeschwindigkeit.
In diesem Tutorial lernen Sie:
- So testen Sie die Festplattengeschwindigkeit mit
hdparm - Wie man die Geschwindigkeit des harten Tauchgangs mit
ddund einem Bash-Skript testet
Testen der Festplattengeschwindigkeit
Linux verfügt bereits über zahlreiche Tools, um die Festplattengeschwindigkeit zu testen. Wir können einen Geschwindigkeitstest mit dem Befehl hdparm durchführen, wie unten gezeigt:
sudo hdparm -t --direct /dev/sda
/dev/sda:
Timing O_DIRECT disk reads: 2900 MB in 3.00 seconds = 966.60 MB/sec
In diesem Fall greift der Befehl hdparm jedoch auf die Rohfestplatte zu, wobei alle Partitionen und Dateisysteme ignoriert werden. In einigen Fällen gibt uns dies keine realistische Übertragungsgeschwindigkeit, die wir erwarten könnten, wenn wir Dateien selbst übertragen. Darüber hinaus ermöglicht es uns nicht, die Übertragungsgeschwindigkeit zwischen einem oder mehreren Geräten oder mehreren Dateisystemen zu testen.
Bash-Skript zum Testen der Festplattengeschwindigkeit
Hier ist ein kleines Bash-Skript, um die Übertragungsgeschwindigkeit der Festplatte zu testen. Es sollte als Annäherung verstanden werden. Der Geschwindigkeitswert wird über die Ausgabe des Linux-Befehls dd übernommen.
Die Schwäche des folgenden Skripts besteht darin, dass es die Lesegeschwindigkeit der Quellfestplatte nicht berücksichtigt, aber es ist genau, wenn es die Übertragungsgeschwindigkeit zwischen zwei Festplatten oder die Geschwindigkeit zwischen zwei Knoten über das Netzwerk mit NFS oder Samba misst.
#!/bin/bash
USAGE:
./speed_test.sh /path/to/my/file /path/to/destination number_of_tests
NUM_TESTs=$3
SUM=0
for i in $(seq 1 $NUM_TESTs); do
REC=$(dd if=$1 of=$2 2>some_random_file_ ; cat some_random_file_ | cut -d " " -f8 | tail -1)
SUM=$(echo $SUM + $REC | bc)
done
RESULT=$(echo $SUM / $NUM_TESTs | bc | awk '{ str1=str1 $0 }END{ print str1 }')
echo $RESULT MB/s
#clean up
rm some_random_file_
rm $2Hinweis: Wenn Sie keine Datei zum Kopieren haben, erstellen Sie einfach eine, indem Sie den folgenden Linux-Befehl einige Sekunden lang ausführen und mit STRG + C unterbrechen:
cat /dev/zero > myfile.zero
Führen Sie das Skript mit 3 Argumenten aus: Quelldatei, Zieldatei und Anzahl der Ausführungen, um einen Durchschnitt zu erstellen:
./speed_test.sh /mnt/sdb1/ubuntu.iso /mnt/sda1/ubuntu.dd 3
Die Ausgabe wird in Megabyte pro Sekunde angezeigt:
57 MB/s
Abschließende Gedanken
In diesem Tutorial haben wir gesehen, wie man ein Bash-Skript verwendet, um die Übertragungsgeschwindigkeit von Festplatten auf einem Linux-System zu testen. Unser Skript verwendet den Befehl dd, um eine Beispieldatei auf das Dateisystem selbst zu übertragen, was eine großartige Möglichkeit ist, die tatsächliche Übertragungsgeschwindigkeit zu messen. Während andere Tools wie hdparm es einfach machen, die Rohgeschwindigkeit zu testen, ergibt dies nicht immer eine realistische Übertragungsgeschwindigkeit, die beim Kopieren von Dateien auf das Dateisystem oder zwischen verschiedenen Geräten erwartet werden kann.
