Denis Yuriev

Записки бездельника

Главная » Linux » OpenWRT » OpenWRT - Монтируем BtrFS

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. Делаем так:
    opkg update && opkg install btrfs-progs
    и форматировать уже на OpenWRT флешку можно.

    mkfs.btrfs -L data /dev/sdb

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

Войти с помощью: 
Denis Yuriev DMOZ Индекс цитирования

© 2017