RAID объединяет диски на уровне блоков — один упавший диск может утянуть за собой весь массив, в зависимости от уровня. mergerfs работает иначе: это FUSE-файловая система, которая просто логически сливает несколько независимых путей в одну точку монтирования, каждый диск остаётся отдельной файловой системой сам по себе.
Запуск — обычный синтаксис mount, диски через двоеточие:
mergerfs -o cache.files=off,category.create=mfs,func.getattr=newest,dropcacheonclose=false /mnt/hdd/disk0:/mnt/hdd/disk1:/mnt/hdd/disk2 /media
/etc/fstab — то же самое одной строкой:
/mnt/hdd/disk0:/mnt/hdd/disk1:/mnt/hdd/disk2 /media mergerfs cache.files=off,category.create=mfs,func.getattr=newest,dropcacheonclose=false 0 0
Главная настройка — category.create, политика выбора диска для новых файлов:
mfs(most free space) — класть на диск с максимумом свободного места, самый интуитивный вариантlfs(least free space) — обратное, добивать диски по одномуpfrd(proportional fill random distribution) — распределяет пропорционально свободному месту случайным образом, текущая рекомендация проекта по умолчанию — не создаёт паттерна “все новые файлы на одном диске”, который может провоцировать проблемы сmmapна новых ядрах
При удалении файла или изменении атрибутов mergerfs применяет операцию ко всем копиям файла, если он почему-то существует на нескольких дисках сразу — но само создание нового файла всегда идёт только на один диск, выбранный политикой category.create. Никакой репликации данных между дисками mergerfs не делает — это не замена RAID/бэкапа, а именно объединение свободного места и путей в одно дерево каталогов.
Отключение одного диска из массива не роняет остальные — файлы, физически лежавшие на упавшем диске, становятся недоступны, но mergerfs продолжает отдавать всё, что осталось на живых дисках, без падения точки монтирования целиком.
#linux #fuse #mergerfs
