LinuxForum.Fans
Тема

cifs. Подключение каталогов windows

Автор: danver 31 сообщений 5840 просмотров
#379514

Здравствуйте!
Я в линуксе новичок. Пытаюсь организовать резервное копирование каталогов Windows на устройство с debian (2.6.31.8). rsync нашел, как работает понятно. Обратиться напрямую к расшаренному диску windows не получается - rsync не передаёт логин-пароль windows. использую cifs для подключения сетевого диска машины windows. строка подключения следующая:

text
mount -t cifs //winServer/test /backup/files -o user=Username,pass=userPass,dom=winServer,iocharset=utf8

Причем, если для подключения использую тестовый каталог источника, с парой файлов - всё подключается. При подключении реального каталога объёмом в пару сотен гигабайт, подключать отказывается. Никаких ошибок не выдаёт, просто не подключает, и всё. Каталог-приёмник пустой. Если указать заведомо неправильные авторизационные данные - сообщает о запрете доступа. Username - локальная учётная запись windows машины, права на каталог выданы.

Что я делаю не так? Есть где-нибудь журнал ошибок подключения? Может можно как-то без cifs обойтись?

#379534

А если попробовать через SMBNetFs?

#379535
"danver" написал:
Никаких ошибок не выдаёт, просто не подключает, и всё.

в логах смотрели? /var/log/syslog, /var/log/message

да, советую логин/пароль задать latinskimi bukvami, и то маздай иногда корёжит то-ли от русского, то-ли от пробелов, то-ли я не знаю от чего.

"danver" написал:
Может можно как-то без cifs обойтись?

нет. Маздай больше ничего другого не умеет. Вот если маздай снести, то вариантов будет море.

#379565
"danver" написал:
mount -t cifs //winServer/test /backup/files -o username=Username,password=userPass,dom=winServer,iocharset=utf8

не? ну и логи...

"drBatty" написал:
нет. Маздай больше ничего другого не умеет. Вот если маздай снести, то вариантов будет море.

при желании можно на нём поднять и ftp/ssh/nfs, но это уже оффтоп и ИМХО это будет сложнее...

#379567
sergey1 написал:
А если попробовать через SMBNetFs?

Это не спортивно. Тем более, работает же cifs с тестовым каталогом на том же самом сервере.

drBatty написал:
да, советую логин/пароль задать latinskimi bukvami

Конечно всё задано латинскими. Сносить маздай тоже не вариант. Это сервер, он настроен и работает.
Поднимать ftp/ssh/nfs на винде не хочется. Планирую по такой схеме собирать резервные копии с нескольких машин. Поднимать на каждой из них дополнительные сервисы - это лишнее.

Fat-Zer написал:
danver пишет:
text
mount -t cifs //winServer/test /backup/files -o username=Username,password=userPass,dom=winServer,iocharset=utf8

не? ну и логи...

Да, такой синтаксис тоже пробовал. Результат тот же.

Логи. в журнале /var/log/message нет ничего на заданную тему.
В этом /var/log/syslog есть такие строчки:

text
kernel: CIFS VFS: No response for cmd mid 1293
kernel: CIFS VFS: No response for cmd mid 1297

о чём это говорит?

Ещё раз хочу обратить внимание на то, что тестовый каталог на той же самой машине с теми же самыми учётными данными нормально подключается. Упирается только реальный рабочий каталог с большим объёмом данных. Так что синтаксис строки подключения, учётные данные, раскладка клавиатуры - всё правильно.

#379568

danver, а какой вид имеет Username? Если - Winserver/User , то необходимо взять в кавычки - "Winserver/User". И откуда взялся параметр dom, когда, согласно ману на mount.cifs, должен быть domain?

#379590
urfin написал:
danver, а какой вид имеет Username? Если - Winserver/User , то необходимо взять в кавычки - "Winserver/User". И откуда взялся параметр dom, когда, согласно ману на mount.cifs, должен быть domain?

Username имеет вид archiver - локальная учётная запись windows-машины. dom вместо domain взялся из совета на одном из форумов в сети. с домейном не работало, а с домом подключилось.

Ситуация вообще странная. Имя рабочего каталога, который требуется подключить на windows-машине - Files. Создаю каталог test, разрешаю сетевой доступ, выдаю права на шару и на безопасность локальной учётке archiver, подключаю каталог к linux-машине, всё подключается. Включаю копирование содержимого каталога Files в каталог test. Копирование выполняется довольно долго - данных много. Вижу копирующиеся каталоги Files в каталоге test на линуксовой машине. По окончанию копирования данных в каталоге test имею полную копию каталога Files. На линукс-машине сетевой каталог пустой. Данных в нём нет. Как такое может быть? Впечатление такое, что у cifs есть какое-то ограничение на размер подключаемого каталога, при превышении которого сваливается и глючит.

#379594

danver, ну, а если не всю сразу информацию залить, а только небольшую часть? То нормально все, или же тоже по нулям?

При монтировании можно попробовать указать ключ --verbose (до ключа -o) - должна выводиться дополнительная информация.

Может и без параметра dom обойтись? Просто указать пользователя в виде "workgroup/user" - "winServer/archiver"?

И все же, смотрю внимательно man mount и man mount.cifs - не нахожу никакого dom и все тут. Может у вас какая-то иная реализация?

#379631
"urfin" написал:
Может и без параметра dom обойтись? Просто указать пользователя в виде "workgroup/user" - "winServer/archiver"?

глянул исходники — похоже доки врут... действительно, в -o надо указывать user, pass и dom. они же и в mount.cifs --help перечислены...

"danver" написал:
По окончанию копирования данных в каталоге test имею полную копию каталога Files. На линукс-машине сетевой каталог пустой. Данных в нём нет. Как такое может быть? Впечатление такое, что у cifs есть какое-то ограничение на размер подключаемого каталога, при превышении которого сваливается и глючит.

гмм... а в dmesg при этом всём ничего не падает? и каков порядок величин файлов/их количества/средний размер?

"danver" написал:
о чём это говорит?

в порядке бреда/нагугленного можно попробовать:
echo 0 > /proc/fs/cifs/OplockEnabled
или rmmod cifs && modprobe cifs enable_oplocks=0

#379640
urfin написал:

danver, ну, а если не всю сразу информацию залить, а только небольшую часть? То нормально все, или же тоже по нулям?
При монтировании можно попробовать указать ключ --verbose (до ключа -o) - должна выводиться дополнительная информация.
Может и без параметра dom обойтись? Просто указать пользователя в виде "workgroup/user" - "winServer/archiver"?
И все же, смотрю внимательно man mount и man mount.cifs - не нахожу никакого dom и все тут. Может у вас какая-то иная реализация?

Если заливаю пару каталогов, их видно в каталоге-приёмнике. Ключ --verbose показывает что ну да, подключилось. Что касается синтаксиса, то таки да, он правильный. Fat-Zer подтвердил, что не я придумал user, pass и dom. Да и работает же с парой каталогов.

Fat-Zer написал:

гмм... а в dmesg при этом всём ничего не падает? и каков порядок величин файлов/их количества/средний размер?

dmesg молчит. Порядок величин следующий. В каталоге-источнике ~400 тысяч файлов ~ 10000 каталогов. В основном это doc, xls, pdf, jpg файлы - данные пользователей домена. Размер от 100 Кб до пары десятков Мб, ничего необычного.

Fat-Zer написал:

в порядке бреда/нагугленного можно попробовать:
echo 0 > /proc/fs/cifs/OplockEnabled
или rmmod cifs && modprobe cifs enable_oplocks=0

echo 0 ... - никакой реакции
rmmod cifs -

text
ERROR: Module cifs does not exist in /proc/modules

Что характерно. После подключения каталога пытаюсь зайти в него с помощью mc. Перед открытием думает секунд 20, потом открывается, показывает пустой каталог. Команда

