Евгений Поляков сообщил в списке рассылки разработчиков ядра Linux о готовности для включения в состав ядра Linux кода новой реализации сетевой распределённой файловой системы POHMELFS. Грег Кроу-Хартман (Greg Kroah-Hartman), курирующий экспериментальный "staging" раздел ядра Linux, в котором начиная с выпуска 2.6.30 поставляется код POHMELFS, уже удалил из ветки 3.3-rc3 код старой реализации POHMELFS, вместо которой в ближайшие дни будет добавлена новая версия. Таким образом, код новой реализации POHMELFS, основанный на работе поверх распределённого хранилища Elliptics, войдёт в состав ядра Linux 3.3.
Одновременно сообщается о том, что размер одного из кластеров Elliptics, используемый в компании Яндекс для хранения небольших объектов (от сотен байт до нескольких килобайт), таких как аватары, превысил отметку в 5 миллиардов хранимых объектов. Самое интересное, что для хранения подобного числа объектов используется всего два узла, в каждом по 24 двухтерабайтных диска и 48 Гб ОЗУ. Кластер планируется расшить, установив аналогичное оборудование ещё в двух датацентрах, обеспечив таким образом распределение данных между тремя территориально разделёнными системами.
С особенностями новой версии POHMELFS можно познакомиться в декабрьском анонсе данной ФС. По сравнению с представленной в декабре версии, в POHMELFS было доведено до рабочего вида несколько интересных возможностей:
- Поддержка "кворума на чтение", в дополнение к ранее реализованному "кворуму на запись". Суть кворума на запись в том, что в ситуации, когда запись осуществляется параллельно на несколько узлов, с созданием трёх резервных блоков на разных узлах, для успешного завершения операции записи должно быть успешно записано как минимум два блока с продублированными данными (настраивается через опцию 'successful_write_count='). Кворум на чтение, позволяет гарантировать чтение самой свежей порции данных, реплицированных на несколько узлов. При каждом запросе на чтение производится проверка мета-данных с наскольких узлов и выбор блока с самым свежим временем изменения. Одновременно, если выявлены более старые блоки они помечаются для последующей синхронизации;
- Поддержка режима совместимости с HTTP-приложениями. Для чтения и записи данных в POHMELFS теперь возможно дополнительно использовать специальный HTTP API, работающий напрямую с хранилищем Elliptics по идентификатору объекта, который теперь генерируется как хэш от файлового пути. Можно создавать такие схемы, при которых данные читаются из web-приложения через HTTP API, а записываются через штатный интерфейс файловой системы, и наоборот. Ограничением режима совместимости с HTTP-приложениями является невозможность прямого переименования файлов (требуется удаление файла и добавление нового).
- Поддержка жёстких ссылок (hardlink) и специальных файлов (socket/pipe).