ไม่กี่วันที่ผ่านมาฉันสังเกตเห็นบางสิ่งที่ค่อนข้างแปลก (อย่างน้อยสำหรับฉัน) ฉันวิ่ง rsync คัดลอกข้อมูลเดียวกันและลบหลังจากนั้นก็จะ NFS /nfs_mount/TESTติดที่เรียกว่า นี้/nfs_mount/TESTจะเป็นเจ้าภาพ / nfs_server-eth1ส่งออกจาก MTU บนเน็ตเวิร์กอินเตอร์เฟสทั้งสองคือ 9000 สวิตช์ในระหว่างรองรับเฟรมขนาดใหญ่เช่นกัน ถ้าฉันจะrsync -av dir /nfs_mount/TEST/ได้รับความเร็วการถ่ายโอนเครือข่าย X MBps ถ้าฉันจะrsync -av dir nfs_server-eth1:/nfs_mount/TEST/ได้รับความเร็วการถ่ายโอนเครือข่ายอย่างน้อย 2X MBps NFS nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcpของฉันติดตัวเลือก
Bottom line: การถ่ายโอนทั้งสองผ่านเครือข่ายย่อยเดียวกัน, สายไฟเดียวกัน, อินเทอร์เฟซเดียวกัน, อ่านข้อมูลเดียวกัน, เขียนไปยังไดเรกทอรีเดียวกัน, เป็นต้นความแตกต่างเพียงอย่างเดียวคือผ่าน NFSv3, อีกอันหนึ่งผ่าน rsync
ไคลเอนต์คือ Ubuntu 10.04, เซิร์ฟเวอร์ Ubuntu 9.10
ทำไม rsync ถึงเร็วขนาดนี้? วิธีทำให้ NFS ตรงกับความเร็วนั้น?
ขอบคุณ
แก้ไข: โปรดทราบว่าฉันใช้ rsync เพื่อเขียนไปยังการแบ่งปัน NFS หรือ SSH ลงในเซิร์ฟเวอร์ NFS และเขียนในเครื่องที่นั่น ทั้งสองครั้งที่ฉันrsync -avเริ่มต้นด้วยไดเรกทอรีปลายทางที่ชัดเจน พรุ่งนี้ฉันจะลองทำสำเนาธรรมดา
แก้ไข 2 (ข้อมูลเพิ่มเติม): ขนาดไฟล์มีตั้งแต่ 1KB-15MB ไฟล์ถูกบีบอัดอยู่แล้วฉันพยายามที่จะบีบอัดมันต่อไปโดยไม่ประสบความสำเร็จ ฉันทำไฟล์จากที่tar.gz dirนี่คือรูปแบบ:
rsync -av dir /nfs_mount/TEST/= การถ่ายโอนที่ช้าที่สุด;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/= rsync ที่เร็วที่สุดที่เปิดใช้งานเฟรมขนาดใหญ่; โดยไม่ต้องมีเฟรมจัมโบ้ช้ากว่าเล็กน้อย แต่ก็ยังเร็วกว่าเฟรมโดยตรงไปยัง NFS อย่างมีนัยสำคัญrsync -av dir.tar.gz nfs_server-eth1:/nfs_mount/TEST/= เกี่ยวกับสิ่งเดียวกันกับที่ไม่ใช่ tar.gz
ทดสอบด้วยcpและscp:
cp -r dir /nfs_mount/TEST/= เร็วกว่าเล็กน้อยrsync -av dir /nfs_mount/TEST/แต่ก็ยังช้ากว่าrsync -av dir nfs_server-eth1:/nfs_mount/TEST/อย่างมากscp -r dir /nfs_mount/TEST/= โดยรวมที่เร็วที่สุดเอาชนะได้เล็กน้อยrsync -av dir nfs_server-eth1:/nfs_mount/TEST/;scp -r dir.tar.gz /nfs_mount/TEST/= เกี่ยวกับสิ่งเดียวกันกับที่ไม่ใช่ tar.gz
ข้อสรุปอิงจากผลลัพธ์นี้: สำหรับการทดสอบนี้ไม่มีความแตกต่างอย่างมีนัยสำคัญหากใช้ tar.gz ไฟล์ขนาดใหญ่หรือขนาดเล็กจำนวนมาก การเปิดหรือปิดเฟรมจัมโบ้นั้นแทบไม่ต่างกันเลย cpและscpเร็วกว่าสิ่งที่rsync -avเทียบเท่า การเขียนลงใน NFS ที่ส่งออกโดยตรงนั้นช้ากว่าอย่างมาก (อย่างน้อย 2 เท่า) มากกว่าการเขียนไปยังไดเรกทอรีเดียวกันบน SSH โดยไม่คำนึงถึงวิธีการที่ใช้
ความแตกต่างระหว่างcpและrsyncไม่เกี่ยวข้องในกรณีนี้ ฉันตัดสินใจที่จะลองcpและscpเพียงเพื่อดูว่าพวกเขาแสดงรูปแบบเดียวกันและพวกเขาทำ - ความแตกต่าง 2X
ตามที่ฉันใช้rsyncหรือcpในทั้งสองกรณีฉันไม่สามารถเข้าใจได้ว่าอะไรที่ป้องกันไม่ให้ NFS เข้าถึงความเร็วการถ่ายโอนของคำสั่งเดียวกันผ่าน SSH
ทำไมการเขียนถึงการแชร์ NFS จึงช้ากว่าการเขียนที่เดียวกันถึง SSH ถึง 2 เท่า?
(ตัวเลือก NFS เซิร์ฟเวอร์ / etc / ส่งออก) rw,no_root_squash,no_subtree_check,syncEdit3: ของลูกค้า / proc / nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcpเมาท์แสดง:
ขอบคุณทุกคน!