LINUX.ORG.RU
ФорумAdmin

NFS - server side copying - копирование файлов на сервере

 


0

4

Не работает фича копирования файлов на сервере без передачи их по сети.

на сервере (raspbian buster):

/srv/share *(rw,all_squash,insecure,async,no_subtree_check,anonuid=1000,anongid=1000,crossmnt)

на клиенте

sudo mount -t nfs 192.168.1.2:/srv/share /mnt/nfsblack
cd /mnt/nfsblack/videos
cp 1.mkv 11.mkv

долго и нудно гонит по сети.

В отличие от samba, Ctrl+C хотя бы срабатывает.

У кого есть 100%-я формула, что бы работало?

UPD:

Кстати, перемещение mv работает ОК, без перегонки по сети

$ mv a/1.avi .
★★

Последнее исправление: zendrz (всего исправлений: 1)

Замечу, что перемещение mv работает ОК, без перегонки по сети

$ mv a/1.avi .
zendrz ★★
() автор топика
Ответ на: комментарий от futurama

не верю!

резонно. на nfs Ctrl+C срабатывает не сразу, а секунд через 20. Samba ваще глухо не реагирует, сколько ни жди.

zendrz ★★
() автор топика
Ответ на: комментарий от sparks

Спасибо, но это очередная частность, уводящая в дебри. Я просто хотел подрубить 2TB шару, находящуюся в другом здании, и наткнулся на медленное копирование внутри этой шары. Упоминание server-side copy для Самбы и НФС идет уже десяток лет, был удивлен, что это рокет саенс, оказывается.

zendrz ★★
() автор топика
Последнее исправление: zendrz (всего исправлений: 1)
Ответ на: комментарий от zendrz

эм, опция монтирования на клиенте, которая определяет поведение шары это дебри?

Люди порой удивляют, есть простой сервис и к нему 10 опций, с описанием идущем в комлекте, и потратить 30 минут (скорее даже меньше, т.к. две из них это ro и rw) на изучение этих опций, считается нецелесобразным ибо лезть в дебри. Притом винду где это делается в 4 клика без дебрей, они не хотят, т.е. они хотят как в винде, но не как в винду, удивительно…

sparks ★★★
()
Последнее исправление: sparks (всего исправлений: 2)
Ответ на: комментарий от sparks

Да это дебри, т.к. хотел просто копирование внутри самба-шары, озадачился этим, и при тестах увидел (и это тоже мне помешало), что ctrl+c не срабатывает (на самбе!). Т.е. на один уровень в глубину (а может и на два) я погрузился (ченжлоги самбы, взятие nfs вместо неё), что бы решить проблему server-side копирования (не решил, потерял время). Погружаться еще в проблему 3-его уровня - особенности работы Ctrl+C взависимости от опций монтирования - не входит в мои планы, попытка была единоразовая.

Мне вот ответили, что server-side на NFS так же невозможен. Всё, вопрос закрыт, мне это не подходит. В таком случае FTP проще всего, нахрена городить огород.

zendrz ★★
() автор топика
Ответ на: комментарий от sparks

Люди порой удивляют,

Ты утрируешь. Если по теме (server-side copy) есть соображения - милости прошу. Если такое возможно, я готов добиться работающей конфигурации. Но это бесполезно, т.к. сказали выше, что нет.

zendrz ★★
() автор топика
Ответ на: комментарий от zendrz

Если по теме, то там сплошные дебри, сервер сайд появился в 4.2, а т.к. маном пользоваться не православно, то вот цитата

       minorversion=n Specifies the protocol minor version number.  NFSv4 introduces "minor  ver‐
                      sioning," where NFS protocol enhancements can be introduced without bumping
                      the NFS protocol version number.  Before kernel 2.6.38, the  minor  version
                      is  always  zero,  and  this  option is not recognized.  After this kernel,
                      specifying "minorversion=1" enables a number of advanced features, such  as
                      NFSv4 sessions.

                      Recent  kernels  allow  the  minor  version to be specified using the vers=
                      option.  For  example,  specifying  vers=4.1  is  the  same  as  specifying
                      vers=4,minorversion=1.
sparks ★★★
()
Ответ на: комментарий от zendrz
[sparks@bastet Desktop]$ cd /net/192.168.0.2/MULTIMEDIA
[sparks@bastet MULTIMEDIA]$ dd if=/dev/urandom of=./bigfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 22.895 s, 46.9 MB/s
[sparks@bastet MULTIMEDIA]$ grep nfs /proc/mounts 
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
192.168.0.2:/MULTIMEDIA /net/192.168.0.2/MULTIMEDIA nfs4 rw,nosuid,nodev,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.125,local_lock=none,addr=192.168.0.2 0 0
[sparks@bastet MULTIMEDIA]$ time mv ./bigfile ./bigfile2

real	0m0.345s
user	0m0.001s
sys	0m0.001s
[sparks@bastet MULTIMEDIA]$ 
sparks ★★★
()
Ответ на: комментарий от sparks

у меня

$ mount 
...
192.168.1.2:/srv/share/black on /mnt/nfsblack/black type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.6,local_lock=none,addr=192.168.1.2)
...

(т.е. vers проставлено).

cp гонит через сеть, cp --reflink - говорит cp: failed to clone : Operation not supported

mv работает мгновенно, да

zendrz ★★
() автор топика
Последнее исправление: zendrz (всего исправлений: 1)
Ответ на: комментарий от sparks

time mv ./bigfile ./bigfile2

А cp ./bigfile ./bigfile_copy что будет делать, кстати? Вот это хотелось бы сделать server-side

zendrz ★★
() автор топика

Пока по ощущениям NFS выглядит лучше, чем самба. Исключая неработающий в обоих server-side copy, плюсы такие: быстрее монтирование, адекватная реакция на ctrl+c в режиме hard, отсутствие проблем с server-side move (перемещение mv файла туда-сюда на то же место вызывает ошибку в samba «files are the same!»).

Да, все это работает по вайфаю через 20 метров в соседний дом :)

Если у кого-то есть советы по best practices NFS - буду рад.

zendrz ★★
() автор топика
Ответ на: комментарий от anonymous

Во, спасибо за конкретную инфу

zendrz ★★
() автор топика
Ответ на: комментарий от anonymous

А вот это уже дебри, к тому же я не уверен что верные

[sparks@bastet MULTIMEDIA]$ df -h ./
Filesystem               Size  Used Avail Use% Mounted on
192.168.0.2:/MULTIMEDIA  800G  258G  543G  33% /net/192.168.0.2/MULTIMEDIA
[sparks@bastet MULTIMEDIA]$ du -ms ./bigfile
1024	./bigfile
[sparks@bastet MULTIMEDIA]$ time cp --reflink ./bigfile ./bigfileXXX

real	0m0.388s
user	0m0.002s
sys	0m0.000s
sparks ★★★
()
Ответ на: комментарий от sparks

в какое у тебя ядро, на сервере и клиенте, скажи плиз? у меня reflink не работает как я упоминал

zendrz ★★
() автор топика
Ответ на: комментарий от sparks

с xfs ты меня обнадежил, потом проверю, спасибо.

интересно, какие фм поддерживают это, mc может?

zendrz ★★
() автор топика
Ответ на: комментарий от zendrz

В целом анон оказался прав, я не знал про этот системный вызов copy_file_range, он говорит ФС типа скопируй быстро если можешь, проверил, работает

[sparks@bastet MULTIMEDIA]$ time ~/Projects/C/copy_range/copy_range ./bigfile ./bigfileYYYY

real	0m0.373s
user	0m0.001s
sys	0m0.000s

sparks ★★★
()
Ответ на: комментарий от zendrz

проверь заодно copy_file_range через smb шару, мне бы хотелось по результатам топика получить сводную таблицу, мин версия ядра, ФС, nfs, smb = рабочий вариант :D

anonymous2 ★★★★★
()
Ответ на: комментарий от zendrz

К сожалению, погуглив, не встретил copy_file_range в коде ФМ mc, dolphin, nautilus, thunar, pcmanfm

это не важно кстати, пишется затычка и и в нужный момент исправляется через LD_PRELOAD

anonymous2 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.