Samba4가 설치되어 실행되는 NAS 임베디드 Linux 장치가 있습니다. 삼바 공유를 구성했으며 클라이언트의 해당 삼바 공유 내에서 서버측 복사를 수행하려고 합니다. 이것이 내가하려는 일입니다. https://wiki.samba.org/index.php/Server-Side_Copy
처음에는 Windows7에서 시도했습니다. 먼저 WIN7 노트북에서 삼바 공유를 마운트하고 robocopy 명령을 사용하여 해당 공유 내의 두 디렉터리 간에 큰 파일을 복사합니다. 그리고 나는 그것이 작동하는 것을 볼 수 있습니다. 로보포이는 대용량 파일을 복사하는 속도가 정말 빠릅니다. 그리고 Wireshark를 사용하여 네트워크 트래픽도 분석합니다. Ioctl req FSCTL_SRV_COPYCHUNK_WRITE File:... 및 Ioctl resp FSCTL_SRV_COPYCHUNK_WRITE File:...
그런 다음 ubuntu15를 사용해 보았습니다. 나는 ubuntu15의 Linux 커널이 CIFS_IOC_COPYCHUNK_FILE ioctl을 지원한다고 확신합니다. 다음을 사용하여 해당 공유를 마운트합니다: mount.cifs //[host_ip]/[share_name] [mount_path] -o vers=2.1,username=root. 서버 측 복사를 사용하려면 SMB2 프로토콜을 사용해야 하기 때문에 vers=2.1이 있어야 한다고 확신합니다. 그리고 다시 바탕으로https://wiki.samba.org/index.php/Server-Side_Copy, "cloner"가 이 기능을 수행한다고 나와 있습니다. 여기서 핵심 기능은 "ioctl(dst_fd, CIFS_IOC_COPYCHUNK_FILE, src_fd)"를 호출하는 것입니다. 그래서 "cloner"를 다운로드하여 컴파일하고 이 명령을 실행했는데 작동하지 않습니다. 기본적으로 cloner 명령은 시간이 오래 걸리고 절대 멈추지 않습니다(kill -9가 작동하지 않더라도). 나는 Wireshark를 사용하여 네트워크 트래픽도 모니터링합니다. 내가 본 것은 Windows7과 동일한 Ioctl req FSCTL_SRV_COPYCHUNK_WRITE File:... 요청을 보내고 있지만 Ioctl 응답, 오류: status_invalid_device_request라는 오류가 표시됩니다.
Linux에서는 cloner가 작동하지 않지만 win7에서는 robocopy가 작동하는 이유는 무엇입니까? 오류: status_invalid_device_request가 발생하는 이유는 무엇입니까? 클로너에 무엇이 빠졌나요? 여기에 누락된 내용이나 버그가 있는 경우 이를 수정하는 방법은 무엇입니까? 사용할 수 있는 기존 클라이언트 측 서버 측 복사 코드나 도구가 있습니까?