The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблема с блокировками файлов"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Samba, вопросы интеграции Unix и Windows (ACL, блокировки и ограничения)
Изначальное сообщение [ Отслеживать ]

"Проблема с блокировками файлов"  +/
Сообщение от turux on 30-Окт-14, 00:11 
хай!

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

есть 3 компа, все linux (centos6) - samba-server, client1, client2

на samba-server поднята samba (samba-3.6.23 из centos репа). вот конфиг:

[global]
    workgroup = MYGROUP
    server string = Samba Server Version %v
    netbios name = SAMBA
    log level = 0 locking:6
    log file = /var/log/samba/log.%m
    max log size = 50
    security = user
    passdb backend = tdbsam
    ;kernel oplocks = No

[public]
    comment = Public Stuff
    path = /public
    public = yes
    writable = yes
    printable = no
    write list = user1

        ;oplocks = No
        ;posix locking = No
        ;level2 oplocks = No
    ;veto oplock files = /*.dat/


на обоих клиентах шара смонтирована вот так: mount.cifs //samba/public /samba -o username=user1

затем на client1 я даю команду: cp bigfile.dat /samba
файл начинает копироваться на шару и в процессе копирования на client2 я даю команду:
mv /samba/bigfile.dat /home

и происходит следующее:
на client2) файл перемещается в /home, при этом он "битый", поскольку client1 ещё не успел докопировать его.
на client1) ещё какое то время тупит, "копируя" файл, хотя на шаре файла уже нет.


я как только не игрался опциями lock - никак не получается добиться блокировки файла на время копирования.

поэтому вопрос, можно ли на самбе реализовать следующее поведение: клиент1 начинает копировать файл, клиент2 даёт команду на перемещение файла, но эта команда задерживается на выполнение пока не докопируется файл клиентом1.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема с блокировками файлов"  +/
Сообщение от izyk email(ok) on 30-Окт-14, 11:46 
> хай!

oplocks = No
Должен работать.

Может еще
locking = yes

Хотя, странно.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема с блокировками файлов"  +/
Сообщение от izyk email(ok) on 30-Окт-14, 12:53 
> хай!

unix extensions = No

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Проблема с блокировками файлов"  +/
Сообщение от turux on 30-Окт-14, 22:43 
>> хай!
>  unix extensions = No

[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        netbios name = SAMBA4
        log level = 0 locking:6
        log file = /var/log/samba/log.%m
        max log size = 50
        security = user
        passdb backend = tdbsam

        unix extensions = No

[public]
        comment = Public Stuff
        path = /public
        public = yes
        writable = yes
        printable = no
        write list = user1

        oplocks = No
        level2 oplocks = No


не помогает, файл не блокируется :(

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Проблема с блокировками файлов"  +/
Сообщение от izyk email(ok) on 31-Окт-14, 02:05 
?
Попробуйте так:
flock -e /samba/xlock cp bigfile.dat /samba
flock -e /samba/xlock mv /samba/bigfile.dat /home

Если поможет, тогда хорошо.

И так:
mount.cifs //samba/public /samba -o username=user1,cache=strict,nobrl

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Проблема с блокировками файлов"  +/
Сообщение от turux on 31-Окт-14, 16:54 
> ?
> Попробуйте так:
> flock -e /samba/xlock cp bigfile.dat /samba
> flock -e /samba/xlock mv /samba/bigfile.dat /home
> Если поможет, тогда хорошо.
> И так:
> mount.cifs //samba/public /samba -o username=user1,cache=strict,nobrl

вообще всё странно.

я попробовал пока убрать самбу и заменил её на windows 2008 r2 сервер. Хотелось посмотреть как поведёт себя в такой ситуации виндовс сервер.

Результат:
Я монтировал на линукс клиентах способами:
1) mount.cifs //win2008/public /win/ -o username=user1
2) mount.cifs //win2008/public /win -o username=user1,cache=strict,nobrl
как показала практика разницы - никакой.


предложенные вами команды
flock -e /win/xlock cp bigfile.dat /samba
flock -e /win/xlock mv /win/bigfile.dat /home
я проверил раз 8.

в половине случаев я получал на клиенте2 (там где идёт операция mv) ошибку:

           mv: невозможно удалить «bigfile.dat»: Текстовый файл занят

в другой половине поведение было как и прежде - файл перемещался в /home и был битым :((

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2023 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру