Кілька днів тому я помітив щось досить дивне (принаймні для мене). Я запустив 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
.
Дякую вам всім!