У меня Proxmox диски виртуальных машин на Truenas через NFS... Да-Да! Вот такой эксперимент.... На старте диски в трунас были не самые подходящие (зато их десять и они в raidz2) и при одновременной работе более трех виртуалок часто были Checksum Errors (sudo /usr/sbin/zpool clear из консоли не вылезала). Сначала я отключил sync=off (но вы так не делайте!) Бесперебойник у меня стоял сразу и хороший - и все стало ровно (но очень рискованно), а потом я решил вернуть sync=always и включить и SLOG.
Лирика:
Вы в курсе что SLOG (он же ZIL) — это отдельный диск, куда ZFS пишет синхронные операции перед тем, как подтвердить их клиенту. Он важен при использовании iSCSI, NFS с sync=always (как у меня), и при работе с виртуалками. Без SLOG такие операции идут медленно ну и как уже сказал лезут ошибки.
SLOG — не кэш, не L2ARC. Это “журнал синхронной записи”. Он должен быть быстрым, выносливым и надёжным при потере питания.
Какие характеристики важны для SLOG-диска:
Минимальная задержка при записи. Быстрая последовательная запись не важна, важна именно скорость записи малых блоков (4K sync).
Износостойкость (TBW или DWPD). Потому что на диск будет очень много записи 24/7.
Для богатых: наличие защиты от потери питания (PLP). Если нет ИБП, это критически важно. Но ценник на такие диски не для дома (и не для каждого бизнеса)! Лучше купить супер ИБП. Про то что будет при потере питания или SLOG диска ниже*.
Тип NAND — лучше MLC, хуже TLC. QLC — не подходит.
Стабильный контроллер — без глюков и фризов на фоне нагрузки. Контроллер SandForce - плохой.
Недорогие, но подходящие диски, ибо лучше их несколько объединить в зеркальный SLOG и закрыть вопрос отказа в этой точке (отказ диска).
Так что если есть ИБП (его я думаю на трунасе не может не быть) и планируете зеркальный SLOG, то можно использовать диски без PLP.
И, кстати, плюс в том, что для SLOG не нужны диски большого объёма, потому что SLOG хранит только временные данные до записи в пул. Обычно достаточно 8–32 ГБ, даже для активных VM или iSCSI. ZFS сам ограничивает использование лог-диска (до 4 ГБ по умолчанию). Объём больше полезен только косвенно — для снижения износа. Если диск больше — это не проблема, просто не будет использоваться весь.
Вот конкретные хорошие варианты:
Intel 520, 530, 535, Pro 1500 — все они на MLC, довольно надёжные. Главное — смотреть износ и чтобы не было SF-глюков (контроллер SandForce). У меня, кстати, на SLOG стоит один SSDSC2BF180A4L и с ним есть проблема или не проблема - пока не знаю.
Intel DC S3500, S3610, S3700 — эти чуть дороже, но часто попадаются на Авито. У них есть PLP. Цена... - это вам решать. но PLP - это лучший вариант из всего что можно придумать чтобы закрыть вопрос с отказом по питанию.
Kingston DC500M — не все хорошие, но модели с буквой M — они с PLP.
Samsung SM863, PM863 — старые серверные SATA SSD с нормальной выносливостью. Бывают по цене обычных SSD (но это не точно).
Если брать совсем дешевые (не надо!):
- чтобы это был не TLC без буфера,
- и не диск типа Kingston A400 или что-то без DRAM.
Что конечно не стоит использовать: USB-диски, TLC-диски без DRAM (A400, BX500), QLC-диски вообще никакие...
Ну и помните (про Авито) не все показывают честный SMART, и есть много дисков с мутным происхождением...
В общем если по-бюджетному и есть ИБП (хороший!) надо брать б/у Intel 520 или Pro 1500, но:
- износ через smartctl выше 90%, и без критических ошибок (таких на Авито полно за смешные для таких устройств деньги)
- не экономить на охлаждении (дополнительно хорошие радиатор, вентилятор - это надо)
Нет ИБП? Тогдауходи! берем серверный диск с PLP, или вообще не используем SLOG (хуже будет, если он умрёт в момент записи*).
*)
1. Что будет, если во время работы умрёт лог-диск
Если SLOG-диск внезапно умирает (например, выдёргивается кабель, отключается порт, или он просто уходит в мир NAND), ZFS реагирует в зависимости от ситуации. Если пул был создан с одиночным SLOG-диском, он перейдёт в состояние DEGRADED, и просто перестанет использовать лог — все записи будут идти напрямую в основной пул. Данные не потеряются, но производительность синхронной записи может резко просесть. Если был зеркальный SLOG (два SSD), то всё будет как ни в чём не бывало — второй диск продолжит работу. Но!
Если в момент сбоя идёт активная синхронная запись (например, VM пишет в iSCSI) и диск не успел сбросить данные в основной массив, то они могут быть утеряны. В этом и есть смысл PLP (Power Loss Protection) — защита от такого случая.
2. Что будет, если отключат питание
Если у тебя нет UPS, и питание просто отрубается, а в системе включён sync=always (ZFS пишет данные сначала в лог-диск (SLOG), потом сбрасывает в основной массив) и если лог-диск не имеет PLP, то:
запись в лог может быть не завершена,
после перезагрузки эти данные будут считаться несуществующими,
в лучшем случае — потеря текущей транзакции,
в худшем — повреждение данных в VM или базе, которая думала, что всё уже записано.
Мой вывод
SLOG без ИБП и без PLP - так делать не надо. Тогда уж без SLOG ( но лучше слабенький SLOG, чем его полное отсутствие ))))
Что думаете по этому поводу? Ваш опыт?
Лирика:
Вы в курсе что SLOG (он же ZIL) — это отдельный диск, куда ZFS пишет синхронные операции перед тем, как подтвердить их клиенту. Он важен при использовании iSCSI, NFS с sync=always (как у меня), и при работе с виртуалками. Без SLOG такие операции идут медленно ну и как уже сказал лезут ошибки.
SLOG — не кэш, не L2ARC. Это “журнал синхронной записи”. Он должен быть быстрым, выносливым и надёжным при потере питания.
Какие характеристики важны для SLOG-диска:
Минимальная задержка при записи. Быстрая последовательная запись не важна, важна именно скорость записи малых блоков (4K sync).
Износостойкость (TBW или DWPD). Потому что на диск будет очень много записи 24/7.
Для богатых: наличие защиты от потери питания (PLP). Если нет ИБП, это критически важно. Но ценник на такие диски не для дома (и не для каждого бизнеса)! Лучше купить супер ИБП. Про то что будет при потере питания или SLOG диска ниже*.
Тип NAND — лучше MLC, хуже TLC. QLC — не подходит.
Стабильный контроллер — без глюков и фризов на фоне нагрузки. Контроллер SandForce - плохой.
Недорогие, но подходящие диски, ибо лучше их несколько объединить в зеркальный SLOG и закрыть вопрос отказа в этой точке (отказ диска).
Так что если есть ИБП (его я думаю на трунасе не может не быть) и планируете зеркальный SLOG, то можно использовать диски без PLP.
И, кстати, плюс в том, что для SLOG не нужны диски большого объёма, потому что SLOG хранит только временные данные до записи в пул. Обычно достаточно 8–32 ГБ, даже для активных VM или iSCSI. ZFS сам ограничивает использование лог-диска (до 4 ГБ по умолчанию). Объём больше полезен только косвенно — для снижения износа. Если диск больше — это не проблема, просто не будет использоваться весь.
Вот конкретные хорошие варианты:
Intel 520, 530, 535, Pro 1500 — все они на MLC, довольно надёжные. Главное — смотреть износ и чтобы не было SF-глюков (контроллер SandForce). У меня, кстати, на SLOG стоит один SSDSC2BF180A4L и с ним есть проблема или не проблема - пока не знаю.
Intel DC S3500, S3610, S3700 — эти чуть дороже, но часто попадаются на Авито. У них есть PLP. Цена... - это вам решать. но PLP - это лучший вариант из всего что можно придумать чтобы закрыть вопрос с отказом по питанию.
Kingston DC500M — не все хорошие, но модели с буквой M — они с PLP.
Samsung SM863, PM863 — старые серверные SATA SSD с нормальной выносливостью. Бывают по цене обычных SSD (но это не точно).
Если брать совсем дешевые (не надо!):
- чтобы это был не TLC без буфера,
- и не диск типа Kingston A400 или что-то без DRAM.
Что конечно не стоит использовать: USB-диски, TLC-диски без DRAM (A400, BX500), QLC-диски вообще никакие...
Ну и помните (про Авито) не все показывают честный SMART, и есть много дисков с мутным происхождением...
В общем если по-бюджетному и есть ИБП (хороший!) надо брать б/у Intel 520 или Pro 1500, но:
- износ через smartctl выше 90%, и без критических ошибок (таких на Авито полно за смешные для таких устройств деньги)
- не экономить на охлаждении (дополнительно хорошие радиатор, вентилятор - это надо)
Нет ИБП? Тогда
*)
1. Что будет, если во время работы умрёт лог-диск
Если SLOG-диск внезапно умирает (например, выдёргивается кабель, отключается порт, или он просто уходит в мир NAND), ZFS реагирует в зависимости от ситуации. Если пул был создан с одиночным SLOG-диском, он перейдёт в состояние DEGRADED, и просто перестанет использовать лог — все записи будут идти напрямую в основной пул. Данные не потеряются, но производительность синхронной записи может резко просесть. Если был зеркальный SLOG (два SSD), то всё будет как ни в чём не бывало — второй диск продолжит работу. Но!
Если в момент сбоя идёт активная синхронная запись (например, VM пишет в iSCSI) и диск не успел сбросить данные в основной массив, то они могут быть утеряны. В этом и есть смысл PLP (Power Loss Protection) — защита от такого случая.
2. Что будет, если отключат питание
Если у тебя нет UPS, и питание просто отрубается, а в системе включён sync=always (ZFS пишет данные сначала в лог-диск (SLOG), потом сбрасывает в основной массив) и если лог-диск не имеет PLP, то:
запись в лог может быть не завершена,
после перезагрузки эти данные будут считаться несуществующими,
в лучшем случае — потеря текущей транзакции,
в худшем — повреждение данных в VM или базе, которая думала, что всё уже записано.
Мой вывод
SLOG без ИБП и без PLP - так делать не надо. Тогда уж без SLOG ( но лучше слабенький SLOG, чем его полное отсутствие ))))
Что думаете по этому поводу? Ваш опыт?
Последнее редактирование: