Skip to main content

ZFS на старой (legacy) машине, ну и пара слов про ZoL вообще

К вопросу о ресурсах и ZFS. Постоянный и больной вопрос, что ZFS – это что-то чудовищно дорогое, если нужна производительность, надежность, фичи и прочее. Мне вот производительность не критична (ограничен “блинами” дисков). А фичи весьма любопытны (дармовые клоны на нормально работающей CoW-системе, шифрование и дедупликация – где ещё такое есть “из каропки”?). Для циничного эксперимента запустил zfs (уже в течении многих месяцев, пара лет как минимум) на машинке с 4Гб памяти:

[ilyxa@wombat ~]$ modinfo -F version zfs
0.8.4-1
[ilyxa@wombat ~]$ grep MemTotal /proc/meminfo
MemTotal: 3759760 kB
[ilyxa@wombat ~]$ arcstat
time read miss miss% dmis dm% pmis pm% mmis mm% arcsz c
16:20:52 405 8 1 0 0 8 100 0 0 520M 512M
[ilyxa@wombat ~]$ cat /sys/module/zfs/parameters/zfs_arc_max
536870912

Прижав уши (см. arcstat), оно работает:

[ilyxa@wombat ~]$ zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backup_ext1 928G 305G 623G - - 0% 32% 1.00x ONLINE -
backup_ext2 928G 6,42M 928G - - 0% 0% 1.00x ONLINE -
storarray 232G 34,0G 198G - - 0% 14% 1.00x ONLINE -

Объемы – смешные, но таких ext’ов много (внешние корзинки на FW800), до 8 штук одновременно, есть в raidz до 8 Тб, заполенные до 80%. Запись в прыжке до 120 Мб/c, чтения где-то там же. Не шикует, но сравнимо (вообще-то лучше, и с учётом фишек – много лучше) с ext3/4 по производительности. Плюс очень бодро в обработке пользую снэпшоты и дедуп (да-да 😉 ), компрессия выключена (почти бесполезна, хотя и дармовая, в общем-то).

Есть небольшая “магия”, которая позволяет заранее регулировать потребление памяти zfs (zfs_arc_max динамический параметр и очень “отзывчивый”) – на десктопе это конкретно выручает, снижая общий прессинг по памяти ценой того, что приходиться “ложиться” на диски при записи (фактически WB).

Это старый (> 10 лет) MacBook Pro с ArchLinux на борту, на котором крутятся терминалы, хром и клиенты rdp по мере необходимости, он же станция для слива всякого барахла), на загрузку (увы) оставил ext4, ибо сношаться каждый раз после обновления ядра ещё и с zfs у меня желания нет – хватает и nvidia-legacy.

Из-за особой убогости linux в плане доступных и читаемых метрик у zfs iostat есть парочка замечательных ключей (-l/-q), которые в том же Solaris попросту не нужны (observability, так скажем, не очень, но тут, понятно, дело вкуса).

Из реальных бонусов на ZoL, по сравнению с Solaris – возможность поставить recordsize=1024k (очень крутая штука на нужном мне типе данных, feature@large_blocks называется). В остальном – ZoL суть набор костылей (офигительного качества, и не от хорошей жизни!), чтобы заставить систему работать хотя бы похожим образом “как в оригинале” во всех смыслах. Удаление диска из страйпа/raidz, закладки – это не не очень интересно. Способа заставить работать дедупликацию асинхронно из коробки я не нашёл (применяю те же самые самодельные “костыли”, что и на Solaris).

Запасаюсь попкорном и терпением, жду прибытия RPi 4 c 8 Гб памяти на борту, будет чудовищный тест, но уже с aarch64 – проблем особых не ожидаю, если честно.