LINUX.ORG.RU

Удалённый доступ к ФС и файловые операции


1

2

Возьмём, скажем, SSHFS. Офигительно удобная штука, одна команда - и у нас есть прозрачный доступ к удалённой ФС для всех программ. Но есть одно но: при скопировании, переносе и т.д. файлов на ней посредством ФМ данные зачем-то два раза ползут через медленный канал. AFAIR, с NFS та же фигня. А как было бы круто, если бы работа к файлами была всё такой же прозрачной, но все операции с данными в рамках ФС по возможности выполнялись бы на том хосте, на котором они физически находятся.

Внимание, вопрос: можно ли этого добиться каким-либо образом? Выбор инструментов не принципиален, важен «юзер экспириенс».

★★★★★

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

При сисколе rename() данные не должны ходить туда-сюда, во всяком случае с NFS. А при копировании ничего не сделать, ведь сискола СКОПИРОВАТЬ() нет, ФМ сначала читает, потом пишет данные. Это если говорить про уровень файловой системы. В mc было (есть?) shell-соединение, может там не будет лишних передач данных по сети.

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

переносе и т.д. файлов

Это вранье. По крайней мере mv на sshfs отрабатывает почти мгновенно даже на больших файлах, что говорит о том, что данные никуда не ходят.

А вот при cp, да, приходится гонять туда-сюда.

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

для операций «при скопировании, переносе и т.д. файлов на ней посредством ФМ...» делай ssh remote 'mc' и гоняй там файлы как хочешь. Разные цели — разные инструменты (подходы).

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

При сисколе rename() данные не должны ходить туда-сюда, во всяком случае с NFS.

С SSHFS то же самое.

В mc было (есть?) shell-соединение, может там не будет лишних передач данных по сети.

А что это такое?

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

Это вранье. По крайней мере mv на sshfs отрабатывает почти мгновенно даже на больших файлах, что говорит о том, что данные никуда не ходят.

Вообще, память могла мне изменить, не спорю.

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

для операций «при скопировании, переносе и т.д. файлов на ней посредством ФМ...» делай ssh remote 'mc' и гоняй там файлы как хочешь. Разные цели — разные инструменты (подходы).

Откройте ради эксперимента два экземпляра вашего любимого ФМ и попробуйте открывать файлы только в первом, а двигать - только во втором. Это совершенно неюзабельно.

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

Ну это fish, оно же shell link, только оно так же гоняет файл туда/обратно, так что не подходит, ошибся я.

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

и вообще, что копирование есть read+write вообще никак не оправдывает дополнительный перегон туда обратно по сети, что ты несёшь

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

Я man открывал, в том man'е, который у меня так:

  Presently  (Linux  2.6.9):  in_fd, must correspond to a file which sup-
  ports mmap(2)-like operations (i.e., it cannot be a socket); and out_fd
  must refer to a socket.
Поэтому я и пытался уточнить, изменилось ли это. А аноним, подчёркивая совоё почётное звание, отвечает вопросом на вопрос.

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

Передачи данных по сети при read() файла с удалённой файловой системой.

Может я не совсем понимаю про что пишет ТС, но вроде как-то так:

cp /mnt/net/a.txt /mnt/net/b.txt
где в /mnt/net подмонитровано что-то по sshfs или NFS. И это копирование есть серия read()/write(), что взывает передачу содержимого файла по сети туда и обратно, хотя как бы, без смысла, ведь файл остаётся на удалённой ФС.

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

Чтобы осуществлять read()/write() на удалённом хосте нужено, чтобы ФМ был запущен там, на удалённом хосте, что ТС не удобно. Ну или какой-то особый файл менеджер, который «понимает» что копирование будет с sshfs на sshfs и осуществляет удалённое выполнение команды ″cp″.

mky ★★★★★
()

можно ли этого добиться каким-либо образом?

Теоретически - да, конечно, на практике - мне неизвестны инструменты, которые это умеют.

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

Замечательно, а то я думал, что как они сломали sendfile() для file->file при переходе от 2.4.x к 2.6.x дак так чинить не будут.

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

В mc было (есть?) shell-соединение, может там не будет лишних передач данных по сети.

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

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

Если закачиваешь на удалённую машину, точно не разбирался, но такое ощущение, что mc складывает файл во временный каталог и оттуда уже льёт его на сервер.

Это всего лишь твоё «ощущение».

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

Это всего лишь твоё «ощущение».

Угу. И сообщение о нехватке памяти при заливке большого файла — тоже «ощущение»? И быстрый пробег скроллбара и последующее долгое «тикание» цифр в нижней части mc? :)

Иллюстрации. Вот 1.4Гб переданные передаваемые через 2Мбит канал:
https://twitter.com/balancer73/status/499347168961236992/photo/1
Обрати внимание на «скорость» передачи.

А потом начинается такой тик:
https://twitter.com/balancer73/status/499347487761518592/photo/1

И вот если памяти мало (не в этом случае, сейчас под рукой нет связки с большим файлом и малой памятью), то аплоад обламывается.

И, да, пока бегут циферки, mc ни использовать нельзя, ни прервать (в т.ч. по Ctrl-C, Ctrl-Z), только убить по kill из другой консоли.

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