4

Я хочу настроить NAS, которое я сделал совсем недавно, с Raspberry Pi 2 (четырехъядерный ARM Cortex-A7, 1 ГБ ОЗУ, 32 ГБ microSD) под управлением Raspbian «Jessie»:

  • У меня есть ноутбук - HP Pavilion G6 - под управлением Ubuntu 14.04 и использующий 802.11b/g/n.
  • У меня есть внешний жесткий диск USB 2.0 NTFS, подключенный к Raspberry Pi 2 с использованием Samba и Apache, подключенный к локальной сети моего беспроводного маршрутизатора на скорости 100 Мбит / с.
  • Когда я пытаюсь передать файл с помощью Samba SMB из Raspberry Pi 2, я получаю скорость передачи менее 1 Мбит / с.
  • Когда я передаю файл, используя HTTP от Raspberry Pi 2, я получаю типичную скорость передачи около 3-4 Мбит / с [лучше, но все еще довольно медленно].
  • Когда я передаю файл с помощью FTP из Raspberry Pi 2, я получаю типичную скорость передачи около 2-4 Мбит / с [лучше, но не так хорошо, как HTTP].

Почему передача файла с использованием Samba SMB будет происходить медленнее [в 3-4 раза], чем передача того же файла с использованием HTTP?

Я не ожидаю 10-12 Мбит / с - хотя близко к этому было бы неплохо - от моей локальной сети, поскольку существуют ограничения, при которых скорость сети составляет 100 Мбит, при подключении USB 2.0 и Wi-Fi, но по крайней мере это должно быть быть лучше, чем Интернет, в котором есть все эти узкие места, плюс все остальное, что находится снаружи.

Может ли это быть проблема конфигурации Samba?

Результаты теста [скорость передачи файлов 1,5 Гб]:

  • USB 3.0: 70-80 МБ / с

    Только USB.

    Внешний жесткий диск USB3.0, подключенный к порту USB3.0 ноутбука HP Pavilion G6.

    Файл передан с помощью файлового менеджера Dolphin.

    источник: USB3.0 жесткий диск

    назначение: ноутбук HP Pavilion G6

  • USB 2.0: 20-30 МБ / с

    Только USB.

    Внешний жесткий диск USB3.0 подключен к порту USB2.0 Raspberry Pi.

    Файл протестирован с использованием pv raspberry~$ pv source > destination .

  • Ethernet LAN: 8-9 МБ / с

    Проводной доступ.

    Внешний жесткий диск USB3.0 подключен к порту USB2.0 Raspberry Pi.

    Ноутбук HP Pavilion G6 подключен к сети через локальную сеть Ethernet.

    Файл передан с использованием samba smb:// .

    источник: USB3.0 жесткий диск

    назначение: ноутбук HP Pavilion G6

  • Интернет-файл: 2-3 МБ / с

    Wi-Fi.

  • Скорость HTTP Wi-Fi LAN: 3-4 МБ / с

    Wi-Fi.

    Внешний жесткий диск USB3.0 подключен к порту USB2.0 Raspberry Pi.

    Ноутбук HP Pavilion G6 подключен к сети через Wi-Fi 802.11b / g / n.

    Файл на веб-сервере Apache http:// .

    источник: USB3.0 жесткий диск

    назначение: ноутбук HP Pavilion G6

  • Скорость NFS Wi-Fi LAN: 3-4 МБ / с

    Wi-Fi.

    Внешний жесткий диск USB3.0 подключен к порту USB2.0 Raspberry Pi.

    Ноутбук HP Pavilion G6 подключен к сети через Wi-Fi 802.11b / g / n.

    Файл передан с помощью файлового менеджера Dolphin.

    источник: USB3.0 жесткий диск

    назначение: ноутбук HP Pavilion G6

  • FTP Wi-Fi LAN скорость: 2-4 МБ / с

    Wi-Fi.

    Внешний жесткий диск USB3.0 подключен к порту USB2.0 Raspberry Pi.

    Ноутбук HP Pavilion G6 подключен к сети через Wi-Fi 802.11b / g / n.

    Файл на сервере vsftp ftp:// .

    источник: USB3.0 жесткий диск

    назначение: ноутбук HP Pavilion G6

  • Скорость локальной сети Wi-Fi SMB: <900 КБ / с

    Wi-Fi.

    Внешний жесткий диск USB3.0 подключен к порту USB2.0 Raspberry Pi.

    Ноутбук HP Pavilion G6 подключен к сети через Wi-Fi 802.11b / g / n.

    Файл передан с использованием samba smb:// .

    источник: USB3.0 жесткий диск

    назначение: ноутбук HP Pavilion G6

Как я могу улучшить это?

Вот вывод iwconfig на моем ноутбуке:

wlan0     IEEE 802.11bgn  ESSID:"Irk"  
          Mode:Managed  Frequency:2.412 GHz  Access Point: 34:31:C4:02:46:2D   
          Bit Rate=65 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=63/70  Signal level=-47 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:1369  Invalid misc:12350   Missed beacon:0

Вот информация о сетевом подключении моего Raspberry Pi через, dmesg | grep eth0:

smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1

4 ответа4

2

Устройство SoC, используемое на Pi, не имеет встроенной поддержки ethernet, поэтому функциональность ethernet на Pi обеспечивается микросхемой USB-ethernet, разделяющей ту же шину USB, что и любое другое периферийное устройство USB, которое вы могли подключить к нему (включая любой USB флэш-накопители). Это, вероятно, основная причина, почему вы видите ужасную производительность.

