Samba не копирует файлы

Обновлено: 03.07.2024

В этой статье приведены рекомендации по устранению медленной передачи файлов через SMB.

Перенос файлов выполняется очень долго

При снижении скорости передачи файлов учитывайте следующее. выполнены

Попробуйте выполнить команду копирования файлов для операций ввода-вывода без буферизации (xcopy/j или Robocopy).

Проверьте скорость хранения. Это обусловлено тем, что скорость копирования файлов ограничена скоростью хранения.

Копирование файлов иногда запускается быстро, а затем замедляется. Чтобы проверить ситуацию, следуйте приведенным ниже рекомендациям.

Обычно это происходит, когда начальная копия кэшируется или буферизована (в памяти или в кэш-памяти контроллера RAID), и кэш выполняется. Это приводит к тому, что данные записываются непосредственно на диск (сквозная запись). Это медленный процесс.

Используйте счетчики монитора производительности хранилища, чтобы определить, снижается ли производительность хранилища с течением времени. Дополнительные сведения см. в статье Настройка производительности для файловых серверов SMB.

Используйте Раммап (SysInternals), чтобы определить, прекращается ли увеличение использования сопоставленного файла в памяти из-за нехватки свободной памяти.

Найдите потери пакетов в трассировке. Это может привести к регулированию поставщиком перегрузки TCP.

Для SMBv3 и более поздних версий убедитесь, что многоканальный SMB включен и работает.

На клиенте SMB включите крупный MTU в SMB и отключите регулирование полосы пропускания. Для этого выполните следующую команду:

Небольшое перемещение файлов выполняется слишком долго

Снижение скорости перемещения небольших файлов с помощью SMB происходит чаще всего, если имеется много файлов. Это ожидаемое поведение.

При переносе файлов процесс создания файла вызывает высокую нагрузку на протокол и высокую нагрузку на файловую систему. При передаче больших файлов эти затраты происходят только один раз. При передаче большого количества небольших файлов затраты повторяются и замедляется передача данных.

Ниже приведены технические сведения об этой проблеме.

SMB вызывает команду CREATE, чтобы запросить создание файла. В коде будет проверяться, существует ли файл, а затем создан файл. Или некоторые разновидности команды CREATE создают фактический файл.

Каждая команда Create создает действие в файловой системе.

После того, как данные записаны, файл закрывается.

В течение некоторого времени процесс страдает от задержки сети и задержки сервера SMB. Это связано с тем, что запрос SMB сначала преобразуется в команду файловой системы, а затем в фактическую задержку файловой системы для завершения операции.

Если какая-либо антивирусная программа запущена, перенос замедляется. Это происходит потому, что данные, как правило, проверяются средством прослушивания пакетов один раз, а второй раз — при их запись на диск. В некоторых сценариях эти действия повторяются тысячами времени. Вы потенциально видите скорость менее 1 МБ/с.

открытие Office документов выполняется слишком долго

Обычно эта проблема возникает при подключении к глобальной сети. это распространенный способ, который обычно вызывается способом Office приложений (Microsoft Excel, в частности) доступа и чтения данных.

рекомендуется убедиться, что Office и двоичные файлы SMB актуальны, а затем проверить их, выполнив аренду на SMB-сервере. Для этого выполните следующие действия:

выполните следующую команду PowerShell в Windows 8 и Windows Server 2012 или более поздних версиях Windows:

Или выполните следующую команду в окне командной строки с повышенными привилегиями:

После установки этого раздела реестра SMB2 аренды больше не предоставляются, но операционные блокировки остаются доступными. Этот параметр используется в основном для устранения неполадок.

Перезапустите файловый сервер или перезапустите службу сервера . Чтобы перезапустить службу, выполните следующие команды:

Чтобы избежать этой проблемы, можно также реплицировать файл на локальный файловый сервер. дополнительные сведения см. в статье авинг Office документы на сетевом сервере работает медленнее при использовании EFS.

имеется мини-компьютер Lenovo с Windows 8.1 и WiFi сетевой картой (назовём его LEN81) и другой компьютер с ArchLinux и сервером Samba (и кабельной сетевой картой). Соединены они через роутер Asus WL-520 GU.

Проблема в том, что на LEN81 очень медленно копируются файлы с Samba сервера - (10 Кб/сек), так что большие файлы (>200 Mb) не копируются вообще: выдается ошибка. При этом, LEN81 с интернетом и другим компьютером с Windows 7 через сеть работает нормально. Также, на машине с Windows 7 (с кабельной сетевой картой, не WiFi) такой проблемы нет и файлы с Samba сервера копируются нормально.

Пробовал множество вариантов рекомендованных настроек Samba для повышения скорости, но разницы на LEN81 никакой не наблюдается вообще: всегда те же 10 Кб/сек.

Версия Samba на Samba сервере - 4.5.4.

Что может быть причиной такого медленного соединения с Samba?

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Не копируются файлы
Здравствуйте! Столкнулся с такой проблемой, что при копировании файлов ОС пишет "не удается.

Не копируются файлы
Добрый день, не копируются файлы. Explorer перезапускается. Видно вирус задел важные области, и его.


Не копируются файлы не флешку
Добрый день! Дело в том, что на флешку (плеер) не копируются файлы. Сначала система просто не.

Не копируются все файлы
Имеется задание: Разработать программу, создающую в каталоге /tmp подкаталог, имя которого.

Файлы копируются дважды
Добрый день. Уже давно наблюдаю у себя такую проблему. Скачал фильм (размер 2ГБ +-). Хочу.

не копируются файлы на флешку
добрый день. тут какие-то странности с флешкой творятся, уже не знаю что делать. вот какие действия.

Не копируются файлы по локальной сети
Локальная сеть, компы вин xp, расшаренные ресурсы открываются, но файлы с большим размером не.

Не копируются некоторые файлы с флешки
При попытке скопировать файлы (с расширением *.jar и *.jad) win7 выдает ошибку(на скриншоте). .

Этичный хакинг и тестирование на проникновение, информационная безопасность

Книга по SMB и Samba на русском языке. Оглавление

Samba — это SMB для Linux

Далее мы будем говорить про Samba, но мы затронем только вопросы SMB.

Начните с установки пакетов samba и smbclient.

В Debian, Linux Mint, Ubuntu, Kali Linux и их производных для установки samba выполните команду:

В Arch Linux, BlackArch и их производных выполните команду:

Как в Linux увидеть все компьютеры Windows с совместными ресурсами

Для показа всех совместных сетевых ресурсов Windows выполните команду:

В этой и последующих командах используется флаг -N, который означает не использовать пароль. Если же вы используете пароль, то укажите опцию -U с именем пользователя, пароль нужно будет ввести интерактивно.


В начале идёт имя рабочей группы WORKGROUP. Затем следует список компьютеров. Для тех из них, для которых удаётся получить список сетевых папок, они выводятся.

Как можно увидеть выше, для компьютера \\VYACHESLAV получен список совместно используемых ресурсов, а для компьютера \\HACKWARE-MIAL — нет. При этом если я включал на компьютере \\HACKWARE-MIAL поддержку протокола SMB 1, а при запуске команды указывал хоть какое-то имя пользователя, например:

либо просто запускал smbtree с правами администратора:

то мне удавалось получить список файлов также и для компьютера \\HACKWARE-MIAL. UDP: видимо, такое поведение в том, что совпадали имена польозвателей на компьютерах с Linux и Windows.

Как в Linux вывести доступные по сети ресурсы (совместные папки и принтеры Windows)

Предыдущая команда показала нам несколько компьютеров с сетевыми папками. Предположим, меня интересует компьютер \\HACKWARE-MIAL, чтобы вывести его сетевые папки я запускаю команду вида:

в моём случае это:


Кстати, вместо имени компьютера можно указать IP адрес.

В полученном выводе Share и Users являются общими сетевыми папками.

исчезнут, если создать файл /etc/samba/smb.conf.

пропадут, если на компьютере с сетевой папкой включить поддержку протокола SMB1.

Как я уже говорил чуть выше, флаг -N означает не использовать пароль. Если же вы используете пароль, то укажите опцию -U с именем пользователя, пароль нужно будет ввести интерактивно.

Как и для smbtree, для smbclient необязательно использовать sudo, но без sudo для некоторых компьютеров программа срабатывает нормально, а для некоторых завершается ошибкой:

Как подключиться к сетевой папке Windows из Linux

Программа smbclient умеет не только показывать общие ресурсы, но и имеет интерактивный режим, во время которого можно копировать файлы между локальным компьютером и общей папкой, удалять файлы, создавать папки и переходить по каталогам, просматривать содержимое файлов и их свойств и выполнять другие действия в файловой системе совместно используемой сетевой папки.

Кроме интерактивного режима, можно просматривать содержимое сетевых папок и в проводнике Linux — об этом будет рассказано позже, а пока остановимся на подключении в командной строке.

Для входа в интерактивный режим запустите команду вида:

Например, я хочу подключиться к компьютеру //HACKWARE-MIAL/ и выполнить действия с файлами в сетевой папке Share, тогда моя команда следующая:

Если вы хотите, чтобы при подключении была изменена текущая рабочая директория в сетевой папке, то есть чтобы была открыта другая папка, то используйте опцию -D. К примеру, я хочу подключиться к папке NewFolder, тогда команда следующая:

Подключение к SMB папке, требующий авторизации

К примеру, на компьютере //HACKWARE-MIAL/ имеется сетевая папка ShareRestricted, права на просмотр которой есть у пользователя ShareOverlord. Для просмотра шары, защищённой паролем, нужно использовать команду вида:

В моём случае это команда:


Команды SMB в Linux

Доступны следующие интерактивные команды:

Выводит все доступные команды:

Для показа справки по определённой команде, выполните

Переход в другой каталог (смена текущей рабочей директории) на удалённой системе:

Переход в другую директорию на локальной системе:

Удаление файла в шаре:

Имеется псевдоним этой команды:

И ещё одна команда со схожей функцией:

Эта команда рекурсивно удалить все совпавшие с шаблоном имени файлы и директории.

Показ файлов и папок в текущей папке:


Имеется псевдоним этой команды:

И ещё один, даже более короткий псевдоним:

Для повторного скачивания файла:

Для скачивания всех файлов, чьём имя совпадает с шаблоном:

Например, чтобы скачать все файлы с файловым расширением .exe нужно запустить такую команду:

Для каждого файла, совпавшего с шаблоном, будет выполнен запрос на скачивание. Если вы действительно хотите его скачать, то нажмите клавишу «y»:

Также имеется команда newer, которая скачивает файлы (mget), которые новее, чем указанный локальный файл. Используется она так:

Выгрузка файла на общую папку:

Следующая команда скопирует локальный файл в шару:

Повторная закачка файла:

Для закачки всех файлов, чьём имя совпадает с шаблоном:

К примеру, чтобы закачать в шару все файлы (из локальной текущей рабочей директории), которые имеют расширение *.cap, нужно запустить команду:

Для каждого файла, совпавшего с шаблоном, будет выполнен запрос подтверждения, если вы действительно хотите его закачать, то нажмите клавишу «y»:


Включение и отключение рекурсии

Можно включать и отключать рекурсивный режим для mget и mput.

Показ всей возможной информации о файле:


В выводимой информации можно увидеть альтернативное (DOS) имя, временные метки (дата создания, доступа, записи и изменения файла), атрибуты.

Копирование файла на сервере:

Создание директории:

Удаление директории:

Удаление файлов

Следующая команда удалит все совпавшие с МАСКОЙ файлы:

Псевдоним команды для удаления файлов:

С помощью команды wdel можно удалить все совпавшие файлы по подстановочным символам:

Переименование файлов:

Ссылки

Создание жёсткой ссылки Windows:

Создание жёсткой ссылки UNIX:

Создание символьной ссылки UNIX:

Выход с сервера:

Вывод истории команд текущей сессии:

Просмотр содержимого текстового файла:

Показ текущей рабочей директории:

Другой вариант показа текущей рабочей директории — это команда cd без аргументов:

Создание и извлечение архивов tar

Программа tar используется для объединения нескольких файлов в один файл. Объединение происходит без сжатия. Для того, чтобы несколько файлов из сетевой папки объединить в архив и скачать на локальную систему запустите команду вида:

К примеру, я хочу скачать файлы all-databases.sql besside.log ChromeSetup.exe из совместной папки и объединить их в архив all.tar, тогда моя команда следующая:

Для установления режимов tar используется команда

Установка таймаута операций:

Таймаут устанавливается в секундах и по умолчанию равен 20.

Установка нового соединения:

Закрытие сессии, выход:

Вывод списка открытых подключений:

Отображение текущего активного подкючения:

Изменение удалённой директории (переход на одну папку выше):

Выполнение команд в локальной системе:

Чтобы команда выполнялась не на удалённой системе, а на локальной, поставьте перед ней ! (восклицательный знак), например^

Автоматическое выполнение команд в сетевой папке Windows

Необязательно каждый раз вводить все команды вручную — вы можете перечислить их через запятую и указать в двойных кавычках с опцией -c, например:

Как смонтировать общую папку Windows/Samba в Linux

Сетевая папка Windows может быть доступна в файловых менеджерах Linux как любая другая локальная папка. Для этого её нужно смонтировать. После монтирования не придётся использовать консоль для просмотра списка файлов и скачивания или закачивания файлов.

Начните с установки пакета cifs-utils.

В Debian, Linux Mint, Ubuntu, Kali Linux и производных выполните:

В Arch Linux, BlackArch и производных выполните:

Предыдущие команды smbtree и smbclient понимали имена компьютеров Windows, такие имена как HACKWARE-MIAL. Монтирование выполняется с помощью команды mount, которая такие имена не умеет обрабатывать без помощи преобразования имён DNS. Поэтому при монтировании можно либо:

  1. Использовать вместо имён компьютеров IP адрес. В этом случае у компьютера с сетевой папкой должен быть постоянный (статичный) IP адрес
  2. Либо настроить преобразование имён для компьютеров Windows. Это можно сделать, например, с помощью файла /etc/hosts. Кстати, в этом случае у компьютера с общей папкой также должен быть постоянный IP адрес (смотрите Как настроить локальный DNS используя файл /etc/hosts в Linux)

В общем, в любом случае настройте в роутере или в самой Windows постоянный локальный IP.

Если вы хотите настроить преобразование имён с помощью файла /etc/hosts, то откройте его:

И добавьте туда запись вида

Например, у меня IP_АДРЕС это 192.168.0.101, а именем компьютера является HACKWARE-MIAL, тогда я добавляю следующую запись:

Пингуем по имени компьютера Windows, чтобы убедиться, что всё сработало:

Чтобы не возникало проблем с правами доступа, папка, куда монтируется шара (например, /mnt/share/), должна принадлежать текущему пользователю Linux — если вы создавали папку без sudo, то она уже принадлежит обычному пользователю. Но если вы создавали папку с sudo (например, иначе это невозможно сделать в /mnt/), то вам нужно поменять её владельца командой вида::

Например, чтобы поменять владельца папки /mnt/share/ на текущего пользователя:

Теперь для монтирования сетевой шары Windows нужно запустить команду вида:

В этой команде вы должны вставить свои значения для

Значение других элементов команды:

  • sudo — монтировать шару можно и без прав суперпользователя, но использовать опцию -o, после которой указываются опции для монтирования, можно только с правами root
  • -t cifs выбор файловой системы для монтирования
  • -o означает, что после этой опции будут перечислены опции для монтирования:
  • username=guest,password= - произвольное имя пользователя без пароля — используется для подключение к общей папки, для которой не требуется вход. Вместо этой конструкции можно указать просто guest, но в этом случае на некоторых системах всё равно запрашивается пароль. По моим наблюдениям, пароль запрашивается когда имя текущего пользователя на Linux совпадает с именем пользователя на Windows
  • uid=1000 — в качестве владельцев всех файлов в шаре будет указан текущий пользователь Linux
  • iocharset=utf8 — эта кодировка позволяет работать с именами файлов, в которых используются не только латинские буквы

К примеру, путь до сетевой шары у меня //HACKWARE-MIAL/Share, её я хочу смотрировать в папку /mnt/share, тогда команда будет следующей:

Вид сетевой папки Windows в Double Commander:


Вид сетевой папки в стандартном проводнике Linux:


Для размонтирования нужно запустить следующую команду (укажите либо точку монтирования, либо ресурс, который был смонтирован):

Напомню, что в предыдущей части я не только настроил папку для входа без пароля, но на том же самом компьютере и настроил вторую папку с именем ShareRestricted. У этой папки владелец ShareOverlord, а пароль для входа 1234. Для подключения папки, доступ к которой возможен только по паролю, используется та же самая команда, но нужно указать реальные учётные данные:

Чуть дальше очень похожий набор опций, в том числе пароль в открытом виде, мы будем использовать в файле /etc/fstab для настройки автоматического монтирования сетевой папки. Файл /etc/fstab доступен для чтения всем а, следовательно, также доступен всем ваш пароль от Windows в нём. Чтобы обойти эту проблему, можно использовать файл с учётными данными. Это файл содержит только имя пользователя и пароль.

Используя текстовый редактор, создайте файл с учётными данными для входа на ваш удалённый сервер:

В этот файл введите имя пользователя и пароль от Windows:

В моём примере это:

Сохраните файл и закройте редактор.

Измените права доступа к этому файлу, чтобы предотвратить нежелательный доступ к вашим учётным данным:

Посмотрите абсолютный путь до этого файла:

В моём случае абсолютный путь:

Теперь вместо двух опций:

нужно использовать одну опцию, в качестве значения которой нужно указать абсолютный путь до файла с логином и паролем:

Моя команда стала выглядеть так:

Настройка автоматического монтирования сетевой папки в Linux

Автоматически монтируемые файловые системы прописываются в файле /etc/fstab. Откроем этот файл:

Теперь в него нужно добавить строку вида:

Мы добавили опцию nofail, чтобы ОС нормально загружалась даже если не удалось смонтировать данную файловую систему. Ещё добавьте опцию _netdev, эта опция означает, что файловая система находится на устройстве, которому требуется доступ к сети (используется для предотвращения попыток системы смонтировать эти файловые системы до тех пор, пока в системе не будет включена сеть).

Для моего примера это строка:

Сохраним и закроем этот файл. Для проверки выполним:

Если сетевая папка успешно смонтировалась, значит можно выполнить проверку перезагрузкой.

Если нужно смонтировать папку для входа в которую не требуется пароль, то используйте в качестве опции учётные данные «username=guest,password=»:

Либо можно по-прежнему использовать файл .smbcredentials, как это было показано выше:

/.smbcredentials запишите следующее:

Как создать общую сетевую папку в Samba

Если в этой статье вы пропустили предыдущие части, так как вам нужно только настроить файловый сервер на Linux, то начните с установки пакета samba.

Следующая команда не сработает, если отсутствует файл /etc/samba/smb.conf. Если у вас тоже нет этого файла, то создаёте его заглушку — к настройке самого файла smb.conf мы вернёмся позже:

Теперь нужно добавить пароль для пользователя Samba. Действует следующее правило: имя пользователя должно быть таким же, как у вашего текущего пользователя, а пароль можно установить иной, отличный от вашего системного пароля.

Для установки пароля Samba, выполните следующую команду:

Если вы хотите, чтобы у пользователя не было пароля, то укажите опцию -n.

Создайте папку, которая станет совместно используемой:

Узнаем абсолютный путь до папки

Откройте для редактирования файл /etc/samba/smb.conf:

Добавьте туда строки вида:

Обратите внимание, что все пробелы в строках выше являются обязательными.

Для моих данных это строки:

Теперь запустим службу SMB:

Для добавления службы в автозагрузку выполните:

На самом деле, мы настроили не полноценную Samba, а только файловый сервер SMB. Одно из следствий этого — показанные выше способы обнаружения сетевых папок, такие как команда smbtree в Linux или переход во вкладку «Сеть» в проводнике Windows, не обнаружат нашу шару.

Для подключения к этой общей сетевой папке на Linux нужно использовать IP адреса компьютера Linux вместо имени компьютера, как это мы делали раньше. Кстати, поэтому нужно настроить статичный IP (смотрите статью «Как настроить Linux на использование статичного IP адреса»).

Создадим файл, чтобы сетевая папка не была пустой:

Посмотрите локальный IP адрес компьютера, на котором запущена Linux:

У меня этим IP является 192.168.0.89, а папку, как мы помним, я создал с именем linuxshare, тогда в Windows я перехожу в проводнике во вкладку «Сеть» и подключаюсь к этой папке следующим образом:

