ไม่กี่วันที่ผ่านมาฉันสังเกตเห็นบางสิ่งที่ค่อนข้างแปลก (อย่างน้อยสำหรับฉัน) ฉันวิ่ง 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,sync
Edit3: ของลูกค้า / 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
เมาท์แสดง:
ขอบคุณทุกคน!