Решение? К сожалению, нет, это аппаратное ограничение. Это не имеет никакого отношения к скорости вашего жесткого диска или настройке сети, которую вы имеете, шина USB на Pi выдвинута до предела, при этом одновременно работают и диск, и Ethernet.

Возможно, вы захотите потратить немного больше на настройку своего NAS и приобрести одноплатный компьютер, который действительно имеет встроенный Ethernet. Существует несколько платформ с поддержкой гигабитного Ethernet.

2

TLDR: SMB и AFP имеют более объемное шифрование и на самом деле делают больше, чем просто показывают индекс файлов. FTP и NFS предназначены для того, чтобы предоставить вам список и выполнить работу. Ваш RPI, как упомянуто в другом комментарии, аппаратно ограничен шиной USB, которая перемещает все данные ввода / вывода. Но 2–4 Мбит / с - это слишком много, поэтому проверьте ваш клиент и обновите все программное обеспечение, 10–18 Мбит / с звучат более корректно, если только ваш RPI или комп не поврежден.

Кажется, неважно, какое оборудование используется, Samba просто медленная. AFP (Apple File Protocol) не лучше, я работаю с AFP и SMB с 2008 года, используя как Windows, так и Mac, очевидно, что я нашел больше свободы с Linux, особенно потому, что они действительно улучшили возможности Wi-Fi для ноутбуков, и экономика вырастает такие вещи, как чип и RPI в их ушах. Но дело в том, что SMB, AFP, NFS и FTP имеют свои недостатки. SMB может быть улучшен, если вы удалите некоторые функции безопасности и то же самое касается AFP. Причина, по которой вы можете видеть улучшение в FTP, заключается в том, что передача данных очень проста: зашифрованное рукопожатие отсутствует. NFS блокирует файлы и, как и FTP, не предназначена для "открытия" (копирования с хост-компьютера в вашу память) и редактирования файлов, в отличие от SMB и AFP, которые предназначены для работы так, как будто вы просматриваете хост-машину.

0

Основываясь на деталях, представленных в вопросе, вот некоторые факторы, которые могут повлиять на скорость местного перевода:

  1. Ресурсы на Raspberry Pi
  2. Скорость чтения жесткого диска, подключенного через USB (скорость чтения обычно должна быть высокой, но не уверен, что диск неисправен)
  3. Драйверы USB на Raspberry Pi
  4. Разъем USB / внешний корпус для подключения жесткого диска к Raspberry Pi

Что можно сделать, чтобы изолировать проблему:

  1. Подключите USB-накопитель напрямую к рабочей станции, которую вы используете, и проверьте скорость передачи.
  2. Используйте проводное соединение на Raspberry Pi (если это еще не сделано)
  3. Скопируйте файлы с «USB-накопителя» в другое хранилище на Raspberry Pi и проверьте скорость передачи
  4. Скопируйте файлы с Raspberry Pi (с eMMC, а не с USB)
  5. Создайте веб-сервер и / или FTP-сервер на Raspberry Pi и перенесите файлы на рабочую станцию по протоколу http и ftp, когда рабочая станция подключена как по беспроводной, так и по проводной сети (4 различных сценария - http с ноутбуком на проводной, http с ноутбуком на беспроводной , FTP с ноутбуком на проводной, FTP с ноутбуком на беспроводной)
  6. Подключите USB-накопитель к другой рабочей станции в сети, отличной от Raspberry Pi, и проверьте скорость передачи. Попробуйте использовать как проводные, так и беспроводные соединения.

Предположения:

  • Нет других устройств, считывающих данные с "NAS", которые были настроены, что также может повлиять на скорость передачи.
  • Вы не подключены к сети, используя как проводное, так и беспроводное соединение. В противном случае существует вероятность того, что трафик в Интернет использует один интерфейс, а локальный трафик - другой, что также может повлиять на скорость передачи.
0

Проще говоря: NFS, FTP и HTTP являются более простыми протоколами, чем более ранние версии SMB. Хотя я бы всегда выступал против использования FTP для передачи файлов, потому что там, где он может быть более компактным, чем SMB, ему не хватает многих функций, которые делают удаленное хранилище безопасным.

Более поздние версии SMB делают его более интегрированным с NFS, но, похоже, вы работаете с Samba 3.x, которая довольно старая (хотя и намного проще в настройке).

Пока мы обсуждаем пропускную способность, я бы также советовал не запускать NTFS на Raspberry Pi, поскольку драйвер Linux NTFS - это ntfs3g, который работает в FUSE. Для тех, кто не знает о FUSE, это способ написания драйверов файловой системы, которые запускаются в пространстве пользователя, а не через оболочку FUSE, а не разработчиков, пишущих модули ядра. Это означает, что вы можете писать драйверы быстрее, безопаснее и более интересными способами (например, я написал драйверы FUSE, которые преобразуют содержимое текстовых файлов в виртуальную файловую систему), однако это обходится дорого, поскольку вы постоянно обмениваетесь данными между ядро и пользовательское пространство. Это будет менее заметно на ПК - и ntfs3g тоже довольно хорошо написан, что помогает - однако на более компактных устройствах, таких как Raspberry Pi, дополнительные затраты ресурсов процессора и памяти будут снижать вашу производительность по сравнению с потоковой передачей данных из исходного файла Linux система вроде ext3/4 или XFS.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .