В тестовом выпуске ядра Linux 3.18-rc2 появилась поддержка файловой системы OverlayFS, разработанной компанией SUSE в качестве более прогрессивной замены UnionFS и AUFS. В процессе цикла подготовки первого кандидата в релизы, включение OverlayFS в состав ядра было отложено, но в последний момент разработчикам удалось устранить финальные замечания и код был принят во второй кандидат в релизы.
OverlayFS позволяет создать виртуальную многослойную файловую систему, объединяющую несколько частей других файловых систем. OverlayFS входит в число наиболее ожидаемых в ядре возможностей, так как монослойная ФС востребована в Live-дистрибутивах и системах контейнерной виртуализации, и в частности, необходима для организации работы контейнеров отдельных десктоп-приложений. При помощи OverlayFS можно организовать файловую систему, которая будет сформирована поверх доступной только на чтение основы, созданной из существующих директорий в уже примонтированной типовой ФС.
ФС создаётся из нескольких слоёв, каждый из которых прикрепляется к отдельным директориям: нижнего и верхнего. В качестве нижнего слоя, используемого только для чтения, могут применяться директории любых поддерживаемых в Linux систем, включая NFS и другие экземпляры OverlayFS. Верхний слой, который может быть доступен на запись, будет перекрывать состав нижнего слоя, т.е. если файлы дублируются, в итоговой ФС будет виден только перекрывающийся контент верхнего слоя. При этом все записываемые и изменяемые данные будут сохраняться только в верхнем слое, даже если изначально они размещались в нижнем слое ФС, что позволяет использовать одну основу для создания серии одинаковых окружений (контейнеры приложений), гарантировать неизменность базовых данных (гостевые сеансы) или организовать полноценную работу поверх накопителя, не поддерживающего запись (CD/DVD).
Основным недостатком файловой системы UnionFS и ответвления AUFS является излишне усложнённая кодовая база, составляющая примерно 60 тысяч строк кода, не использующая штатную подсистему VFS. Код AUFS и UnionFS очень трудоёмок для сопровождения и не отвечает требованиям к оформлению кода для ядра Linux, что не позволяло включить его в основной состав ядра. Кроме того, производительность и надёжность данных систем оставляет желать лучшего. В рамках проекта OverlayFS предпринята попытка создания компактного, надёжного и высокопроизводительного аналога UnionFS, построенного поверх штатной подсистемы VFS.
Механизм работы OverlayFS также в корне отличается от UnionFS: после открытия файла, все операции с ним напрямую транслируются непосредственно в базовые файловые системы, из которых составлен раздел UnionFS. Подобный подход позволяет существенно упростить реализацию многослойной ФС и добиться уровня производительности основной ФС. В OverlayFS поддерживается отдельное дерево элементов директорий (dentry), дублирующий подобные структуры низлежащих ФС, что позволяет обеспечить быстрое кэширование запросов без внесения изменений в VFS, но приводит к дополнительным затратам памяти за счёт дублирования в памяти параметров inode (предусмотрена возможность оптимизации для совместного использования не привязанным к директориям inode).