Ich 'reorganisiere' gerade die Dateistruktur innerhalb eines RAIDZ1-Volumes. Verschieben von Verzeichnissen von einem Dataset in ein anderes, die beide auf demselben Volume enthalten sind.
SSH ist in die Maschine eingestiegen und hat ein gutes altmodisches gemacht:
mv * destination
Sollte das nicht sofort sein? Ich verstehe, dass es auf drei Laufwerke verteilt ist, aber gleichzeitig müssen die Dateien selbst nicht wirklich verschoben werden - ich habe nur erwartet, dass es die Zeiger für diese Dateien ändert und im Grunde genommen augenblicklich ist. Es ist definitiv nicht. Ich muss ungefähr 500 GB Daten verschieben und es läuft jetzt seit ungefähr einer halben Stunde. oO
Warum ist es nicht fast augenblicklich?
Technische Daten: CPU: Intel G3220
MB: Gigabyte GA-B85-HD3
MEM: Kingston DDR3-1600 8 GB
FESTPLATTE: 3 x 2 TB WD Green in RAIDZ1-Volume
Antworten:
Du denkst über Dinge von der falschen Ebene nach, ist alles.
Wenn Sie eine Datei innerhalb eines einzelnen ZFS-Datasets verschieben, reagiert sie ähnlich wie erwartet. Wenn Sie eine Datei innerhalb der Grenzen eines Pools, aber zwischen Datasets verschieben, ist dies eine echte Verschiebung. Ja, technisch gesehen sind die Daten gerade von Punkt A nach Punkt B gegangen, und beide Punkte befinden sich auf denselben Platten - aber aus der Sicht von ZFS hat sie die Häuser verschoben.
ZFS-Datasets sind separate Dateisysteme. Echte Dateisysteme. Sie können unterschiedliche Blockgrößen, Komprimierungseinstellungen usw. haben. Das Verschieben einer Datei zwischen zwei ZFS-Dateisystemen, auch im selben Pool, ist eine echte Bewegung - Bits werden gelesen und dann erneut geschrieben, anstatt nur einen Zeiger zu aktualisieren.
Funktionell ist es in etwa analog zum Verschieben einer Datei zwischen zwei ext4-Dateisystemen, die technisch von zwei Partitionen derselben Festplatte stammen. Die beiden Dateisysteme sind trotz gemeinsamer Hardware logisch unterschiedlich, sodass keine Zeigeränderung stattfinden kann Verschieben Sie die Datei physisch, obwohl tatsächlich nur Daten von einem Speicherort an einen anderen auf demselben zugrunde liegenden Laufwerk kopiert werden.
quelle