OpenWRT — Монтируем BtrFS

Скучную и до жути заезженную задачу передо мной поставили — в офисе фирмы-клиента сделать общую файловую помойку, чтобы сотрудникам не надо было бегать из кабинета в кабинет с флешками или искать в сетевом окружении компьютер коллеги. Роутер итак у них уже с OpenWRT на борту, USB-разъем есть, флешку на 8Гб дали. Собственно перекидывают они там друг другу действительно документы небольшие — задача проста до безобразия.

Чтобы разнообразить этот серый день — решил попробовать, как себя поведет относительно молодая файловая система btrfs в устройстве под управлением OpenWRT. Тем более она умеет сжимать на ходу данные алгоритмами zLib и LZO, которые офисную документацию жмут с завидным коэффициентом.

Добавляем поддержку BtrFS в OpenWRT

Мы с Вами ранее уже монтировали USB-устройства в OpenWRT, включение поддержки BtrFS в прошивке аналогична прочим файловым системам:

make menuconfig
Kernel modules  --->
   USB Support  --->
      <*> kmod-usb-core
      <*> kmod-usb-ohci
      <*> kmod-usb-storage
      <*> kmod-usb-usb2
   Filesystems  --->
      <*> kmod-fs-btrfs
Base system   --->
   <*> block-mount

И, как всегда, пересобираем:

make clean
make V=-1

После пересборки вы заметите первый минус этого решения — прошивка увеличится примерно на 500 кбайт. Не самый легковесный компонент.

Форматирование флешки в BtrFS

Вот тут тоже оказалось не всё так просто. Моя любимая Ubuntu из под капота не имела поддержки BtrFS.
Так что первым делом устанавливаем инструменты:

sudo apt-get install btrfs-tools

И только теперь форматируем наше устройство. Я не стал мучатся с разбиением — отформатировал всё устройство без всяких таблиц разделов:

sudo mkfs.btrfs -f /dev/sdb

После форматирования можно чуть подосвободить свободное пространство, выполнив «балансировку»:

sudo mount /dev/sdb /mnt/sdb
sudo btrfs balance start /mnt/sdb

Ну всё, флешка готова. Подключаем к устройству и переходим к следующему пункту.

Монтирование BtrFS раздела в OpenWRT

Монтировать будем как настоящие админы через консоль. Я обычно предпочитаю использовать графические интерфейсы, где это возможно, но всё таки решил, что в случае с монтированием это не сложная затея и нагляднее дело обстоит.

Разберем пример, когда монтируем всё с чистого листа, и если что и было, то смело удаляем из системы.
Для этого сначала подчистим файл fstab

rm /etc/config/fstab

и тут же создадим его вновь автоматически не сложной командой

block detect >> /etc/config/fstab

Посмотрим, что получилось:

vi /etc/config/fstab
config 'global'
        option  anon_swap       '0'
        option  anon_mount      '0'
        option  auto_swap       '1'
        option  auto_mount      '1'
        option  delay_root      '5'
        option  check_fs        '0'

config 'mount'
        option  target  '/mnt/sda'
        option  uuid    '11e4181e-64e1-49ac-9f4a-da82a5edcc03'
        option  enabled '0'

Ну что, не дурно. Система увидела раздел, теперь надо его включить и внести некоторые штрихи:

config 'mount'
        option  target  '/mnt/sda'
        option  uuid    '11e4181e-64e1-49ac-9f4a-da82a5edcc03'
        option  enabled '1'
        option options 'compress-force=zlib,ssd_spread'

Тут мы добавили компрессию и оптимизацию для твердотельных накопителей (впрочем этот алгоритм и для флэшек хорош, но для жестких дисков использовать ой как не советую).

Теперь по поводу сжатия. Возможные варианты этого параметра простым языком:
compress=no — не использовать сжатия
compress=zlib — сжимать сжимаемое медленно, но качественно.
compress=lzo — сжимать сжимаемое быстро, но коэффициент сжатия уступает алгоритму zlib
compress-force=zlib — пытаться сжать абсолютно всё максимально сильно
compress-force=lzo — так же пытаемся сжать всё подряд, но с меньшей компрессией и большей скоростью
Вроде всё просто и понятно. Сохраняем и перезагружаемся.

Тест-драйв BtrFS в OpenWRT

Понятное дело Samba, выполняющая роль файлового сервера, быстрее работать не будет, разницу в скорости тоже вряд ли какую заметим. А вот сколько можно запихать документов на файловую помойку из 8Гб флешки мне стало интересно.

Так как столько документов у меня к сожалению или к счастью не накопилось, то я решил схитрить и скинуть каталог с исходниками OpenWRT, который у меня на данную минуту занимает чуть более 7Гб
До:

~# df /dev/sda
Filesystem 1K-blocks Used    Available Use% Mounted on
/dev/sda   7816704   16896   7487744   0%   /mnt/sda

После:

~# df /mnt/sda
Filesystem 1K-blocks Used    Available Use% Mounted on
/dev/sda   7816704   2511956 4491500   36%  /mnt/sda

Опачки..
На всякий случай глянем суммарный размер файлов на разделе:

~# du /mnt/sda
7144616	/mnt/sda

Ну тут без комментариев, данные реально сжимаются весьма не плохо.
Для файлопомойки, на которой планируется держать документы данная файловая система подходит более чем удачно.

Кстати, друзья, теперь за всеми свежими и важными записями можете следить прямо из паблика ВКонтакте.

Подпишись в один клик:

Комментариев: 1

Оставьте свой комментарий

Войти с помощью: