PDA

Просмотр полной версии : копирование больших файлов на сетевой ресурс


anton
21.08.2007, 09:29
Добрый день!

У меня возникла проблема следующего плана.

Мне понадобилось скопировать файл размером около 1 Gb с Линукс машины (Fedora Core 6, 2.6.19-1.2911.6.4.fc6) на смонтированную Windows шару.

Ранее подобные операции на примерно аналогичных компьютерах я делал следующим образом:

#####
$ mount -t cifs //computer/share /mnt/tmp -o username=DOMAIN/user
password:
#####
и далее копировал файлы туда.

Соответственно и в этом случае попытался поступить также.
Но, где то при копировании 10-12% файла, процесс наглухо виснет.

Часов через 5!!! копирование всё-таки завершается, но при попытке открыть файл, оказывается, что он повреждён.

При копировании файлов размером меньше 100мб всё проходит успешно.
При копировании это гигового файла с раздела на раздел, также всё нормально.

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

Были мысли, что может файл пытается просканировать какой-то процесс, типа антивируса ( clamd имеется на этой машине), но во-первых, этого не может быть потому что, антивирусу надо «передавать» файл для проверки или спец модуль в ядре нужен, чтобы сканил на лету, во-вторых я его всё-таки выключил ))

Непонятность ситуации усуглубляется ещё тем, что на машинах примерно аналогичная аппаратная и программная конфигурация. Тем не менее, на всех копируется, на одной нет!

Заранее спасибо за помощи и подсказки. )

anton
21.08.2007, 19:09
1.Частично проблема решилась, после многочисленных телодвижений на машине, хотя меня такое решение, мягко сказать, не устраивает. Но во всяком случае хоть файл скопировать можно.
Итак, я указал параметр forcedirectio в /etc/fstab :

#######
//1.2.3.4/lxarh /mnt/bftfs cifs credentials=/root/cred,forcedirectio 0 0
#######

После этого файл копируется нормально, но скорость!!!!! это просто жуть!! исчисляется парой десятков кб/с !!!!

2. Пока я докопался до этого параметра, обновил ядро и samba, для очистки совести. Не помогло.

3. С шары файл льётся нормально без всяких forcedirectio и быстро.

4. Понаблюдав за процессом копирования, появилось ощущение, что он гонит в оперативу файл, потом, когда она кончается, пытается сбросить буфера на диск, и тут всё дело виснет ((. Это становится заметно, особенно если поэксперементировать с опциями wsize, или, типа,
#######
modprobe cifs cifs_max_pending=50 cifs_min_small=100 cifs_min_rcv=32 CIFSMaxBufSize=130048
#######
Удаётся скопировать до зависания, то больший, то меньший кусок файла.

5. Откопал подобие проблемы в гугле

http://www.nabble.com/Corrupted-data-on-write-to-Windows-2003-Server-t2782623.html

и патч к ядру http://master.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff_plain;h=cb876f451455b6187a7d6 9de2c112c45ec4b7f99

6. Становится всё более непонятно, я же обновил Федорино ядро, а проблема осталась.

Тем более есть указание в нете что в 6 Fedore эта проблема решена
http://linuxneophyte.com/category/cifs/

Но это ладно, у меня есть машины и с 5 Fedora где нормально работает, и на всех 6 тоже всё хорошо.

Абсолютно не понимаю, что может быть???

anton
24.08.2007, 13:38
Почти на 100% уверился что проблема, всё-таки, аппаратного плана и CIFS здесь вообще не причём.

Я скопировал несколько раз подряд один и тот же большой файл на шару. В результате файл то нормальный, то повреждён.

Попробовал воспользоваться программой pscp (входит в putty), удаётся скопировать то 20 мб, то 100 мб, то 150, то вообще меньше 1мб. Пробовал раз 7,8. и не разу не удалось докопировать до конца, pscp вылетает.
К сожалению не могу ftp на этой машине поднять, или к другой ftp подконнектиться, чтобы окончательно убедится.

Так что, скорее всего дело в сетевом адаптере.

Как будет возможность, поменяю и проверю. Надеюсь, что дело в нём.

Кстати, на других машинах копирование на подмонтированную шару с опцией directio проходит быстро и почти не грузит систему. (Разумется, он же в буфер то ничего не гонит!!)

Ну хоть пользу извлёк из ситуации )) Узнал про directio )

anton
29.08.2007, 19:28
К сожалению, замена сетевых адаптеров ничего не дала. :(

Однако заметил, при установке карт «посерьёзнее» начинают терятся пакеты при пинге. Возникают не очень, но всё-таки ощутимые проблемы при работе с сетью.

При установке простенького адаптера, типа какого d-link, пинги проходят без потери пакетов. Чудеса...

Непосредственно с коммуникациями всё в порядке, проверял.

Таким образом, снова возникает вопрос, что, аппаратно или программно может влиять на работу сети так, что в целом создаётся иллюзия нормальной работы машины в сети, в логах ничего подозрительного нет, но при желании скопировать файлы на сетевой ресурс они получаются то битые то нормальные, а сама скорость записи редко превышает 100 кб/с при скорости чтения 6 мб/с ?

Артур Крюков
30.08.2007, 09:11
1. проверить другую сторону
2. проверить коммутаторы и хабы по дороге. бывает что девайсы разных производителей не желают дружить.

anton
31.08.2007, 12:09
в том то и дело, комммутации все проверил. кроме того в этой же внешней подсетке расположена почти аналогичная по аппаратной конфигурации машина и с ней всё в порядке.

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

вообщем проблему решил, можно сказать «грубой силой» ). взял новую машину, развернул имеющийся образ на ней и запустил вместо старой.

теперь файлы пишутся на шару с бешеной скоростью и всё хорошо ).

так что проблема видимо была именно в аппаратной части предыдущей машины. жаль только, что неясно, какой компонент системы подводил. (