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

Исходное сообщение
"Облако Selectel: зависание монтирования, зависание копирования"

Отправлено xintrea , 26-Дек-12 13:10 
Здравствуйте!


Разбираюсь сейчас с облачным хранилищем selectel.ru.

Монтирую хранилище через программу cloudfuse.

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

1.

Спустя какое-то время после монтирования (несколько часов), каталог хранилища перестает открываться. При этом хранилище примонтировано, команда mount показывает что монтирование есть:

$ mount
...
fuse on /mnt/storage type fuse (rw,nosuid,nodev,user=user)

Узнать, что каталог перестал открываться можно одним способом - попробовать войти в каталог (cd) и попробовать получить список файлов (ls). Если терминал повиснет, значит нужно перемонтироваться. Терминал виснет так, что даже Ctrl+C не помогает.

Отмонтирование с целью дальнейшего монтирования приходится делать с опциями -f -l, иначе не отмонтируется:

#umount -f -l /mnt/storage

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

2.

Проблема может возникнуть в середине копирования большого файла. То есть, на начало копирования каталог хранилища доступен. В середине копирования (не всегда, вероятность 50/50) все виснет напрочь, как и в п.1.

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


Содержание

Сообщения в этом обсуждении
"Облако Selectel: зависание монтирования, зависание копирования"
Отправлено name , 26-Дек-12 16:20 
cp tralala /tmp &
в цикле до 100500
ps | grep cp

"Облако Selectel: зависание монтирования, зависание копирования"
Отправлено name , 26-Дек-12 16:26 
dd if=tralala of=/tmp/1.bin &

kill -USR1 номер процесса


"Облако Selectel: зависание монтирования, зависание копирования"
Отправлено enchant , 27-Дек-12 18:56 
Скорее всего проблема в самом cloudfuse который не обрабатывает случае обрыва соединения и не делает попытки переподключиться.

Попробуйте другие способы монтирования, например http://pypi.python.org/pypi/pycloudfuse/


"Облако Selectel: зависание монтирования, зависание копирования"
Отправлено NHN , 22-Фев-13 16:57 
аналогичная проблема. pycloudfuse пробовали? помогло?

"Облако Selectel: зависание монтирования, зависание копирования"
Отправлено Mr. Mistoffelees , 22-Фев-13 17:51 
Привет,

> Разбираюсь сейчас с облачным хранилищем selectel.ru.
> Монтирую хранилище через программу cloudfuse.

Раз это сетевой сервис, значит TCP. Раз TCP, вам нужно как-то позаботится об keep-alive - вряд ли FUSE сделает это за вас. Варантов много - от cron скрипта, которУй делает листинг каждую минуту до чего угодно. Лучший, наверно - пофиксить конкретный FUSE драйвер чтоб сам держал keep-alive.

WWell,


"Облако Selectel: зависание монтирования, зависание копирования"
Отправлено Pahanivo , 22-Фев-13 18:32 
> Проблема может возникнуть в середине копирования большого файла

"Облако Selectel: зависание монтирования, зависание копирования"
Отправлено John , 23-Фев-13 09:28 
Посмотрите документацию по утилите fusectl (способ проверить в шелл скрипте)
  кол-во запросов ожидающих отправки в пространство пользователя
  cat /sys/fs/fuse/connections/XX/waiting

  оборвать соединение ФС
  echo 1 > /sys/fs/fuse/connections/XX/abort

Есть дополнительная документация по fuse (в исходных текстах ядра)
/path_to/kernel-src/Documentation/filesystems/fuse.txt

Для копирования используйте rsync (с параметром --inplace) - он сможет "докопировать"