Задать вопрос

Можно ли ускорить запись на ZFS через кэш?

Решил собрать домашний NAS на базе TrueNAS и пытаюсь разобраться с его файловой системой. Потихоньку читаю описанная для ZFS, где чётко и подробно написано, как ARC и L2ARC позволяют ускорить чтение данных.
Но, вот незадача, из дисков у меня доступен пока только 2,5" на 2Тб с черепичной записью. Если бы была возможность использовать кэш для записи, можно было бы расслабиться спокойно размышлять о покупке нормальных дисков. Но я не смог найти инфу про ускорение записи через какой-нибудь дешёвый SSD. Так возможно ли это?
  • Вопрос задан
  • 409 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
@rPman
Zfs не умеет кешировать записи.

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

Настоятельно не рекомендую так делать, тем более из-за торрентом, вы убьете лимит записи ssd за год или меньше... Посмотрите статистику скачивания и раздач у вас, так вот на ssd может прийти во много раз больше записей чем ожидается, ведь кешировать будут и чтения.

Торренты лучше кешировать средствами клиента, например это умеет tixati, опция move on complete
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Да, TrueNAS умеет работать с многоуровневым кэшем из коробки. По умолчанию просто использует максимум оперативной памяти. Вам потребуется минимум три диска: один SSD под систему (флешку можно, но не рекомендую - все равно быстро сдохнет, даже дорогая - так смысл тратить, если можно просто любой простой SSD воткнуть), один SSD под кэш пула и третий под сам пул уже HDD. Черепичный диск не рекомендуется использовать с ZFS (в лом искать - в сети полно всего на на эту тему). Ман по настройке тут: https://www.truenas.com/docs/references/l2arc/
Ответ написан
Комментировать
@SunTechnik
Как Вы сами отметили, кэширование L2ARC позволяет ускорить операции чтения.
Для ускорения синхронных операций записи помогает настройка SLOG.

Но на последовательных операциях записи он использоваться не будет, поэтому, скорее всего, для Вас окажется бесполезным.
Ответ написан
@mezhuev
Системный администратор
Но я не смог найти инфу про ускорение записи через какой-нибудь дешёвый SSD. Так возможно ли это?

Краткий ответ: с использованием SSD невозможно, ставьте CMR-диски.

Фактическое поведение ZFS зависит от режима записи: синхронный или асинхронный.

В асинхронном режиме (режим по умолчанию или при sync=disabled) запись происходит группами транзакций (txg) с периодичностью, стремящейся к значению zfs_txg_timeout — это и есть кэш записи ZFS, доступный из коробки и единственно возможный. Значение по умолчанию 5 секунд, фактическое время зависит от множества факторов и может быть как меньше, так и больше. На свой страх и риск можно поиграться с параметрами, влияющими на данное поведение, но физику не обманешь и вы всё равно довольно быстро упрётесь в фактическую производительность дисков.

В синхронном режиме (если приложение явно запрашивает синхронную запись или при sync=always), данные аналогично помещаются в память, но запись не будут подтверждена пока не завершиться запись в ZFS Intent Log (ZIL), который является частью пула. После этого данные в рамках очередной txg записываются на диск (да, ещё раз) уже на своё постоянное место. Можно снизить нагрузку на диски добавив SLOG на базе SSD (желательно двух и в mirror, так как эти данные важны в случае сбоя). Но это не кэш записи, а способ немного увеличить производительность записи при некоторых сценариях. Ещё на синхронную запись и работу с ZIL влияет logbias.

Можно было бы подумать, что при использовании sync=always и отдельном SLOG мы заставим все данные писаться сначала на SSD и тем самым получим кэш записи, но нет. При нормальном режиме работы данные из ZIL, где бы он не находился, никогда не читаются, так как они есть в оперативной памяти. ZIL используется только для восстановления после сбоев.
Ответ написан
Комментировать
@elbrus56
Если речь идет о SLOG, то он используется не для ускорения записи на HDD, а для повышения надежности. Для этого рекомендуется ознакомиться с тем, как вообще это работает и как данные пишутся на диски в ZFS. Ускорение записи решается другими методами и зависит от рабочего процесса. Проще всего поставить быстрые диски в пул.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы