Иногда нужно быстро объединить несколько разных дисков в один общий каталог, но без RAID, LVM и сложной перестройки хранилища. Например, есть два диска, смонтированные так:
/mnt/sda
/mnt/sdb
А хочется получить одну общую точку:
/mnt/storage. Чтобы приложения видели это как единое хранилище, а файлы физически раскладывались по исходным дискам. Для такой задачи хорошо подходит mergerfs. Это не RAID и не замена бэкапам. Это именно логическое объединение каталогов в одну файловую систему поверх уже существующих маунт поинтов.▪️ Где это может пригодиться:
• видеосервер с архивом камер. Можно объединить несколько разнородных дисков и указать видеосерверу один общий путь.
• сервер со статикой или кэшем. Когда отказоустойчивость не критична, но нужно удобно расширять объем.
• backup-хранилище. Для некоторых сценариев бэкапов логическое объединение дисков вполне допустимо.
• сервер с дисками разного размера. Например, есть 2 ТБ + 3 ТБ, и хочется получить один общий каталог без плясок с RAID-массивами.
▪️ Пример на практике. Допустим, у нас есть два диска
/dev/sda и /dev/sdb. Создаем разделы, файловые системы и монтируем их:
cfdisk /dev/sda
cfdisk /dev/sdb
mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sdb1
mkdir -p /mnt/sda1 /mnt/sdb1
mount /dev/sda1 /mnt/sda1
mount /dev/sdb1 /mnt/sdb1
Проверяем:
df -h
Теперь ставим mergerfs:
apt install mergerfs
Создаем общую точку монтирования:
mkdir -p /mnt/storage
И объединяем два диска:
mergerfs -o defaults,allow_other,category.create=mfs,moveonenospc=true,minfreespace=1G \
/mnt/sda1:/mnt/sdb1 /mnt/storage
После этого
/mnt/storage будет показывать суммарный объем двух дисков. Проверяем:
df -h | grep storage
▪️ Что означают опции:
allow_other - Позволяет видеть файловую систему не только root, но и другим пользователям.category.create=mfs - Новые файлы создаются там, где больше свободного места. mfs - most free space.moveonenospc=true - Если при записи на выбранном диске закончилось место, mergerfs попробует перенести файл на другой диск.minfreespace=1G - Если на диске осталось меньше 1 ГБ, новые файлы туда больше не пишутся.▪️ Проверить распределение можно простыми файлами:
dd if=/dev/zero of=/mnt/storage/tempfile1 bs=1M count=1000
dd if=/dev/zero of=/mnt/storage/tempfile2 bs=1M count=1000
ls /mnt/storage
ls /mnt/sda1
ls /mnt/sdb1
Файлы будут видны в общей точке
/mnt/storage, но физически лежать на одном из исходных дисков. Это важное отличие от RAID: каждый файл хранится целиком на конкретном диске, а не размазывается блоками по всем устройствам.▪️ Плюсы такого подхода:
• можно объединять диски разного размера
• не нужно пересобирать массив
• легко добавить новый диск
• файлы остаются читаемыми напрямую с исходных mount point’ов
• удобно для статичных данных, кэша, архивов и бэкапов
▪️ Но есть и ограничения. Если один диск умрет, вы потеряете файлы, которые лежали именно на нем. Остальные диски при этом останутся читаемыми.
То есть mergerfs дает удобство единого пространства, но не дает отказоустойчивость. Для постоянного подключения mergerfs можно добавить в
/etc/fstab или оформить через systemd mount. Это уже зависит от того, как вы привыкли управлять маунтами.#mergerfs #storage
🧑💻 NetworkAdmin