LINUX.ORG.RU

Нужен тест и аудит FUSE ФС для Mail.ru Cloud

 , ,


5

5

У меня 1ТБ стораджа со времён бета-тестинга MRu-облака. Не пропадать добру. Написал FUSE-файловую систему для него. Если у кого схожая ситуация - тащите, тестируйте. Мне нужны отзывы, баги, предложения и т.д.

Например, в каких операциях нужен кэш. Где стоит поставить блок/мьютекс. Что ещё стоит реализовать.

В планах дальше шифрование файлов перед заливкой.

Ссылка: https://gitlab.com/Kanedias/MARC-FS

P.S. Debian Stable не предлагать.

Перемещено leave из talks

★★★

вы еще box.com не видали. там на бесплатном тарифе лимит на файл 250MB ;-)

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

А им как-то пофиг на лично твои хотелки. Уверяю тебя, кучка гиков, которым нужен webdav и шифрование мейлору вообще не трясут.

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

А им как-то пофиг на лично твои хотелки.

Нахрен тогда пиарить это облачное гавно?

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

гиков, которым нужен webdav и шифрование мейлору вообще не трясут

И зря, это было бы их конкурентным преимуществом. Ну да ладно, хотят ориентироваться на быдло - пусть ориентируются.

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

Делает дедупликацию файлов невозможной. 1000 человек залюют один и тот же фильм без шифрования — это будет 5 гигабайт. С шифрованием — 5 терабайт.

Это проблемы Mail.Ru, а не пользователей. В оферте ничего не указано на счёт запрета шифрования.

Никто не будет бесплатно раздавать дисковое пространство, такой благотворительностью только Mega занимается

Пусть и не раздают. Это их дело, как выстраивать бизнес-модель.

//заливаю только шифрованные файлы на бесплатные облака.

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

Пофайловая дедупликация? Ну-ну

anonymous
()
23 февраля 2017 г.

Хотел приспособить для хранения бекапов сервера в облаке майлру.

На сервере стоит Ubuntu 16.04.2 LTS. Чтобы не засорять сервер программами для сборки поставил такую же убунту в виртуалку и там собрал. Закинул бинарник marcfs из каталога MARC-FS/build/ на сервер. Доустановил на сервере fuse libjsoncpp1 libfuse2. После мониторвания ./marcfs /mnt/mailru -o username=$(muser),password=$(mpass)

ls -l /mnt/ дает такую картину

ls: cannot access '/mnt/mailru': Permission denied
total 0
d????????? ? ? ? ?            ? mailru
fusermount -u /mnt/mailru отмонтирует штатно.

Что я делаю не правильно?

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

В виртуалке где производил сборку монтирование работает штатно.

ldd marcfs 
        linux-vdso.so.1 =>  (0x00007ffe4a748000)
        libjsoncpp.so.1 => /usr/lib/x86_64-linux-gnu/libjsoncpp.so.1 (0x00007fdf074a5000)
        libfuse.so.2 => /lib/x86_64-linux-gnu/libfuse.so.2 (0x00007fdf07269000)
        libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fdf06ff9000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fdf06c77000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fdf06a61000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdf06697000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdf0638e000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdf0618a000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fdf05f6c000)
        libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007fdf05d39000)
        librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007fdf05b1d000)
        libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fdf058b3000)
        libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fdf0546f000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fdf05225000)
        liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007fdf05015000)
        libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007fdf04dc4000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fdf04baa000)
        /lib64/ld-linux-x86-64.so.2 (0x000055bb3ad59000)
        libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007fdf04879000)
        libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007fdf04646000)
        libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007fdf04410000)
        libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fdf0418f000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fdf03ebd000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fdf03c8e000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fdf03a89000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fdf0387e000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fdf03663000)
        libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007fdf03447000)
        libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007fdf03206000)
        libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fdf02fa2000)
        libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fdf02d8e000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fdf02b8a000)
        libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007fdf02980000)
        libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007fdf026f6000)
        libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007fdf02454000)
        libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007fdf02220000)
        libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007fdf0200a000)
        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007fdf01e02000)
        libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007fdf01bd8000)
        libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007fdf019c9000)
        libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007fdf0177e000)
        libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007fdf014a8000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fdf01270000)
все перечисленные библиотеки присутствуют в системе на сервере.

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

Спасибо за помощь.

Это в консоли при монтировании.

root@ubuntu: /var/arxivator > ./mmarck.sh 
FUSE library version: 2.9.4
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.24
flags=0x0003f7fb
max_readahead=0x00020000
   INIT: 7.19
   flags=0x00000030
   max_readahead=0x00020000
   max_write=0x00020000
   max_background=0
   congestion_threshold=0
   unique: 1, success, outsize: 40
Это ls
root@ubuntu: ~ > ls -l /mnt/
ls: cannot access '/mnt/mailru': Permission denied
total 0
d????????? ? ? ? ?            ? mailru
Не уверен имеет ли это значение но монтирую от пользователя www-data sudo -u www-data ./marcfs -d ...

Права на каталог монтирования.

root@ubuntu: ~ > ls -l /mnt/
total 4
drwxrwxrwx 2 www-data www-data 4096 Feb 20 17:59 mailru

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

Хм, на вид всё нормально... Завтра попробую в докере примонтировать.

Не уверен имеет ли это значение но монтирую от пользователя www-data

А allow_other есть в опциях?

P.S. в lsmod есть fuse?

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

А allow_other есть в опциях?

Раскомментировал в /etc/fuse.conf строку user_allow_other. Смонтировал с опцией -o allow_other вывод ls изменился на

root@ubuntu: /var/arxivator > ls -l /mnt/
total 0
drwx------ 2 root root 0 Jan  1  1970 mailru
Файлы туда-сюда копируются/перемещаются. Видимо все работает.

Спасибо за помощь!

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

А можешь пояснить один вопрос?

На странице проекта есть раздел «Bugs & Known issues» Там первым пунктом идет «very big memory footprint due to: reading files into memory when reading/writing».

Я хочу использовать эту фс для бекапа сервера. Перед залитием на облако была идея пропускать через конвеер tar(с разбитием на блоки по <2Гб) и шифрование с openssl. Но поскольку на впске всего 50Гб диска а данные занимают примерно 35Гб. Физически нет места под архив такого размера. Была идея напрямую писать в смонтированную фс. Но в связи с цитатой выше встает вопрос хватит ли оперативы если ее всего 2Гб?

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

У меня следующая таска под это дело - использовать указанный при монтировании дополнительный каталог для промежуточных данных, вместо памяти. Разбивку по 2Гб прозрачную только-только доделал.

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

Это по идее мне тоже не поможет т.к. памяти никакой нет:-) Но если использовать ту разбивку которую ты реализовал + монтировать сверху encfs(как указано в ридми) то наверно должно работать и на моем объеме памяти. Просто мне идея с самостоятельным созданием архива + шифрование больше нравилась.

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

Не получится, EncFS-то всё равно поверх MarcFS будет работать. То есть по факту файл загрузится в память, потом EncFS его кусками по 4КБ шифрует, и только потом он будет по сети передаваться.

Я репортил в Mail.ru, чтоб они сделали поддержку Transfer-Encoding: chunked, тогда можно было бы файл потоком заливать, не зная его размер, это позволило бы не так налегать на память. Но от них пока что ни слуху, ни духу.

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

А такое там не банят?

неприкосновенность личных данных, ага

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

Но от них пока что ни слуху, ни духу.

Что то мне подсказывает что ничего они не сделают. Они сколько вебдав обещали, а воз и ныне там.

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

Попробовал такой конструкцией:

tar czf - ./www/nextcloud/data/Behem0th | openssl enc -e -aes-256-cbc -k $encpass | split -d -b 990m - /mnt/mailru/nextcloudbackup/$cdate/bkp-data.tar.encoded.
Отвалилось почти в самом начале
split: /mnt/mailru/nextcloudbackup/2017-03-04/bkp-data.tar.encoded.00: Software caused connection abort
error writing output file

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

Ну, я подозреваю... помониторь расходование памяти в htop перед тем как отвалится с ошибкой?

P.S. Ладно, завтра займусь кэш-каталогом, всё-таки места обычно больше на диске, чем в памяти.

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

Привет. Попробуй ветку largefile-support? С опцией -ocachedir=... должно получше себя чувствовать, промежуточные файлы при заливке будут там вместо памяти. Главное чтоб места на диске хватило под самый жирный из файлов.

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

Попробуй ветку largefile-support?

Я так понимаю за это время изменения уже попали в мастер. Собрал мастер, конструкцией что выше с указанием ocachedir, удалось заливать в маил облако архив. Передалось примерно 15Гб кусками по 990Мб без проблем.

Спасибо!

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

Всегда меня выручаешь :) спасибо за тест!

Не забудь md5 проверить у копий и оригинала, мало ли что.

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

Не забудь md5 проверить у копий и оригинала, мало ли что.

Хороший совет обязательно попробую и отпишусь.

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

Там за раз и пачку файлов больше 2 Гб залить не получится. Но у них хотя бы текстовые файлы, в отличии от Яндекса, нормально отображаются.

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

К слову, я сделал прозрачную разбивку по 2 Гб файлов, заливаемых в ФС. Покопировал HD-фильмы туда-сюда, вроде работает

Adonai ★★★
() автор топика
27 марта 2018 г.

Отличная работа, спасибо! Все классно и довольно стабильно работает. Есть один неприятный момент. Если во время чтения/записи из этой файловой происходит обрыв связи с cloud.mail.ru (например провайдер ночью передернул интерфейс или пропало питание и ребутнулся роутер) процессы, юзающие эту файловую, становятся в статус D (uninteruptable) и, соответсвенно, спасает только ребут. Можно ли это пофиксить?

Greenchik
()
1 октября 2018 г.
Ответ на: комментарий от Greenchik

Создай Issue на гитлабе, как будет время посмотрю

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