spärliche Datei, die über NFS verschoben / kopiert wird

2108
Karl Richter

Ich habe eine spärliche Datei mit erstellt

truncate -s 4T image.img 

auf einem ext4-Dateisystem, das ich über NFS einhänge. Der folgende Test zeigt, dass das System Probleme mit der Erkennung von Dateien mit geringer Dichte hat: beides

cp --sparse=always /mnt/data_extension/a.img /tmp/a.img # where a.img is created the same way image.img is rsync --sparse /mnt/data_extension/a.img /tmp/a.img 

Es dauert lange, und ich lasse es niemals fertig sein, da der Befehl mehr als eine Sekunde dauert, wenn die spärliche Datei nicht als solche erkannt wird und das Kopieren / Verschieben von Löchern E / A verbraucht.

tar --sparse -c -v -f /tmp/a.tar /mnt/data_extension/a.img 

kehrt sofort zurück und erzeugt einen tar, der sich tarnen kann, wenn a.img leer ist, wenn ich etwas schreibe (z. B. ein falsches btrfs-Dateisystem erstellen sudo mkfs.btrfs /mnt/data_extension/a.img), es funktioniert nicht mehr, d.

Auf dem lokalen Ziel-Ext4-Dateisystem funktioniert alles gut, dh das Kopieren und Verschieben des Demo-Images a.imgerfolgt innerhalb von 1 Sekunde oder weniger.

Wenn ich die obigen Befehle an das aktuelle Bild anwenden image.imgund watch du -h /local/image.imgdie Größe von 0 wird nie aktualisiert, aber es sollte nach dem ersten Byte geschrieben wurde.

Mount-Informationen für /mnt/data_extension:

$ mount | grep /mnt/data_extension 192.168.178.76:/volume1/data_extension on /mnt/data_extension type nfs (rw,addr=192.168.178.76) 

Wie kann ich image.imgvom NFS-Mount in ein lokales Dateisystem verschieben / kopieren, ohne 4 TB lesen zu müssen ?!

BEARBEITEN: Die Angabe sparse-version=1.0macht tarArbeit auf dem Client, aber nicht über NFS (und cifsdas habe ich inzwischen mit demselben Verhalten versucht). Dies ermöglicht es zumindest, die Datei mit geringer Dichte auf dem Server zu tarieren und das Ergebnis mit den Kosten einer unnötigen Entar-Aktion auf dem Client zu übertragen.

0

1 Antwort auf die Frage

0
Karl Richter

Erstellung ist Unterstützung durch SEEK_SET, Unterstützung fallocatewird in Version 4.2 hinzugefügt (derzeit in Entwicklung) [ http://www.spinics.net/lists/linux-nfs/msg44500.html]