text
ls

вообще подвешивает терминал, ждал минут 30 - бесполезно. Пустые каталоги так себя не ведут. Всё-таки он подключается, но как-то кривовато.

#379641
"Fat-Zer" написал:
глянул исходники — похоже доки врут... действительно, в -o надо указывать user, pass и dom. они же и в mount.cifs --help перечислены...
man mount.cifs:

Note
The cifs vfs accepts the parameter user=, or for users familiar with smbfs it accepts
the longer form of the parameter username=. Similarly the longer smbfs style parameter
names may be accepted as synonyms for the shorter cifs parameters pass=,dom= and
cred=.
#379655
"drBatty" написал:
man mount.cifs:

в cifs-utils 6.1 и 5.9 этого абзаца нет...

"danver" написал:
ERROR: Module cifs does not exist in /proc/modules

ну а без rmmod'а?

#379657
Fat-Zer написал:
ну а без rmmod'а?

я не понимаю, что это значит. ламер пока в линуксах.

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

#379659
"Fat-Zer" написал:
в cifs-utils 6.1 и 5.9 этого абзаца нет...

[console]# mount.cifs -V
mount.cifs version: 5.5
[/console]

#379660

У меня версия cifs-utils 4.5
такая из репозитария установилась. это сильно старая? с этим может быть связана проблема?

#379663
"danver" написал:
я не понимаю, что это значит. ламер пока в линуксах.

так... для начала, общее правило: прежде, чем вводить команду надо разобраться, что она делает...
если /proc/fs/cifs/OplockEnabled на месте, то не задумывайся по этому поводу...

"danver" написал:
А вообще, у меня создалось такое впечатление, что при попытке открыть подключенный каталог, линукс пытается перечитать содержимое каталога, а так как он очень большой, отваливается по таймауту. Как-то так.

почти так... чисто умозрительное предположение: при кешировании он пытается разместить оплоки на все файлы/каталоги, так что может помочь их отключение... ещё может помочь отключение кеширования т.е. в опции монтирования добавить cache=none.

"drBatty" написал:
# mount.cifs -Vmount.cifs version: 5.5

значит убрали абзац...

"danver" написал:
У меня версия cifs-utils 4.5такая из репозитария установилась. это сильно старая? с этим может быть связана проблема?

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

#379666
"Fat-Zer" написал:
значит убрали абзац...

как-то странно у вас получается: из кода не убрали, из хелпа не убрали, а из мана значит убрали? Раз у вас сырцы под рукой, посмотрите ман там, в сырцах. Вангую, у вас в дистрибутиве маны старые почему-то.

#379673
Fat-Zer написал:
в опции монтирования добавить cache=none.

Добавил, результат тот же.

Еще догадка возникла. В этом каталоге windows, который подключать требуется, часть полных имён файлов имеют длину, превышающую 255 символов. Так исторически сложилось, и поправить их вряд ли получится. Может с этим связано странное поведение cifs? Можно ли как-то обойти?

#379675

"danver" написал:
В этом каталоге windows, который подключать требуется, часть полных имён файлов имеют длину, превышающую 255 символов. Так исторически сложилось, и поправить их вряд ли получится. Может с этим связано странное поведение cifs? Можно ли как-то обойти?
нет. Разве-что использовать gnu tar или другой архиватор файлов.

Длинна имён файлов в Linux не превышает 255 байт(а в Windows обычно 263 примерно).

Вообще говоря, такие имена и в Win проблема, т.к. многие программы не умеют 263 байта, а могут иметь 260, или скажем 258. Т.ч. проблемы вам обеспечены и в Win.
#379676
drBatty написал:
Вообще говоря, такие имена и в Win проблема, т.к. многие программы не умеют 263 байта, а могут иметь 260, или скажем 258. Т.ч. проблемы вам обеспечены и в Win.

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

Войдите или зарегистрируйтесь, чтобы ответить.