Розширення каталогу з архівом на декілька дисків за допомогою MergerFS
Ми рекомендуємо заздалегідь планувати простір під архів і для великих обсягів даних використовувати спеціальні технології, такі як ZFS, які дозволяють рівномірно балансувати дані по дисках, мають систему відмовостійкості і можуть без проблем розширювати масиви даних на десятки дисків і сотні терабайт даних.
Проблема
Ви запустили Yucca в базовій конфігурації з архівом на диску із системою, з часом кількість камер і архіву збільшилася і поточного диска вже не вистачає. Можна додати в систему ще один або декілька дисків і рівномірно розподілити зберігання архіву по них – це потребуватиме зупинки Yucca, створення дискового масиву, перенесення всіх даних. У цьому випадку сервіс може бути недоступний кілька годин, що неприпустимо.
Рішення
Якщо ви хочете поступово розширювати каталог для зберігання архіву, додаючи додаткові диски, але без використання RAID технологій, на кшталт ZFS або mdadm, і не перебудовувати всю інфраструктуру, можна використовувати об'єднані файлові системи – Union filesystem.
Є кілька рішень у цьому сегменті, але ми зупинимося на mergerfs і далі все буде саме в її контексті. Порівняння mergerfs з іншими рішеннями доступне тут.
mergerfs – це об'єднана файлова система, призначена для спрощення зберігання та керування файлами на численних звичайних пристроях зберігання, вона схожа на mhddfs, UnionFS і Aufs. Більше подробиць ви можете знайти в офіційному репозиторії проєкту – https://github.com/trapexit/mergerfs.
mergerfs, грубо кажучи, створює віртуальний каталог, під яким може знаходитися кілька реальних каталогів на різних дисках з різними файловими системами, на кшталт ext4 чи XFS. mergerfs не розбиває файли на частини, вони повністю з усіма метаданими зберігаються в одному з підкаталогів:
A + B = C
/disk1 /disk2 /merged
| | |
+-- /dir1 +-- /dir1 +-- /dir1
| | | | | |
| +-- file1 | +-- file2 | +-- file1
| | +-- file3 | +-- file2
+-- /dir2 | | +-- file3
| | +-- /dir3 |
| +-- file4 | +-- /dir2
| +-- file5 | |
+-- file6 | +-- file4
|
+-- /dir3
| |
| +-- file5
|
+-- file6
Плюси
- Легко розширювати простір, додаючи нові диски;
- Легко налаштувати, mergerfs – файло ва система простору користувача, тому ви можете встановити її як програму на будь-який Linux;
- Немає спеціальних вимог до об'єднуваних каталогів, це можуть бути диски з різним обсягом, файловими системами або навіть мережеві папки;
- Не потребує перебудови всієї інфраструктури.
Мінуси
- Немає балансування навантаження – навантаження на одні диски може бути вищим ніж на інші, як наслідок, архів з одних камер може віддаватися повільніше ніж з інших;
- Немає надлишковості, відмова диска спричинить повну втрату даних.
Встановлення
Інструкція зі встановлення є в репозиторії.
Якщо менеджер пакетів вашого дистрибутива містить mergerfs, перевірте, чи актуальна його версія. Якщо версія застаріла, рекомендується використовувати останній випуск, знайдений на сторінці. Подробиці для поширених дистрибутивів наведено нижче.
Описані нижче дії виконувалися на Ubuntu 22.04, mergerfs був встановлений через deb-пакет з репозиторію.
Для openSUSE є репозиторій в OBS з останніми версіями.
Налаштування
У прикладі віртуальна машина з диском на 20 гігабайт і двома додатковими дисками на 10 гігабайт:
# df -h | grep -v -E "(tmpfs|overlay)"
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 19G 4.5G 14G 26% /
/dev/sda15 253M 142K 252M 1% /boot/efi
/dev/sdb 9.8G 28K 9.3G 1% /mnt/HC_Volume_100511911
/dev/sdc 9.8G 28K 9.3G 1% /mnt/HC_Volume_100511912
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 19.1G 0 disk
├─sda1 8:1 0 18.8G 0 part /
├─sda14 8:14 0 1M 0 part