Медленная передача файлов между домашним сервером и ПК через Ethernet

396
James Stone

У меня есть сервер HP Proliant DL385 G5p, который я использую для размещения личного файлового сервера Debian 9 через виртуальную машину на гипервизоре. Эта виртуальная машина имеет собственное соединение Ethernet 1 Гбит / с с коммутатором той же скорости, к которому подключен и мой обычный ПК. Все три устройства способны работать со скоростью 1 Гбит / с.

Ранее я использовал установку Debian непосредственно на диск на сервере с остальной частью сети и мог достигать скоростей передачи, достаточно близких к объявленным 1 Гбит / с, однако, поскольку я начал запускать файловый сервер на виртуальной машине, передача Скорости где-то в диапазоне 5 МБ / с (40 МБ / с) в хороший день.

Программное обеспечение, которое я использую для передачи своих файлов с моего компьютера (под управлением Windows 10), называется «SFTP Net Drive», что позволяет мне просматривать содержимое файлового сервера из Проводника (я не хотел использовать другой программный инструмент для подключения к серверу каждый раз только потому, что Windows не поддерживает SFTP). Когда я запускал сервер прямо на диске без гипервизора, я использовал программу под названием «WinSCP», которая позволяет осуществлять несколько (до 9) одновременных передач по одной сети. Это привело бы к насыщению соединения 1000 Мбит / с, и я не увидел бы плохих скоростей, кроме случаев передачи действительно маленьких файлов (менее 1 КБ).

Я использовал IPerf для проверки соединения с сервером с моего компьютера (и наоборот, чтобы убедиться), и соединение достаточно близко к тому, что должно быть, ~ 1000 Мбит / с. Я также проверил скорость записи на диск на сервере, но, похоже, он работает нормально (я думаю, около 6000 МБ / с, но не могу вспомнить. Не помню, какой инструмент я использовал для тестирования). В RAID 5 имеется 4 физических диска по 72 ГБ, которые гипервизор интерпретирует как один логический диск. Затем гипервизор назначает виртуальной машине еще один логический раздел этого диска, который, вероятно, может быть снова разделен - в моем случае, Debian - с использованием LVM. (Не думайте, что вам нужна вся эта информация, но она может быть полезна).

Используя тот факт, что сервер раньше работал нормально, я полагаю, можно с уверенностью предположить, что это проблема программного обеспечения или неправильная конфигурация, вероятно, на стороне Windows. Одним из возможных объяснений такой медлительности может быть тот факт, что Windows, кажется, способна передавать только одну вещь за один раз с использованием SFTP-диска? Любая помощь в выяснении этого и исправлении это будет высоко ценится.

Изменить: Хорошо, поэтому я обнаружил еще одну странную вещь, которая происходит, когда я передаю файлы на сервер с использованием программного обеспечения, которое я использовал, WinSCP. При передаче некоторых музыкальных файлов на сервер (~ 50 МБ каждый, примерно 300 из них) после того, как все 9 одновременных соединений были установлены, скорость передачи достигла максимума в 110 МБ / с, где она оставалась в течение примерно 20 секунд. Затем он быстро опустился до 20-30 МБ / с и оставался там до завершения передачи. Это наводит меня на мысль, что существует какой-то буфер, который после насыщения замедляет скорость передачи, чтобы не отставать от запросов на запись на диск? Не совсем уверен, имеет ли это смысл, но мне это кажется логичным.

Редактировать 2: Скорость передачи данных при переносе файлов с сервера на мой компьютер столь же плоха, около 3-8 МБ / с в соответствии с Windows.

1
Google "bufferbloat". Трудно найти эти буферы, они могут быть, например, где-то в вашем роутере. dirkt 5 лет назад 0

1 ответ на вопрос

0
Abdurrahim

Вы тестировали скорость диска вашей виртуальной машины. Для меня это выглядит особенно, если вы используете QCOW2, вы можете получить плохие скорости: https://serverfault.com/questions/407842/incredbly-slow-kvm-disk-performance-qcow2-disk-files-virtio или https: / /serverfault.com/questions/675704/extremely-slow-qemu-storage-performance-with-qcow2-images просто погуглите "медленный qcow2" и посмотрите,

Извините за медленный ответ, был довольно занят в последнее время. Во всяком случае, я проверил скорость чтения и записи виртуальной машины и получил некоторые приличные результаты. Я протестировал скорость чтения с помощью `hdparm -Tt / dev / xvda5` и получил 2000 + МБ / с кэшированных чтений и около 100 МБ / с буферизованных чтений с диска. Протестировал скорость записи с помощью `dd` с несколькими различными размерами данных и получил более 100 МБ / с при использовании небольших файлов размером> 10 КБ, но результаты довольно мусорные при использовании 1 МБ; до 50 МБ / с. James Stone 5 лет назад 0
Похоже, мы нашли одну из проблем с вашим виртуальным компьютером. Но это не объясняет всего остального. Следующие шаги, чтобы проверить это две вещи. Попробуйте создать виртуальный диск под вашим vm для использования в качестве общего ресурса, а затем проверьте использование процессора, когда вы достигнете пределов сети с помощью своего виртуального диска. Боюсь, у вас также плохая виртуализация для маршрутизации вашего сетевого устройства Abdurrahim 5 лет назад 0
Я использую на своем компьютере программу под названием XCP-ng Center со считыванием данных о производительности. Я буду включать скриншоты этого в редактировании. James Stone 5 лет назад 0
Снова извините за медленный ответ. Пока я не смог этого сделать, однако мне в голову пришла мысль: в настоящее время я использую RAID 5 на сервере и, согласно [этому сайту] (www.raid-calculator.com/default. aspx) с 4 дисками по 0,072 ТБ в RAID 1 + 0 у меня может быть _потенциально_ более высокая производительность диска. Стоит ли это тестировать? Мне, вероятно, придется стереть сервер и начать все заново. James Stone 5 лет назад 0
Не смотря на то, что это улучшит скорость, это не решит вашу настоящую проблему. Проблема заключается не в производительности хоста, а в проблеме виртуализации. Скорее всего, я бы нашел что-то не так, если бы проверил этот XCP-ng (какой-то предварительно сконфигурированный гипервизор xen). Если у вас есть время, попробуйте что-нибудь еще, например, использовать libvirt напрямую или, может быть, попробуйте просто пробную версию virtualbox или vmware. Вы получите хорошие скорости при правильной настройке. Также не забудьте проверить, что предлагает этот XCP-ng: если вы можете протестировать различные виртуализации сети, необработанные диски (предварительно выделенные) и т. Д., И посмотрите Abdurrahim 5 лет назад 0