Про ZFS и L2ARC
У одного моего друга есть NAS на (7+2)-6Tb. Семь дисков в RAIDZ2 (том под данные), два диска в зеркале (том под бэкапы). И был там L2ARC-кэш на полтерабайта, Patriot Hellfire. Поскольку полтерабайта это мало (см ниже), этот кэш обслуживал только активные данные для работы, но не том с бэкапами, а для тома на котором живут торренты было secondarycache=metadata. И, в общем, было видно, что полтерабайта - мало.
Посмотрел один мой друг в прайслисты, посмотрел в обзор терабайтных SSD на 3Dnews и углядел там близнецов Patriot VPN100/Silicon Power 34A80. Исходя из следующих соображений:
- скорость маленькая (для NVMe), но по 10Gbit особо ничего и не надо большого.
- Ресурс - из заявленных производителем - самый большой. 1.6Tb у патриота (и ничего у Silicon Power, но в обзоре утверждается, что они полностью идентичны аппаратно, разница только в радиаторе).
- Ну и цена: ~10круб за терабайт, а гарантированно хороший Samsung 970EVO Plus - 16к.
Ну вот соответственно, купил терабайтник, поставил вторым (через low-profile PCIe->NVME переходник), всего получилось "1.5Tb" L2ARC, которые я поделил так: половинку SiliconPower на бэкапный том; вторую половинку и весь старый Patriot - на новый. Не могу объяснить почему так, наверное для понижения надежности (для L2ARC пофиг должно быть).
Прошло чуть больше двух недель, докладываю:
1. Полтора терабайта - оказалось чуть больше, чем нужно, ну вот не разу не видел полностью заполненного, выглядит оно как-то так:
[lexa@home-gw14 ~]$ zpool iostat -v
capacity operations bandwidth
pool alloc free read write read write
--------------------- ----- ----- ----- ----- ----- -----
zbackup 2.66T 2.78T 1 9 1.28M 2.14M
mirror 2.66T 2.78T 1 9 1.28M 2.14M
[диски убрал для компактности]
cache - - - - - -
gpt/cache-silicon-1 396G 57.6G 5 2 5.28M 2.48M
--------------------- ----- ----- ----- ----- ----- -----
zdata 22.6T 15.4T 2 5 2.31M 2.81M
raidz2 22.6T 15.4T 2 5 2.31M 2.81M
[диски убрал для компактности]
cache - - - - - -
gpt/cache-patriot-0 377G 70.2G 2 1 1.95M 1.61M
gpt/cache-silicon-0 416G 83.7G 2 1 2.01M 1.66M
--------------------- ----- ----- ----- ----- ----- -----
Уже по iostat видно, что польза есть, особенно для бэкапов (которые один раз пишутся и минимум два раза читаются, один раз при верификации, один раз при репликации, а для инкрементных бэкапов - понятно что и больше). С данными - польза поменьше (но я проводил работы с несколько-терабайтными данными на предмет их верификации).
По статистике выходит так:
[lexa@home-gw14 ~]$ zfs-stats -E -L
[skip]
ARC Efficiency: 355.42m
Cache Hit Ratio: 92.05% 327.17m
Cache Miss Ratio: 7.95% 28.25m
Actual Hit Ratio: 91.46% 325.05m
[skip]
L2 ARC Breakdown: 28.25m
Hit Ratio: 51.34% 14.50m
Miss Ratio: 48.66% 13.74m
Feeds: 1.38m
[skip]
Только 8% запросов идут не из ARC, но раньше Hit ratio у L2ARC было процентов 20, а теперь 50. То есть до дисков доходит 4% запросов. Это большая разница с 8, собственно в два раза, стало заметно тише.
Поскольку текущий бэкап попадает в ARC/L2ARC с гарантией, стала гораздо быстрее верификация, раньше оно колебалось в районе 2Gbit/s, сейчас "выше трех, доходит до 5" (зависит от вида бэкапа, инкрементальный верифицируется помедленнее т.к. Acronis там больше думает).
Ну и про запиливание SSD.
Вот Patriot Hellfire, который работает L2ARC-ом с 19 января 2017 года, т.е без малого два года (будем считать что полтора):
# smartctl -a -H /dev/nvme1
[skip]
Data Units Written: 142,071,356 [72.7 TB]
Получается - примерно терабайт в неделю. При заявленном ресурсе 400 т.е. выходит ~8 лет.
А вот свежепоставленный SiliconPower, аптайм - 16 дней, будем считать что две недели:
# smartctl -a -H /dev/nvme0
[skip]
Data Units Written: 12,268,874 [6.28 TB]
Получается 3Tb в неделю, заявленный ресурс 1600, 500 недель - 10 лет.
Понятный сайд-эффект от снижения вдвое нагрузки на диски - снижение их температуры, было "слегка за 40", стало "чуть ниже 40".
В-общем, если SSD-шки отработают свой заявленный ресурс, то и вообще отлично (скорее всего я их раньше заменю в процессе перехода на all-flash NAS, чую что недолго осталось уже). Если запилятся раньше - потери данных я не жду, это ж L2ARC (впрочем у меня все реплицировано), но будет урок
Короче, я доволен, а при нынешней цене за флеш в $150 за терабайт - грех его не запилить.
Comments
Хорошо тебе, у меня вот вышел
Хорошо тебе, у меня вот вышел хитрейт в 5% :-)
А нет ли датасетов для
А нет ли датасетов для которых выключен L2ARC? Они же дают понятный вклад в показ статистики....
Ну или я думаю что понятный, это тоже возможно.
Ну и да, конечно же сделано:
Ну и да, конечно же сделано:
vfs.zfs.l2arc_norw=0
vfs.zfs.l2arc_noprefetch=0
vfs.zfs.l2arc_write_max=МНОГО
vfs.zfs.l2arc_write_boost=ТОЖЕ_МНОГО
Ох, я об этом не подумал. Я
Ох, я об этом не подумал. Я ставил только на торренты, а это отдельный пул от стораджа-для-меня.
Ну и 250GB диск (samsung!) запилися вусмерть за год.
А ты поставил в PCIe x1? Я
А ты поставил в PCIe x1? Я тут сообразил, что другого у меня, например, и не осталось.
В x4. Заодно узнал, что
В x4. Заодно узнал, что родное гнездо на этой мамке - x2.
У меня просто 16 + 8 + 1 + 1
У меня просто 16 + 8 + 1 + 1 на матери, и если воткнуть в 16 и в 8 то будет по сути 8 + 8, и там уже HBA и сеть… Эх.
Я хрен его знаю, работает оно
Я хрен его знаю, работает оно в x1 или нет. Вариантов проверить не было, слот на мамке один и он x4
Кстати, мой китайский MiniPC
Кстати, мой китайский MiniPC-рутер стал виснуть на большой нагрузке (пришлось выкючить торренты временно — и всё нормализовалось). И убил батарейку CMOS'а. И поджарил термоклей которой она (батарейка) была закрепелна на плате (он покоричневел!).
Я подозреваю, что померла термопаста между платой и корпусом-радиатором и оно перестало нормально охлаждатьс, буду завтра разбирать.
Это я просто предупреждаю, что с ними так бывает, ты же себе очень похожий купил.
А сколько ему лет было?
А сколько ему лет было?
У моего пока вот так:
~# sysctl -a | grep temper
hw.acpi.thermal.tz1.temperature: 29,9C
hw.acpi.thermal.tz0.temperature: 27,9C
dev.cpu.3.temperature: 46,0C
dev.cpu.2.temperature: 46,0C
dev.cpu.1.temperature: 48,0C
dev.cpu.0.temperature: 48,0C
Год ровно.
Год ровно.
У меня вот так когда торрент-бокс (торренты не на рутере, конечно, но через него) остановлен:
hw.acpi.thermal.tz0.temperature: 55.1C
dev.cpu.3.temperature: 43.0C
dev.cpu.2.temperature: 49.0C
dev.cpu.1.temperature: 45.0C
dev.cpu.0.temperature: 48.0C
А раньше я tz не мониторил, только dev.cpu — и там особо ничего не менялось со временем.
В общем, завтра разберу, откручу плату, расскажу что нашёл.
оу. что называется, _
оу. что называется, __подписался на комменты__ ;)
Разобрал, там к корпусу
Разобрал, там к корпусу припаяна (?) алюминиевая пластина, окружённая 3-мя дырками под винты. К ней этими тремя винтами прижимается открытый кристалл процессора. В качестве термопрокладки была какая-то розовая жвачка, снявшаяся одним куском, вот прямо как жвачка. Намазал MX2, перепаял батарейку CMOS'а, закрутил, запустил. Вот под торрентами:
hw.acpi.thermal.tz0.temperature: 43.1C
dev.cpu.0.temperature: 46.0C
dev.cpu.1.temperature: 43.0C
dev.cpu.2.temperature: 46.0C
dev.cpu.3.temperature: 49.0C
Предыдущий вывод был БЕЗ торрентов. Видно, что нагрев датчика-не-в-процессоре (hw.acpi.thermal.tz0.temperature) нормализовался.
Мда, стоит заглянуть не
Мда, стоит заглянуть не дожидаясь перитонита
Ну вот после того как я сотни
Ну вот после того как я сотни правил ipfw переписал на tables, у меня нагрузка CPU упала процентов до 3, а другой нагрузки на этом боксе *обычно* нет (ну покомпилировать libraw, но это секунды)
Т.е. там что 0 трафика, что 200 мегабит (больше у меня нету) - без разницы ему.
У меня тоже на таблицах,
У меня тоже на таблицах, правил штук 50 всего (но у меня stateful и nat), нагрузка типичная 50% при торрентах. Вопрос не в мегабитах а в числе потоков. Когда потоков 10K+ ему тяжело nat'ить :)
Качать в один поток 100 мегабит его не нагружает. Раздавать 50 мегабит в 10K потоков — нагружает.
А ты чем натишь?
А ты чем натишь?
А то у меня почему-то файрволл на ipfw, а nat на ipf, ну так получилось ДАВНО и я не меняю.
Нагрузки от nat от торрентов не вижу, но потоки я не считал.
ipfw nat (но в ядре, не natd)
ipfw nat (но в ядре, не natd), да, я знаю, что он медленней чем pf, но включить ipf в мою архитектуру файрволла невозможно — это у меня не первый и не последний шаг в файрволле, а в середине.