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

    @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 используется только для восстановления после сбоев.
    Ответ написан
    Комментировать
  • Можно ли ускорить запись на ZFS через кэш?

    @rPman
    Zfs не умеет кешировать записи.

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

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

    Торренты лучше кешировать средствами клиента, например это умеет tixati, опция move on complete
    Ответ написан
    1 комментарий
  • Можно ли ускорить запись на ZFS через кэш?

    @SunTechnik
    Как Вы сами отметили, кэширование L2ARC позволяет ускорить операции чтения.
    Для ускорения синхронных операций записи помогает настройка SLOG.

    Но на последовательных операциях записи он использоваться не будет, поэтому, скорее всего, для Вас окажется бесполезным.
    Ответ написан
    4 комментария
  • Можно ли ускорить запись на ZFS через кэш?

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