Я понимаю, что это связано с риском потери данных в случае сбоя диска.
или питание отключается. Это приемлемо, так как я сохраняю файлы на
исходная машина достаточно длинна для повторной передачи в случае краткосрочных данных
потеря
Если вы можете допустить потерю до 5 секунд записи, вы можете просто настроить ZFS на игнорировать синхронизировать запросы командой zfs set sync=disabled tank
Заставить все записи проходить через SLOG, даже очень быстрый, никогда быстрее, чем обход запросов синхронизации. SLOG — это не классический кеш с обратной записью, который поглощает записи для их перевода на более медленный уровень. Скорее, это способ обеспечить постоянство с низкой задержкой путем временного хранения синхронизируемой записи (и Только их) в промежуточной быстрой памяти. Через несколько секунд те же записи будут перенесены из основной памяти в основной пул. SLOG никогда не читается, пока не произойдет сбой (и восстановление).
Тем не менее, с одним зеркальным vdev на основе жесткого диска вы никогда не сможете насытить канал 10 Гбит/с. Для последовательной записи со скоростью ~ 1 ГБ/с вам нужно по меньшей мере 10 HDD в raidz2 или 12+ HDD в зеркале+страйпинг. Или, что еще лучше, вам нужен пул, состоящий только из твердотельных накопителей. Это еще до того, как рассматривать вещи как рекордный размер
, компрессия
, и т.д.
РЕДАКТИРОВАТЬ, чтобы уточнить задания SLOG:
Чтобы свести к минимуму задержку для синхронных записей, ZFS использовала так называемый журнал намерений ZFS (ZIL). Вкратце: каждый раз, когда поступает синхронизирующая запись, ZFS немедленно записывает их во временную область пула, называемую ZIL. Это позволяет записям немедленно возвращаться, позволяя вызывающему приложению продолжать работу. Через несколько секунд при фиксации транзакции любые записи, записанные в ZIL, отправляются в основной пул. Это делает нет означает, что ZIL читается при каждой фиксации; скорее, данные для записи поступают из основного кэша DRAM ARC. Другими словами, ZIL — это своего рода «журнал с опережением», который обеспечивает быстрое сохранение данных для записываемых данных синхронизации.
На самом деле это означает, что записи синхронизации дублируются: они записываются обе на ЗИЛ и основной пул. Введите SLOG (отдельное лог-устройство): устройство, предназначенное для синхронизация только пишет - т.е. освобождает основной пул от ZIL-трафика. Быстрый SSD SLOG важен из-за того, что жесткие диски очень медленны для синхронной записи. SLOG не является классическим кэшем с обратной записью, потому что:
- он поглощает только синхронные записи, полностью игнорируя обычные записи;
- он реплицирует только те данные, которые уже кэшировано в ARC.
Объединение двух пунктов означает, что большой SLOG в основном расточительный, потому что для него требуется только 3-кратный максимальный размер транзакции ZFS. Другими словами, SLOG объемом 2-4 ГБ достаточно для большинства случаев, а больший SLOG полезен только в определенных конфигурациях.
Такой SLOG является ключом к обеспечению более низкой задержки для случайных записей синхронизации, но, хотя он может поглощать очень небольшие всплески последовательных записей синхронизации, это не его основная функция. Другими словами, вы можете видеть ZIL/SLOG как постоянный фрагмент ARC. Следствием этого является то, что вы не можете рассчитывать на запись десятков ГБ и сокрытие низкой скорости основного пула через SLOG, потому что это означает, что у вас уже есть десятки ГБ грязных данных. внутри вашего ARC на основе оперативной памяти.
Параметр синхронизация = отключена
указать ZFS угрожать всем операциям записи, даже синхронным, как при обычной асинхронной записи. Это позволит обойти любые данные ZIL/SLOG и если вы можете принять окно потери данных 5 с, это самая быстрая настройка, которую вы когда-либо могли бы достичь - даже по сравнению с очень быстрым SLOG, таким как Optane или RAMdrive. Хорошая вещь о синхронизация = отключена
заключается в том, что он не отключает синхронную запись для собственных метаданных ZFS и, таким образом, не подвергает риску вашу файловую систему. Это не означает, что вы можете использовать его легкомысленно: как неоднократно говорилось, вы должны быть уверены, что понимаете его последствия (вы можете потерять последние секунды несинхронизированных данных в случае сбоя/отключения питания).
С другой стороны, классический кэш обратной записи на основе SSD, как lvmcache
и bcache
могут (более или менее) эффективно использовать сотни ГБ кэш-памяти SSD для маскировки задержки/пропускной способности основного пула, особенно потому, что они находятся полноценные кэши с обратной записью, которым не нужно, чтобы их данные находились внутри основной памяти (наоборот, основная память смывается через эти кэши SSD).
Причина использования ZFS заключалась в том, что (большая) основная системная память — это ваш реальный кеш чтения/записи, а SLOG — это средство для уменьшения задержки для случайных синхронных записей.