Linux 的伺服器端複製不起作用

Linux 的伺服器端複製不起作用

我有一個 NAS 嵌入式 Linux 設備,已安裝並運行 Samba4。我已經配置了 samba 共享,並且正在嘗試從客戶端在該 samba 共享內進行伺服器端複製。這就是我正在嘗試做的事情: https://wiki.samba.org/index.php/Server-Side_Copy

  1. 我首先在Windows7上嘗試過。我首先從我的 WIN7 筆記型電腦掛載該 samba 共享,並使用 robocopy 命令在該共享內的兩個目錄之間複製一個大檔案。我可以看到這是有效的。 robocpoy 複製大檔案的速度非常快。我還使用wireshark分析網路流量。它有類似: Ioctl req FSCTL_SRV_COPYCHUNK_WRITE File:... 和 Ioctl resp FSCTL_SRV_COPYCHUNK_WRITE File:...

  2. 然後我嘗試了ubuntu15。我非常確定ubuntu15的Linux核心支援CIFS_IOC_COPYCHUNK_FILE ioctl。我使用以下命令掛載該共用:mount.cifs //[host_ip]/[share_name] [mount_path] -o vers=2.1,username=root。我很確定它必須有 vers=2.1,因為要使用伺服器端複製,它必須使用 SMB2 協定。並再次基於https://wiki.samba.org/index.php/Server-Side_Copy,它說“克隆器”可以實現此功能。這裡的關鍵函數是呼叫:「ioctl(dst_fd, CIFS_IOC_COPYCHUNK_FILE, src_fd)」。所以我下載並編譯了“clone”並執行這個命令,但它不起作用。基本上,克隆器命令永遠不會停止(kill -9甚至不起作用)。我也使用wireshark監控網路流量。我看到的是:它正在發送與 Windows7 相同的請求,即 Ioctl req FSCTL_SRV_COPYCHUNK_WRITE 檔案:...,但收到錯誤訊息:Ioctl 回應,錯誤:status_invalid_device_request

為什麼cloner在linux上不起作用,而robocopy在win7上卻起作用?為什麼會出現錯誤:status_invalid_device_request?克隆器中缺少什麼?如果這裡缺少某些內容或存在錯誤,如何修復?是否有我可以使用的現有客戶端伺服器端複製程式碼或工具?

相關內容