URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID14
Нить номер: 2633
[ Назад ]

Исходное сообщение
"Проблема с блокировками файлов"

Отправлено turux , 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.


Содержание

Сообщения в этом обсуждении
"Проблема с блокировками файлов"
Отправлено izyk , 30-Окт-14 11:46 
> хай!

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

Может еще
locking = yes

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


"Проблема с блокировками файлов"
Отправлено izyk , 30-Окт-14 12:53 
> хай!

unix extensions = No


"Проблема с блокировками файлов"
Отправлено turux , 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


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


"Проблема с блокировками файлов"
Отправлено izyk , 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


"Проблема с блокировками файлов"
Отправлено turux , 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 и был битым :((