Как разделить moodledata или хранение файлов старых курсов отдельно?

Как разделить moodledata или хранение файлов старых курсов отдельно?

от Alb Swan -
Количество ответов: 8

Здравсвуйте

У нас moodle используется уже 4 года. С того времени размер папки moodledata вырос почти до терабайта.

Удалять старые курсы не разрешают. Так как все файлы тех курсов должны быть доступны всегда.

Есть ли возможность в мудле к примеру файлы некой катергории курсов хранились отдельно, но при этом доступ к ним осуществлялся как обычно для пользователя?

Мудл у нас крутится на 5 серверах везде убунту. 1 - балансер, 2 - сервера мудла, 1 - оракл, 1 - файловый сервер где расположен папка moodledata который доступен по NFS.

Вопрос возник так как админы линукса говорят что диски  больше 2 терабайт не поддерживаются. И не советует хранит данные не больше 1,5 терабайт на одном диске. Для решении проблем предлагают перенести на LVM или самим решит как разделит данные. Перенос на LVM означает остановку и копирование данных туда, что пока не возможно.

В ответ на Alb Swan

Re: Как разделить moodledata или хранение файлов старых курсов отдельно?

от Marina Glancy -

Здравствуйте Алб,

в том виде в котором Вы задаете вопрос, ответ на него будет "нет". Moodle не разделяет файлы по месту их использования. Они хранятся на диске в директории и с именем файла соответсвующему contenthash содержимого файла. Если один и тот же файл используется в нескольких курсах, на сервере будет только одна его копия.

Однако возможно перенести некоторые папки на другой сервер и вручную создать на них symlinks. Не забудьте при этом установить директиву вебсерверу (apache) to follow symlinks.

Еще, конечно, с таким объемом данных вам надо использовать внешние репозитории и не создавать локальные копии для каждого файла

В ответ на Marina Glancy

Re: Как разделить moodledata или хранение файлов старых курсов отдельно?

от Alb Swan -
Спасибо за идею, только симлинков придется создовать очень много.
Посмотрел содержание папки moodledata. Там 93 папок. В основмном размеры от нескольких Mb до 2-3 сотен Mb.
Самая большая по размеру папка filedir 770Gb. Похоже здесь хранятся загружаемые файлы.
filedir содержит вложенных 256 папок каждый из них весит 1-3 Gb.

Внешние репозитории не используется, так уж повелось.
В ответ на Alb Swan

Re: Как разделить moodledata или хранение файлов старых курсов отдельно?

от Vadim Tabunshchik -
Изображение пользователя Developers
Посмотрел содержание папки moodledata. Там 93 папок

В корне moodledata? Интересно, откуда там их столько?

Максимум, что может (и должно) быть в moodledata:

cache\
environment\
filedir\
filter\
geoip\
lang\
localcache\
lock\
mdeploy\
muc\
temp\
trashdir\

PS: Папки geoip\ может и не быть, если не пользуетесь определением местоположения пользователя по IP.

PPS: не исключаю наличие 2-3 "лишних" каталогов при условии установки доп. плагинов, например, admin_report_customsql. В случае использования хранилища "Файловая система" также добавляется каталог repository

В Вашем случае всё остальное (~80 папок) - это "происки врагов" улыбаюсь

В ответ на Vadim Tabunshchik

Re: Как разделить moodledata или хранение файлов старых курсов отдельно?

от Alb Swan -

вот такие папки

# ls
1    109  112  17  21  27  32  37  42  46  5   55  61  67  75  82  90  94  98     codecoverage   lang        smarty_c     user
10   11   113  18  22  3   33  38  43  47  50  58  62  7   79  84  91  95  99     downloadtests  muc         temp
100  110  12   19  25  30  34  39  44  48  51  6   63  70  8   88  92  96  blog   filedir        repository  trashdir
101  111  14   20  26  31  36  4   45  49  53  60  65  74  81  89  93  97  cache  groups         sessions    upgradelogs


цифровые папки оказывается не менялись с 2011 года, тогда и первый раз поставили мудл как мне сообщили те кто раньше работал.

вот содержание нескольких цифровых папок

1:
total 4112
drwxrwx---  3 nobody www-data    4096 2011-08-27 16:06 .
drwxrwx--x 91 nobody www-data    4096 2014-11-04 08:57 ..
-rwxrwx---  1 nobody www-data 4197011 2011-08-27 16:06 3rockstar_20teachers.mp4
drwxrwx---  2 nobody www-data    4096 2011-08-27 16:06 backupdata
-rwxrwx---  1 nobody www-data       0 2011-08-27 16:06 maintenance.html

17:
total 8304
drwxrwx---  3 nobody www-data    4096 2011-08-27 16:08 .
drwxrwx--x 91 nobody www-data    4096 2014-11-04 08:57 ..
-rwxrwx---  1 nobody www-data   51200 2011-08-27 16:07 Alternative_Food_Source_Worksheet.doc
-rwxrwx---  1 nobody www-data   30720 2011-08-27 16:07 Assignment_Declaration_Cover_Sheet.doc
drwxrwx---  2 nobody www-data    4096 2011-08-27 16:07 backupdata
-rwxrwx---  1 nobody www-data   53760 2011-08-27 16:07 Bogota-Building_a_Sustainable_City_Worksheet.doc
-rwxrwx---  1 nobody www-data 2645568 2011-08-27 16:08 Economics_-_A_Very_Short_Introduction.pdf
-rwxrwx---  1 nobody www-data  481525 2011-08-27 16:08 Evaluating_Sources.docx
-rwxrwx---  1 nobody www-data   36283 2011-08-27 16:07 How_we_wrecked_the_oceans.docx
-rwxrwx---  1 nobody www-data   34742 2011-08-27 16:08 Human_Rights.docx
-rwxrwx---  1 nobody www-data 2568830 2011-08-27 16:08 International_Relations_-_A_Very_Short_Introduction.pdf
-rwxrwx---  1 nobody www-data   20131 2011-08-27 16:08 IR_Vocab.docx
-rwxrwx---  1 nobody www-data   51712 2011-08-27 16:07 Midterm_Student_Self_Evaluation_Form.doc
-rwxrwx---  1 nobody www-data   15898 2011-08-27 16:07 ocean_lecture_notes.docx
-rwxrwx---  1 nobody www-data  145408 2011-08-27 16:07 Questions_for_Reading_Text_1_and_2_June_2010_Answer_Key_final.doc
-rwxrwx---  1 nobody www-data  152576 2011-08-27 16:07 Questions_for_Reading_Text_1_and_2_June_2010_final.doc
-rwxrwx---  1 nobody www-data  195072 2011-08-27 16:07 Reading_Exam_2010_Text_1_and_2_final.doc
-rwxrwx---  1 nobody www-data 1899957 2011-08-27 16:08 STEPHEN_HAWKING.pdf
-rwxrwx---  1 nobody www-data   48128 2011-08-27 16:07 Sustainability_Worksheet.doc
-rwxrwx---  1 nobody www-data   30542 2011-08-27 16:07 Walking_with_dinosaurs.docx


7:
total 176
drwxrwx---  5 nobody www-data  4096 2011-08-27 16:14 .
drwxrwx--x 91 nobody www-data  4096 2014-11-04 08:57 ..
drwxrwx---  2 nobody www-data  4096 2011-08-27 16:14 backupdata
drwxrwx---  3 nobody www-data  4096 2011-08-27 16:14 moddata
drwxrwx---  2 nobody www-data  4096 2011-08-27 16:14 Preparatory_Project
-rwxrwx---  1 nobody www-data 32768 2011-08-27 16:14 Preparatory_Project_Outline.doc
-rwxrwx---  1 nobody www-data 35328 2011-08-27 16:14 Prep_Project_Helpful_points_for_SS_to_remember_1_.doc
-rwxrwx---  1 nobody www-data 54272 2011-08-27 16:14 Sample_Essay.doc
-rwxrwx---  1 nobody www-data 30208 2011-08-27 16:14 SampleOutline.doc


а внутри папок backupdata несколько архивов примерно такие backup-partners_and_iac-20110818-2310.zip

а внутри архива вот это

course_files  moddata  moodle.xml  site_files  user_files


похоже это какие то бэкапы курсов.

В ответ на Alb Swan

Re: Как разделить moodledata или хранение файлов старых курсов отдельно?

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Alb, если у вас moodle версии выше, чем 2,0, значит цифровые папки - это то, что досталось вам в наследство от moodle1.9.

Там использовалось хранение файлов в папках. Если так получилось, что эти папки не пусты, значит на этапе переходиа к moodle 2.0 неправильно прошел перенос файлов в файловове хранилище. Высока вероятность того, что эти файлы хоть и лежат до сих пор, но непосредственно в moodle не используются. Для проверки зайдитее с сайт/course/view.php?id=<номер папки>, а сами файлы из папки временно перенесите. Если без этих файлов у вас курс будет нормально продолжать работать, значит эти файлы вам не нужны. Нормально работать - это открываться через файловое хранилище и т.п. Если не работает - то это тема отдельного расследования, через какой плагин это всё подключено.

Сейчас все файлы хранятся в filedir. Там специально 256 папок, чтобы была несложная возможность организации распределенного хранилища. Размер всех папок должен быть примерно одинаков - файлы туда попадают по хэшам, поэтому распределяются относительно равномерно. Поднимаете новое файловое хранилище (при таких масштабах, как мне видится, лучше аппаратное решение, а не сервер с ubuntu). Копируете туда по одной папке из filedir, и заменяете папку на symlink на новое место, потом повторно копируете, на случай если за время копирования файлы добавились и так последовательно. Я бы тут применял rsync для копирования. Можете половину папок перенести на одно хранилище, половину на другое, можете и на большее число хранилищ таким образом масштабировать, если у вас в одно всё не помещается. Это можно делать и не останавливая сервер.

Всё остальное в папке moodledata - это всевозможные кэши. Для повышения производительности их может быть нецелесообразно хранить на сетевом хранилище, может оказаться лучще хранить отдельную копию на каждом сервере приложений. 

Если ваш балансировщих запоминает, какая php-сессия с каким из серверов работает, то можно и папку sessions хранить на каждом сервере отдельно. Если не запоминает - то тогда на общем хранилище. 

В ответ на Vadim Dvorovenko

Re: Как разделить moodledata или хранение файлов старых курсов отдельно?

от Alb Swan -

Спасибо

Проверил, все цифровые папки  не используется. Пока просто перенес их из moodledata в другую папку, со временем удалю. Но это не сильно освободит место всего 17Gb, по сравнению с нашими терабайт это совсем мало. Теперь думаю будем переносить часть содержания filedir на другое хранилище и связать со старым местом симлинками. Насчет аппартного  хранилища руководству сказал, если решится положительно то файлы передут туда.

В ответ на Alb Swan

Re: Как разделить moodledata или хранение файлов старых курсов отдельно?

от Alexandre Scherbyna -

Еще есть вариант создания нескольких сайтов Moodle, имеющих общую базу пользователей.