Ich habe ein NAS-Gerät mit eingebettetem Linux, auf dem Samba4 installiert und ausgeführt wird. Ich habe eine Samba-Freigabe konfiguriert und versuche, innerhalb dieser Samba-Freigabe von einem Client aus eine serverseitige Kopie durchzuführen. Folgendes versuche ich zu tun: https://wiki.samba.org/index.php/Server-Side_Copy
Ich habe es zuerst unter Windows 7 versucht. Zuerst mounte ich diese Samba-Freigabe von meinem WIN7-Laptop und verwende den Befehl robocopy, um eine große Datei zwischen zwei Verzeichnissen innerhalb dieser Freigabe zu kopieren. Und ich sehe, dass das funktioniert. Der robocopy kopiert eine große Datei wirklich schnell. Und ich analysiere auch den Netzwerkverkehr mit Wireshark. Es hat so etwas wie: Ioctl req FSCTL_SRV_COPYCHUNK_WRITE File:... und Ioctl resp FSCTL_SRV_COPYCHUNK_WRITE File:...
Dann habe ich es mit Ubuntu 15 versucht. Ich bin ziemlich sicher, dass der Linux-Kernel von Ubuntu 15 CIFS_IOC_COPYCHUNK_FILE ioctl unterstützt. Ich mounte diese Freigabe mit: mount.cifs //[host_ip]/[share_name] [mount_path] -o vers=2.1,username=root. Ich bin ziemlich sicher, dass es vers=2.1 haben muss, weil es für die Verwendung von Server-Side-Copy das SMB2-Protokoll verwenden muss. Und wieder basierend aufhttps://wiki.samba.org/index.php/Server-Side_Copy, es heißt, dass „cloner“ diese Funktion ausführt. Die Schlüsselfunktion hier ist der Aufruf von: „ioctl(dst_fd, CIFS_IOC_COPYCHUNK_FILE, src_fd)“. Also habe ich „cloner“ heruntergeladen und kompiliert und diesen Befehl ausgeführt, aber er funktioniert nicht. Im Grunde dauert der Befehl „cloner“ ewig und wird nie beendet (kill -9 funktioniert nicht einmal). Ich verwende Wireshark, um den Netzwerkverkehr zu überwachen. Was ich sehe, ist: Es sendet dieselbe Anfrage wie Windows 7, nämlich Ioctl req FSCTL_SRV_COPYCHUNK_WRITE File:..., aber es wird eine Fehlermeldung angezeigt: Ioctl-Antwort, Fehler: status_invalid_device_request
Warum funktioniert Cloner unter Linux nicht, aber Robocopy unter Win7? Warum wird der Fehler „status_invalid_device_request“ angezeigt? Was fehlt im Cloner? Wenn hier etwas fehlt oder ein Fehler vorliegt, wie kann ich das beheben? Gibt es bereits einen Code oder ein Tool zum clientseitigen und serverseitigen Kopieren, das ich verwenden kann?