Кілька днів тому я помітив щось досить дивне (принаймні для мене). Я запустив rsync, копіюючи ті самі дані та видаляючи їх згодом на кріплення NFS, зване /nfs_mount/TEST. Це /nfs_mount/TESTрозміщено / експортовано з nfs_server-eth1. MTU на обох мережних інтерфейсах 9000, перемикання між підтримкою jumbo-кадрів також. Якщо мені це, rsync -av dir /nfs_mount/TEST/я отримую швидкість передачі мережі X Мбіт / с. Якщо я це зробити, rsync -av dir nfs_server-eth1:/nfs_mount/TEST/я отримую швидкість передачі мережі принаймні 2X Мбіт / с. Мої параметри кріплення 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.
Підсумок: обидва передачі йдуть по одній мережевій підмережі, однакові дроти, однакові інтерфейси, читаються ті самі дані, записуються в ту саму директорію і т. Д. Тільки різниця одна - через NFSv3, інша - через rsync.
Клієнт - Ubuntu 10.04, сервер Ubuntu 9.10.
Чому rsync набагато швидше? Як зробити так, щоб NFS відповідав цій швидкості?
Спасибі
Редагувати: зверніть увагу: я використовую rsync для запису на NFS-спільний доступ або на SSH на сервер NFS і пишу локально там. І те й інше rsync -av, починаючи з чіткого каталогу призначення. Завтра спробую із звичайною копією.
Edit2 (додаткова інформація): Розмір файлу коливається від 1 КБ-15 МБ. Файли вже стиснуті, я намагався додатково стиснути їх. Я зробив tar.gzфайл із цього dir. Ось викрійка:
rsync -av dir /nfs_mount/TEST/= найповільніша передача;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/= найшвидший rsync з увімкненими рамками jumbo; без джомбових кадрів трохи повільніше, але все-таки значно швидше, ніж безпосередньо безпосередньо до NFS;rsync -av dir.tar.gz nfs_server-eth1:/nfs_mount/TEST/= приблизно те саме, що його еквівалент non-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/= приблизно те саме, що його еквівалент non-tar.gz;
Висновок, виходячи з цих результатів: Для цього тесту немає суттєвої різниці, якщо ви використовуєте великий файл tar.gz або багато маленьких. Увімкнення або вимкнення кадрів Jumbo також майже не має ніякої різниці. cpі scpшвидше, ніж їх відповідні rsync -avеквіваленти. Написання безпосередньо на експортовану частку NFS значно повільніше (принаймні в 2 рази), ніж запис у ту саму директорію через SSH, незалежно від використовуваного методу.
Відмінності між cpі rsyncне мають значення в даному випадку. Я вирішив спробувати cpі scpпросто побачити, чи показують вони однаковий зразок, а вони - 2X різниця.
Оскільки я використовую rsyncабо cpв обох випадках, я не можу зрозуміти, що заважає NFS досягти швидкості передачі тих же команд через SSH.
Чому письмовій формі на NFS частку відбувається в 2 рази повільніше, ніж писати там же через SSH?
Edit3 (NFS - сервер / і т.д. / експорту варіантів): rw,no_root_squash,no_subtree_check,sync. Клієнт / 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.
Дякую вам всім!