Вводим учётные данные (которые мы установили командой smbpasswd):


Видим содержимое совместно используемой папки, размещённой на Linux с помощью SMB:


Для подключения к сетевой папке из консоли Linux, запустите команду вида:

Для моего примера это:

После ввода пароля нам становится доступным содержимое сетевой папки.


Эту папку можно смонтировать как это было показано в предыдущем разделе, либо подключать в Windows как сетевой диск, как это было показано в первой части.

Western Digital Drives - The Preferred Drives of FreeNAS and TrueNAS CORE

4Гб память маловато для FreeNAS. FreeNAS вообше "требует" 8Гб чтобы стабильно работает, и 4Гб особенно мало с плагинами. Я сам думаю что это больше предположения, чем требования (часто я вижу FreeNAS c 6Гб). Но если больше памяти совсем не по карману, может быть вам лучше использовать "Openmediavault" или простой CentOS (или Debian) с Samba.

  • /var/log/messages
  • /use/local/etc/smb4.conf
  • /var/log/samba4/log.smbd

Inglabus

Neophyte
Спасибо за ответы, удаление streams_xattr - не помогло. Наверное все же дело в памяти! Сасибо!
iXsystems
Добавить памяти никогда не вредно, но можно попробовать начать с уменьшения максимального объема ARC, чтобы освободить больше памяти для приложений за счет кеша.

anodos

Sambassador
Спасибо за ответы, удаление streams_xattr - не помогло. Наверное все же дело в памяти! Сасибо!

(
После удаления streams_xattr, наверно вам надо обновить сессию на сервере. Модификация конфигурации шара "SMB" не принята до тех пор как сетевое соединение (клиент на сервер) не обновится. Самый лёгкий способ это совершить является перезагузка Windows.

Думаю, что всё таки, вам стоит внимательно смотреть внутри тех лагов, о которых я спросил наверх. Через них можно уточнить в чём ошибки.

Lordbl4

Member

Можно попробовать нагенерить большие бинарные файлы по 2 или 4 гб чтобы наверняка узнать причастность ADS.

Полностью согласен с предыдущими ораторами - 4гб очень мало для ZFS на freenas (есть другие *NAS платформы, оптимизированные под небольшое кол-во ОЗУ, для которых 4гб - норма)

У меня была похожая проблема с непрерывной передачей больших объёмов данных (160 гб), разбитых на разнообразные файлы, только виндовое копирование не вылетало с ошибкой, а замедлялось или становилось на месте. Посмотрев графики - выяснил, что мой домашний freenas использовал для нужд ZFS все 16гб ОЗУ.

С тех пор я скептически отношусь к ZFS

anodos

Sambassador

Можно попробовать нагенерить большие бинарные файлы по 2 или 4 гб чтобы наверняка узнать причастность ADS.

Полностью согласен с предыдущими ораторами - 4гб очень мало для ZFS на freenas (есть другие *NAS платформы, оптимизированные под небольшое кол-во ОЗУ, для которых 4гб - норма)

У меня была похожая проблема с непрерывной передачей больших объёмов данных (160 гб), разбитых на разнообразные файлы, только виндовое копирование не вылетало с ошибкой, а замедлялось или становилось на месте. Посмотрев графики - выяснил, что мой домашний freenas использовал для нужд ZFS все 16гб ОЗУ.

С тех пор я скептически отношусь к ZFS

FreeNAS использует большинство ОЗУ как ARC (т.е. кэш). Поэтому, @mav@ написал "можно попробовать начать с уменьшения максимального объема ARC, чтобы освободить больше памяти для приложений за счет кеша."

Насчёт копирование большого количества файлов через Самбу, скорость копирования обычно ограничена и скоростью массива (IOPS - операций ввода-вывода в секунду) и скоростью CPU и скоростью сети, с некоторыми оговорками. Например, SMB является без учёта регистра, но ZFS по умолчанию является с учётом регистра. Это означает, что при каждой операции с файловой системой через SMB, Самба должна смотреть на каждый вариант регистра, а это отрицательно влияет на скорость. Но если мы создадим набор данных без учёта регистра, и добавляем дополнительный параметр к шару "case sensitive = true", скорость копирования и других операций SMB увеличивается.

Читайте также: