• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] mv und cp zwischen etx3 Partitionen sehr langsam

wbwb

Hacker
Hallo

ich habe hier (mit viel Mühe ;) ) eine SuSE 11.1 aufgesetzt. Dabei habe ich ganz artig den Vorschlag von Yast das ext3 Filesystem zu benutzen akzeptiert. Nun bekomme ich riesige Bedenken, dass da irgendetwas nicht stimmt:

1) Ich habe auf der Kiste u.a. eine / und eine /home Partition. Nun habe ich mit 'mv' eine etwas größere Dateien 600MB zwischen den Partitionen, also von / in die /home Partition verschoben. Dabei habe ich fast eine Herzstillstand bekommen:

# time mv /home/XXX/600MB_Datei /root

real 0m10.731s
user 0m0.024s
sys 0m2.668s

Fast 11sec für 600MB ?!?!? Ich habe das ein paarmal reproduzierbar wiederholt.

2) Wenn ich das gleiche innerhalb einer der beiden Partitionen mache zB. innerhalb der /home Partition, dann bekomme ich

time mv /home/AAA/600MB_Datei /home/XXX

real 0m0.007s
user 0m0.000s
sys 0m0.004s

3) Was mich nun komplett verwirrt ist, dass ich hier auch eine uralte SuSE 10.0 rumstehen habe die ReiserFS-Partitionen hat. Bei der ist das 'mv'-en sowohl innerhalb als auch zwischen Partitionen blitzschnell - also ähnlich wie im Fall 2) oben ????

4) Wenn ich mir auf der SuSE 11.1 mit ext3 den hdparm-output ansehe dann bekomme ich
su -c '/sbin/hdparm -Tt /dev/sda'
/dev/sda:
Timing cached reads: 11012 MB in 1.99 seconds = 5527.59 MB/sec
Timing buffered disk reads: 196 MB in 3.00 seconds = 65.28 MB/sec

5) Wenn ich dasselbe auf der uralten SuSE 10.0 Kiste mache bekomme ich
su -c '/sbin/hdparm -Tt /dev/hda'
/dev/sda:
Timing cached reads: 2560 MB in 2 seconds = 1279.92 MB/sec
Timing buffered disk reads: 64 MB in 3.06 seconds = 20.94 MB/sec

Die alte SuSE 10.0 Kiste ist also wesentlich langsamer was die Platte angeht.

6) Einen wesentlichen Unterschied zwischen 'cp' und 'mv' gibt es übrigens nicht

Ich versteh' dass alles nicht? Warum ist denn das ext3 FS auf einem System mit einer schnelleren Platte so entsetzlich viel langsamer als das ReiserFS? Warum macht es bei ext3 einen Unterschied um mehr als 10000 ob man zwischen oder innerhalb einer Partition kopiert/verschiebt?

Ich mache hier (hoffentlich) etwas falsch und Hilfe/Erklärung wäre mir sehr willkommen.

wbwb
 
A

Anonymous

Gast
wbwb schrieb:
Ich versteh' dass alles nicht? Warum ist denn das ext3 FS auf einem System mit einer schnelleren Platte so entsetzlich viel langsamer als das ReiserFS? Warum macht es bei ext3 einen Unterschied um mehr als 10000 ob man zwischen oder innerhalb einer Partition kopiert/verschiebt?

Ich mache hier (hoffentlich) etwas falsch und Hilfe/Erklärung wäre mir sehr willkommen.

zuerst mal der Unterschied von mv innerhalb einer Partition und mv über Partitionsgrenzen hinweg

innerhalb einer Partition läuft das folgendermaßen ab.
Es wird ein Hardlink auf die Datei erzeugt in einem anderem Verzeichnis oder im selben Verzeichnis, danach wird der alte Dateiname gelöscht. Es werden also egal wie groß die Datei ist, nur die beiden Verzeichnisdateien werden kurz angefasst und in der Inode die c-Time neu gesetzt , das wars schon. also eine reine Umbenennung auch wenn sich dabei das Verzeichnis ändert.

über Partitionsgrenzen hinweg, muss die ganze Datei kopiert werden, die Attribute und Zeiten (wenn die Rechte dazu ausreichen) in der neuen Datei neu gesetzt werden und dann die alte Datei gelöscht werden. Ein reiner Kopiervorgang mit anschließender Löschung der alten Datei wenn der Kopiervorgang erfolgreich war.

Das Prinzip sollte eigentlich in jedem Dateisystem gleich sein, desshalb sollte auch ein reiserfs da beim verschieben über Filesystemgrenzen viel länger benötigen als beim verschieben innerhalb eines Filesystems.

Wenn du dennoch enorme Unterschiede bemerkst, dann könnte es uU. auch daran liegen, hast du gerade eine Datei gelesen, dann steht diese Datei oder größere Teile davon noch im Cache des Filesystems, wenn genügend Speicher vorhanden ist. Machst du jetzt gleich wieder etwas mit dieser Datei, dann braucht er in diesem Fall die Datei womöglich gar nicht erst nochmal zu lesen, sondern kann gleich aus dem Cache mit schreiben beginnen. Ist auch jetzt noch genügend Hauptspeicher da, dann kommt der Befehl auch schon zurück aber es ist noch gar nicht geschrieben, sondern die Änderung auf der Platte wird immernoch oder erst später auf die Platte geschrieben und ist nur erst einmal im Cache des Filesystems vorhanden.

Wenn du wirklich einigermaßen objektive Zeiten haben willst, dann müsstest du den Cache erst jedes Mal leeren, in dem du vor jedem Versuch die Filesysteme remountest. Oder die Datenmenge muss mindestens das doppelte des Hauptspeichers umfassen, damit das Cachen der Filesysteme nicht so ins Gewicht fällt.

Langsamere Zeiten können auch entstehen wenn sich die beiden Filesysteme auf ein und der selben Platte befinden. Dann entsteht eine Konqurenz zwischen lesen und schreiben und die Platte muss ständig zwischen 2 unterschiedlichen Plattenbereichen hin und her positionieren. Je nach Plattenansteuerung kann es auch einen Flaschenhalseffekt innerhalb der Busverbindung zur Platte geben, da ja hier die doppelte Menge Daten zwischen Platte und Rechner ausgetauscht wird. Erst muss es von Platte in den Rechner gelesen werden, und kaum angekommen muss das selbe auf dem gleichen Weg schon wieder zurück auf die Platte. Auch das kann uU bei machen Platten bremsen.

robi
 
OP
W

wbwb

Hacker
vielen Dank für Deine ausführliche Erklärung! Habe dementsprechend noch ein bisschen herumexperimentiert. Habe jeweils nur von der / auf die /home Partition ge-'mv'-ed und (so wie vorgeschlagen) vor jedem 'mv' die /home Partition auf beiden Rechnern ein- und wieder ausgehängt. Da wurde es gleich anders. Also:

Rechner A:
SuSE 10.0 mit ReiserFS
su -c '/sbin/hdparm -Tt /dev/hda'
/dev/hda:
Timing cached reads: 2560 MB in 2 seconds = 1279.92 MB/sec
Timing buffered disk reads: 64 MB in 3.06 seconds = 20.94 MB/sec

Rechner B:
SuSE 11.1 mit ext3
su -c '/sbin/hdparm -Tt /dev/sda'
/dev/sda:
Timing cached reads: 11012 MB in 1.99 seconds = 5527.59 MB/sec
Timing buffered disk reads: 196 MB in 3.00 seconds = 65.28 MB/sec

Zwei verschiedene Files habe ich jeweils von /root nach /home/XXX verschoben:
File 1 156M
File 2 579M

____________ File 1 _______ File 2
Rechner A___ 14-16 sec ____ 89-91 sec
Rechner B___ 0.4-0.6 sec ___ 9-10 sec

Man sieht, dass die neue Kiste mit dem ext3 jedenfalls schneller beim 'mv' über die Partitionen hinweg ist als die alte Kiste mit dem ReiserFS. Phuuh - ich kann wieder ruhig schlafen :D . Was davon auf das ext3 und was auf die neue Platte entfällt das weiss ich natürlich nicht.

Für eine Analyse wie die Transferrate mit der Dateigröße ausfällt reicht mein kleines Experiment aber wohl nicht aus.

Gruss, wbwb
 

sal

Newbie
robi schrieb:
Langsamere Zeiten können auch entstehen wenn sich die beiden Filesysteme auf ein und der selben Platte befinden. Dann entsteht eine Konqurenz zwischen lesen und schreiben und die Platte muss ständig zwischen 2 unterschiedlichen Plattenbereichen hin und her positionieren. Je nach Plattenansteuerung kann es auch einen Flaschenhalseffekt innerhalb der Busverbindung zur Platte geben, da ja hier die doppelte Menge Daten zwischen Platte und Rechner ausgetauscht wird. Erst muss es von Platte in den Rechner gelesen werden, und kaum angekommen muss das selbe auf dem gleichen Weg schon wieder zurück auf die Platte. Auch das kann uU bei machen Platten bremsen.

robi

Ich habe sowohl unter 10.3, 11.0, als auch unter 11.1 erlebt, dass meine WD Festplatte nicht mit dem USB "Flaschenhals" (wieder was gelernt) umgehen kann. Folge sind Lesefehler, Schreibabbrüche und unsauberes Aushängen. Allerdings tritt das Problem bei mir erst ab ca. 20GB Datenvolumen auf... Mit einem Umweg über eine interne Platte gelingt's allerdings. Derartige Zeit- und Qualitätsunterschiede sind irgendwie störend...
 
Oben