/mnt/sda и /mnt/sdb. Вы можете объединить их в единый диск в новой точке монтирования /mnt/sdab. Объём двух разделов суммируется в новой точке монтирования. При этом файлы будут писаться в зависимости от настроек в оба исходных диска, а /mnt/sdab просто будет единое место, к которому можно обращаться для работы с файлами.Сразу поясню, где это может пригодиться.
🔹Видеосервер с записями камер. Можно объединить разнородные хранилища в единую точку монтирования и указать её в настройках видеосервера.
🔹У меня не раз бывали ситуации, когда мне нужно было объединить в единый раздел несколько raid1 или raid10. Для этого я их объединял с помощью LVM. Бывает так, что у вас есть сервер с 4-мя дисками, но при этом они одинаковые парами, например 2 по 2TB и 2 по 3TB. Вы делаете 2 зеркала mdadm, а потом поверх него пускаете LVM. Получаете 5TB в одном разделе. В некоторых случаях удобнее и безопаснее обойтись без LVM, а сделать логическое объединение.
🔹Сервер со статикой или кэшом, где не нужна отказоустойчивость. Можно просто расширять отдельными дисками, а веб серверу отдать единую точку монтирования, где будут видны все файлы.
🔹Сервер для бэкапов, где допустимо логическое объединение дисков. А для бэкапов это часто допустимо.
Работает всё это на базе mergerfs. Покажу сразу на практике. Допустим, у нас есть 2 диска sda и sdb по 20G. Создаём на них по одному разделу и монтируем в систему:
# cfdisk /dev/sda# cfdisk /dev/sdb# lsblk# mkfs.ext4 /dev/sda1# mkfs.ext4 /dev/sdb1# mkdir /mnt/sda# mkdir /mnt/sdb# mount /dev/sda1 /mnt/sda# mount /dev/sdb1 /mnt/sdb# df -h/dev/sda1 20G 24K 19G 1% /mnt/sda1/dev/sdb1 20G 24K 19G 1% /mnt/sdb1Создали, примонтировали, убедились, что всё работает. Устанавливаем mergerfs и создаём общий диск:
# apt install mergerfs# mkdir /mnt/sdbc# mergerfs -o defaults,allow_other,category.create=mfs,moveonenospc=true,minfreespace=1G /mnt/sda1:/mnt/sdb1 /mnt/sdab# df -h | grep sdaba1:b1 40G 48K 38G 1% /mnt/sdabЯ добавил к параметрам по умолчанию следующие:
◽️allow_other - позволяет пользователям видеть файловую систему, иначе увидит только root.
◽️category.create=mfs - политика распределения файлов по дискам в зависимости от наличия там свободного места, где больше места, туда пишем.
◽️moveonenospc=true - при сбое записи если, к примеру, на устройстве не осталось места или превышена квота, файл будет записан в другое место.
◽️minfreespace=1G - если на устройстве меньше 1G места, туда больше не пишем.
С такими настройками если записывать на общее хранилище одинаковые по размеру файлы, то они будут по очереди записываться на разные диски. Их можно будет напрямую увидеть в
/mnt/sda1 и /mnt/sdb1. # dd if=/dev/zero of=/mnt/sdab/tempfile1 bs=1M count=1000# dd if=/dev/zero of=/mnt/sdab/tempfile2 bs=1M count=1000# ls /mnt/sdabtempfile1 tempfile2# ls /mnt/sda1tempfile2# ls /mnt/sdb1tempfile1В репозитории описаны все настройки и возможные политики записи. Они могут быть применены к каждому диску индивидуально. Например, какое-то хранилище может быть подключено только для чтения, на какое-то перестаём писать, когда там остаётся свободно 10G, записываем данные последовательно, заполняя диски по очереди и т.д.
Общее хранилище можно подключать через fstab или systemd-mount. Примеры есть в репозитории.
Полезный прикладной софт. Работает просто, решает конкретную задачу.
⇨ 🌐 Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#fileserver
